news 2026/7/27 19:18:29

DouPHPCms靶场代码审计之代码执行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DouPHPCms靶场代码审计之代码执行

目录

漏洞复现前的准备工作:

一、代码执行漏洞简介

二、PHP双引号的高级用法

寻找存在代码执行漏洞的点

一、寻找可利用的unlink函数

第6个文件的第56行:

去网站看看对应功能点:

接下来,我们在网站删除Logo的时候抓包看看:

二、利用代码执行漏洞获取权限


漏洞复现前的准备工作:

一、代码执行漏洞简介


RCE(remote command/code execute)命令执行或者代码执行。RCE的原理是用户输入的数据被当做代码执行。存在RCE漏洞的系统,可以让攻击者直接向后台服务器远程注入操作系统命令或者恶意的后端代码,从而控制服务器。现在因为RCE这个词的滥用,RCE的范围比较广,只要渗透的最终情况可以实现执行命令或者是代码都属于RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE。

二、PHP双引号的高级用法

在PHP语言中,单引号和双引号都可以表示一个字符串,但是对于双引号来说,可能会对引号内的内容进行二次解释,这就可能会出现安全问题。
在PHP5.5及以上版本存在着双引号的二次解析,按照PHP官方的解释,这是属于字符串的高级用法。双引号的二次解析能够将双引号内的字符串当成代码来执行,这本身并不是漏洞,但如果被加以利用,则可能产生一些意外的结果。
双引号二次解析的要点:
1、字符串得在双引号内
2、$和{} 得在一起
3、PHP版本要5.5.38以上


寻找存在代码执行漏洞的点

安装中出现这个页面:

来到data目录下删除install.lock,再登录看看:

重新安装:

回到data目录下,先看看配置文件里写的什么:

发现数据库的账号密码都是双引号括起来的,有没有可能利用双引号的二次解析在这里进行一些“特殊操作”呢?

写入测试代码试试看:

发现...成功写入phpinfo()

说明config.php存在双引号的二次解析,通过对其加以利用,则有可能实现远程控制服务器。

因此我们接下来的操作可以围绕config.php文件来进行。如果能够利用成功,则表明这个文件存在代码执行漏洞。

一、寻找可利用的unlink函数

就像刚才的步骤,只要来到安装页面,就能进行RCE。

而,cms安装页面的锁定状态是由install.lock文件控制的,因此我们假如能把目标网站上的install.lock文件删掉,就有可能访问到安装页面。那么问题就变成了:如何删除目标网站的install.lock文件。

用seay源代码审计系统全局搜索含有unlink函数的文件,结果如下:

从上往下,一个文件一个文件快速过一遍,找到可以操作的文件

第一个文件,点进去看看:

发现路径拼接的是常量,写死了,排除!

第二个文件,点进去看看:

发现unlink里面接了一个可传值参数,看看这个参数是否可控?

发现这个参数交给了is_backup_file处理,全局定位一下,看看怎么处理的?

也就是说,传进来的$filename必须包含.sql后缀,而我们要传的显然不是.sql后缀代码,Pass

第三个文件,点进去看看:

观察一下,发现也是参数必须拼接常量.sql后缀,Pass

扫了前面之后,直接来到第6个文件处,有可能,点进去看看:

发现Unlink里面跟的是一个参数$mobile_logo,往上找找看,看看相关设定:

第6个文件的第56行:

这几行代码的逻辑链路基本思路如图所示:

去网站看看对应功能点:

提交logo到什么地址去了?

回到前端看看,获取Logo传入的位置的URL:

http://www.rce.com/m/theme/default/images/logo.jpg

给源码打个断点die();看看点击删除后返回的绝对路径是什么:

而我们要删除的地址是:

....../douphp/data/install.lock (等于需要往前回退四次 ../../../../data/install.lock)

接下来,我们在网站删除Logo的时候抓包看看:

发现mobile_logo参数下面没有传内容(因为上传的是一个空的jpg图片)

在包里添上install.lock的路径为mobile_logo的值:

放行,然后再点击删除Logo:会返回安装页面!表明删除install.lock文件操作成功

二、利用代码执行漏洞获取权限

写入shell:已知配置文件是config.php,等于这句话是写进了config.php文件中

路径为:data/config.php

显示安装失败,实际已经写入了:

接着访问,成功连接!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 12:28:27

keil编译报错

1. keil安装不安装v5编译器,但又有一些项目需要2. 在官网下载legacy compiler需要注册账号3.下载windows上面的是一个安装包,它喜欢安装到program files(x86)里面,会导致编译的时候即使项目设置里面设置好了编译器的位置,编译器也…

作者头像 李华
网站建设 2026/7/26 4:04:42

深度学习毕设项目推荐-基于python-CNN深度学习对苹果是否腐烂识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/27 4:27:46

MySQL连表查询讲解:从基础到实战

引言 在数据库操作中,连表查询(JOIN)是最核心且强大的功能之一。它允许我们从多个表中关联数据,构建出复杂而有意义的查询结果。无论是开发Web应用、数据分析还是系统设计,掌握连表查询都是MySQL开发者必备的技能。本文…

作者头像 李华