解决DEDECMS历史难题–找后台目录

利用限制

  • 仅针对windows系统

进入正题

首先看核心文件common.inc.php 大概148行左右

uploadsafe.inc.php

注意$$_key这一句,变量$key取自于$_FILE,由于$_FILE可控自然$key也可控,此处理论上是可以覆盖任意变量,但是前面有个正则判断不能出现cfg_|GLOBALS。(但是应该还可以覆盖其他变量此处感觉还可以深挖)

本人出发点是找个可以利用<<通配符猜解后台目录,所以只要$$_key参数可控就可以达到目的。

但在这之前有个if(!defined('DEDEADMIN'))的判断,这个很好绕过设置tmp_name为0或者1.jpg含. 就可以绕过。

最后关键的一点就是要让文件存在还和不存在返回不同的内容就要控制type参数了。

当目录文件存在的时候 返回正常页面。当不存在的时候返回:Upload filetype not allow !

举个例子

文字不好表达,便于理解。

构造poc

Common.inc.php 是被全局包含的文件,只要文件php文件包含了Common.inc.php都可以进行测试,以tags.php文件为例

当目录存在点时候: 图1

当目录不存在点时候: 图2

EXP:

感谢

感谢给我提供这个思路的朋友

参考文章

https://www.t00ls.net/viewthread.php?tid=27472

http://onsec.ru/onsec.whitepaper-02.eng.pdf

https://www.t00ls.net/viewthread.php?tid=25843

 

作者:phpice