上一篇 / 下一篇 2011-08-25 18:49:11 / 个人分类:安全测试
测试的XXX的版本中,扫描器扫描出一个中威胁的XSS漏洞,对BUG定位和解决消耗了一定的时间,在咨询过安全测试组的同学后,终于弄清楚了解决的方法,现在根据结果倒推回来,有利于指导测试和帮助开同学定位类似的问题,所以就小分享一下。
在分析和解决这个XSS漏洞中会用到htmlspecialchars()函数,先简单介绍一下,详细可参考:http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
定义:把一些预定义的字符转换为HTML实体,预定义的字符有:
&(和号)成为&
"(双引号)成为"
'(单引号)成为'
<(小于)成为<
>(大于)成为>
语法:htmlspecialchars(string,quotestyle,character-set)
参数:
1、定位问题:
1)、和开发一起定位,检查php代码,发现已经使用了htmlspecialchars()函数对传递过来的参数进行了过滤:htmlspecialchars()函数
2)、但是扫描器还是扫出安全漏洞的结果,用脚本替换参数,重新发送请求:http://shop.qq.com/misc/join/download_file.php?pic_id=<u>a</u>'"&t=0.517103584544131,抓包查看返回结果,没有对单引号进行转义。
2、解决问题,htmlspecialchars()函数的第二个参数缺失时是默认不对单引号进行转义,解决方法是加上NT_QUOTES。
再次发送同样的请求http://shop.qq.com/misc/join/download_file.php?pic_id=<u>a</u>'"&t=0.517103584544131,抓包查看已经对单引号做了转义处理。