文件包含导致的任意代码执行

admin 2025-12-25 02:38:06 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了MiniCMS在PHP5.2环境下的文件包含漏洞。因无上传点,作者利用可控content字段将恶意代码写入dat文件,再利用post_state参数结合PHP5.2的%00截断特性包含该文件,从而实现任意代码执行。文章详细复现了漏洞利用路径与验证结果。 综合评分: 85 文章分类: 漏洞分析,WEB安全,代码审计


cover_image

文件包含导致的任意代码执行

原创

匆匆过客

天启攻防实验室

2025年12月24日 19:16 广东

php版本:5.2.17

系统:minicms

首先来到疑似文件包含漏洞的代码,要是 $post_state可以由前端控制,可以目录穿越包含其它php文件,但是由于系统没有任何上传的功能点,所以包含图片马实现RCE不通,那我们可以换个思路,看看有没有什么内容可以写入某个文件可以被 require $index_file; 从而实现文件包含的RCE。

首先我们确认 $post_state 确实可以被前端控制

接着看看有没有可以被写入的文件,找到一个可以写入序列化数据,这里写入的内容包含了content字段,那么我们现在确认一点,即:content字段是否可控?

很明显 content字段可以前端传入,下面这句话核心逻辑是:如果 PHP 开启了 magic_quotes_gpc,就把系统自动加的反斜杠去掉,也就是说content字段做了很少的防御,就被写入了 $file_path 对应的文件

那么现在看一下 $file_path ,也就是说content字段被写入了这个路径的 '.$post_id.'.dat 文件

那么我们现在的思路清晰了,首先将content字段的恶意代码写入'.$post_id.'.dat 文件 ,然后利用$post_state字段进行路径传入,由于$post_state字段拼接后面有 .php后缀,所以我们可以降低php版本,利用%00截断,进而实现包含'.$post_id.'.dat 文件

从而导致文件包含RCE。

验证:

回头看 1je4tk.dat 内容,content确实被写入了 1je4tk.dat 里面

加入知识星球,看更多实战


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:天启攻防实验室 匆匆过客《文件包含导致的任意代码执行》

评论:0   参与:  2