在bluecms6.1版本的ad_js.php处有xss漏洞
a d i d = ! e m p t y ( ad_id = !empty( adid=!empty(_GET[‘ad_id’]) ? trim( G E T [ ′ a d i d ′ ] ) : ′ ′ ; i f ( e m p t y ( _GET['ad_id']) : ''; if(empty( GET[′adid′]):′′;if(empty(ad_id))
{
echo ‘Error!’;
exit();
}$ad = d b − > g e t o n e ( " S E L E C T ∗ F R O M " . t a b l e ( ′ a d ′ ) . " W H E R E a d i d = " . db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =". db−>getone("SELECT∗FROM".table(′ad′)."WHEREadid=".ad_id);
因为$ad_id没有经过很严密的过滤,这里可能存在注入和xss漏洞,注入漏洞当然是存在的,在之前的一篇写过。这里就测试是否存在xss
**这里传入的变量都经过创建的deep_addslashes函数里的addslashes()函数进行字符特殊字符转义。全部的’ 和"都进行/转义 **
搭建好bluecms网站,在ad_js.php页面
以get方式赋一个正常的值1给变量$ad_id
页面无空白:
赋值一个不正常的值,出现下面结果,在前端的body主体内出现error。。。一段。
如果我们赋$ad_id变量的值为一段xss利用代码,如果原样保存下来,那么在body主体内就可以执行这段js代码了,也就出现了xss漏洞
赋$ad_id变量的值为1’1<img src=1 alert (‘du’)>
因为这里的单引号被转义了,所以没有弹窗,但在body主体中确实已生成我们赋值的js代码
修改为1’1<img src=1 alert (/du/)>,发现成功弹窗
至此,这里存在xss漏洞