DouPHP_v1.5漏洞分析



No.1

简介


DouPHP是一款免费开源的轻量级企业建站系统,基于PHP+MYSQL架构,包含多个模块,后台简约明了,从使用者而不是开发者的角度出发设计后台功能布局,可以轻松进行日常内容编辑工作。可以使用它快速搭建一个中小企业官网。基于现有框架通过模块扩展还可实现个人博客、网上商城、投票系统、企业在线办公等。


No.2

漏洞概述


这里需要简单提一下双引号的高级用法,以便后面代码的理解。  

在PHP5.5及以上版本存在着双引号的二次解析,按照PHP官方的解释,这是属于字符串的高级用法。双引号的二次解析能够将双引号内的字符串当成代码来执行,这本身并不是漏洞,但如果被加以利用,则可能产生一些意外的结果。  

双引号二次解析的要点:  

1、字符串得在双引号内  

2、$和{} 得在一起  

3、双引号内的代码是正确的,无语法错误  

4、PHP版本要5.5.38以上


No.3

影响版本


v1.5


No.4

环境搭建

从网上下载并安装好DouPHP_v1.5_Release_20190711cms。


No.5

漏洞分析


已知漏洞点在/admin/mobile.php 第74行 unlink函数

DouPHP_v1.5漏洞分析


此处可任意控制要删除的文件的后缀

从代码中可以看出,想利用该函数,核心是利用好最后这个变量$mobile_logo。  该变量最近的变化是在这行代码中:

$mobile_logo = $dou->get_one(“SELECT value FROM ” .
$dou->table(‘config’) . ” WHERE name = ‘mobile_logo'”);

注:table()函数是给表名加个前缀。  这行代码的意思是,从数据库中获取字段mobile_logo的值。  这里我们直接登陆cms去访问目标文件看看是干什么的。注意到mobile.php这个文件是在admin目录下的,所以很可能是需要先登陆才能访问这个文件。登陆到后台,访问`/admin,得到如下页面:


DouPHP_v1.5漏洞分析


admin
admin123

进入后台查看服务器以及CMS版本信息


DouPHP_v1.5漏洞分析


接下来访问漏洞点/admin/mobile.php


DouPHP_v1.5漏洞分析


尝试上传一张图片,随后出现了删除的功能:


DouPHP_v1.5漏洞分析


可见刚才看的删除图片logo的代码就是这里的删除功能。我们回过头去,看这个删除操作的路径:


DouPHP_v1.5漏洞分析


源代码中的路径很复杂,我们在本地先测试一下看看到底路径是什么,把unlink()函数改成die()函数,然后在网站后台中上传并删除一张图片,见到如下页面:


DouPHP_v1.5漏洞分析


DouPHP_v1.5漏洞分析


http://192.168.99.130:8080/admin/mobile.php?rec=system&act=clear_logo


DouPHP_v1.5漏洞分析


这样我们得知删除命令的路径是:

/var/www/html/m/theme/default/images/logo.jpg

同时这也证明,代码可以执行到这一步。  (这里简单提一下,这里的文件上传入口源代码中没有检测上传的文件后缀和内容,可能存在文件上传漏洞,有兴趣的可以去测试一下)  我们需要删除的文件在data/install.lock,所以需要一级一级跳到上级文件目录。在php中,上一级目录是用…/来表示,如果想要访问上一级目录,可以使用变量接收,就是:

$a=”../”

这样$a表示的就是上一级目录。所以我们需要设法让源代码中的mobile_logo的值为:

../../../../data/install.lock

我们再看源码分析


DouPHP_v1.5漏洞分析


这里代码的意思相当于数据包要修改

1、请求要POST
2、`$name`的值要等于`’mobile_logo’`

Content-Disposition: form-data; name=”mobile_logo”
Content-Type: image/jpeg

../../../../data/install.lock


DouPHP_v1.5漏洞分析


然后再删除LOGO


DouPHP_v1.5漏洞分析


这里可以看到成功写入了


DouPHP_v1.5漏洞分析


把修改回来unlink


DouPHP_v1.5漏洞分析


刷新一下


DouPHP_v1.5漏洞分析


getshell漏洞点来了


DouPHP_v1.5漏洞分析


开始使用双引号解析漏洞安装目录下的data文件夹出现了一个config.php文件,点开以后发现数据库的账号密码都是双引号括起来的,那么这时我们思考,有没有可能利用双引号的二次解析在这里进行一些“特殊的操作呢?”


DouPHP_v1.5漏洞分析


在安装页面的库名这里输入:

${file_put_contents($_GET[1],$_GET[2])}


DouPHP_v1.5漏洞分析
DouPHP_v1.5漏洞分析


报错无所谓反正写入进去了

/data/config.php?1=666.php&2=


DouPHP_v1.5漏洞分析


没报错 下一步

/data/666.php?8=phpinfo();


DouPHP_v1.5漏洞分析


使用webshell管理工具连接666.php文件:


DouPHP_v1.5漏洞分析


No.6

DOHP代码执行漏洞总结及防御


DOUPHP代码执行漏洞的利用过程为:弱密码进入网站后台->传参->利用任意文件删除漏洞删除install.lock文件->进入网站安装页面->注入恶意的指令->访问

config.php文件->从URL进行传参->写木马文件->测试木马文件->getshell。  

漏洞的触发链较长,一环扣一环,从防御的角度,只要阻断其中的任何一环,该漏洞将很难被利用。  首先,代码执行需要有后台管理员的权限,因此对于管理员账号,应避免使用弱密码。同时,对于用户的传参内容使用正则进行过滤,避免传入恶意的内容,在服务器上也需要随时检测用户上传的文件,一旦检测到恶意文件及时删除。此外,对cms的文件夹、文件名等进行修改,也能其到一定的防护作用。


No.7

网安沟通交流群


DouPHP_v1.5漏洞分析

扫码加客服小姐姐拉群



原文始发于微信公众号(隐雾安全):DouPHP_v1.5漏洞分析

版权声明:admin 发表于 2024年5月21日 上午9:01。
转载请注明:DouPHP_v1.5漏洞分析 | CTF导航

相关文章