CVE中文申请站

CVE-2018-20128:UsualToolCMS v8.0后台任意文件删除

一、漏洞摘要

漏洞名称: UsualToolCMS v8.0后台任意文件删除
上报日期: 2018-12-08
漏洞发现者: Krypton
产品首页: https://cms.usualtool.com/
软件链接: https://cms.usualtool.com/
版本: 8.0
CVE编号: CVE-2018-20128


二、漏洞概述

漏洞位于cmsadmin\a_sqlback.php的第74-88行,咱们贴上代码来看。
2018-12-06.12.18.29-image.png
74行的if用来判断$_POST['t']的值是不是为del,如果不是,则进入82-83行的假区间,echo 一句无法删除。如果是del则进入真区间

进入真区间后,75行,将$_POST()函数接收到的$backname赋值给$backname

76行用count()函数将$backname的个数做了统计赋值给$backnamenum,

随后进入for循环将$backnamenum进行遍历并且获取他的每个文件名。然后赋值给$sqlback,之后进入79行的if判断,通过自己的一个函数去检查$sqlback,我们跟进这个函数

class/UsualToolCMS_INC.php138-142行是他的contain函数执行的操作。
2018-12-06.12.29.29-image.png
可以看到他是做的一个字符串分割且判断是否数量>1,满足则return true 否则return else ,

然后继续查看一下unlinkFile的函数,看一下他的代码是做了什么事情
2018-12-06.12.34.15-image.png
判断文件是否存在 ,存在则删除,且return true 否则return false

然后cmsadmin\a_sqlback.php的代码就全部跑完了,在审查的过程中,并没有对其文件名和目录做出限制,于是可以构造成一个任意文件删除漏洞

三、利用过程

来到数据库备份的地方
2018-12-06.12.39.44-image.png
然后burp抓包,得到数据包如下
2018-12-06.12.41.01-image.png
然后我们在本机网站存放的磁盘下新建一个文件1.txt ,将数据包的backname参数改为../../../../../1.txt 并且发包看结果。

发包前:
2018-12-06.12.43.34-image.png
发包后:
burp的回显:
2018-12-06.12.44.46-image.png
电脑的效果:
2018-12-06.12.45.10-image.png

OK,可以看到 ,成功的删除了我们的1.txt文件,于是乎,这个任意文件删除是ok的

四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/90/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20128
exploit-db:发布中