PHP-CMS代码审计(2)

此次审计DSmall多商户B2B2C开源商城源码,2020年1月3日更新,版本号V5.0.6。下载地址http://down.chinaz.com/soft/38901.htm,下载量还挺大。

这个cms也是tp5.0框架。

1、打开cms,先是提示安装。跳转到install模块。注意到:

//配置数据库
            file_put_contents(PATH_ROOT . ‘/../application/database.php‘, $config);

F4追踪下$config。没有过滤,在数据库前缀处输入payload,发现只要带有特殊符号,就无法安装成功,因为必须要绕过insert语句:

$insert_error = mysqli_query($link,"INSERT INTO {$db[‘prefix‘]}admin (admin_name, admin_password, admin_is_super, admin_gid) 
            VALUES(‘{$user[‘username‘]}‘, ‘{$password}‘, ‘1‘, ‘0‘)");
            if(!$insert_error){
                die(‘<script type="text/javascript">alert("管理员账户注册失败.");history.back();</script>‘);
            }

一直无法绕过。

2、全局搜索=‘{$ 查找注入

PHP-CMS代码审计(2)

 

 

全局搜索正则\bdb\(.*?\).*?\‘.*?=\‘.*?\.  继续查找注入

PHP-CMS代码审计(2)

 

 跟踪变量看了半天,没发现注入。

3、全局搜索 unlink(  ,发现一处任意文件删除漏洞

www\application\home\controller\MemberAuth.php  93行

PHP-CMS代码审计(2)

 

 

 

 file_name参数可以直接传 ,但是被带入了member_info数组 ,我们先看看这个数组有哪些 信息,  92行下断点,直接请求index.php/home/member_auth/image_drop/file_name/1.html

 

PHP-CMS代码审计(2)

 

 这个数组就是会员的基本信息,可以想一下是否能把nickname参数改为文件名 ,然后删除它呢,

public目录下有个robots.txt,我们就拿他来做试验。

PHP-CMS代码审计(2)

 

 

保存成功,然后我们提交: /index.php/home/member_auth/image_drop/file_name/member_nickname.html

再次打到断点,

PHP-CMS代码审计(2)

 

F8向后执行两步,发现文件成功被删除

PHP-CMS代码审计(2)

 

4、总结:

文件删除漏洞,全局搜索 unlink(

tp框架下注入还可以搜索 sql =  、  <  、 > 、 \bdb\(.*?\).*?\‘.*?=\‘.*?\.  ,可以先看看开发着是怎么使用sql查询语句的,再利用正则表达式定位快速找拼接语句

该漏洞已通知厂商修改,并已完成修复。

PHP-CMS代码审计(2)

上一篇:2020-05-01 MySQL表物理存放位置


下一篇:jsp-JSTL表达式