惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
aimingoo的专栏
aimingoo的专栏
B
Blog
小众软件
小众软件
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
L
LangChain Blog
WordPress大学
WordPress大学
罗磊的独立博客
GbyAI
GbyAI
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
美团技术团队
F
Fortinet All Blogs
Hugging Face - Blog
Hugging Face - Blog
The GitHub Blog
The GitHub Blog

博客园 - %5C

MSSQL 2005 Backup log shell 新型下载者 基于时间差的SQL盲注技巧 跨站腳本攻擊(XSS):過濾不完的惡夢,又有新攻擊語法! 提权用的一个技巧 - %5C - 博客园 Microsoft SQL Server sqlvdir.dll ActiveX控件缓冲区溢出漏洞 关于php漏洞 QQ邮箱跨站漏洞0day - %5C - 博客园 渗透测试(Penetration Testing) 跨库也能差异备份 Phpcms 2007 远程文件包含漏洞 入侵的艺术(无线渗透) dedecms >=5 版本漏洞及使用方法 各版本ewebeditor快速拿webshell 某信息港入侵手记 MS Office Snapshot Viewer ActiveX Exploit (可执行版) Oracle web环境注射技术 SuperCMS 上传漏洞! Sql2005注射辅助脚本
dedecms tag.php注入漏洞分析与利用工具
%5C · 2008-08-25 · via 博客园 - %5C

author:toby57 [www.toby57.cn]
date:2008-08-18

Dedecms算是使用比较广泛的PHP整站系统了,在被使用的同时系统的安全性也被人们关注。在以前dedecms也爆过不少漏洞,官方都很快出了补丁,前几天80sec公布了注射漏洞
http://www.80sec.com/dedecms-sql-injection.html,其实这个系统也受最近很流行的多字节编码漏洞影响。不过今天说的这个漏洞与多字节编码无关,倒跟URL编解码有关系,

呵呵。仅测试了DedeCms2007(DedeCms V5.1 [sp1])。
目录下的tag.php文件对变量$tag处理不当,导致注入漏洞的形成,话不多说,贴代码:

if(isset($_SERVER["QUERY_STRING"])){
$tag = trim($_SERVER["QUERY_STRING"]); //得到GET的参数
$tags = explode('/',$tag); //以“/”分隔为数组$tags
$tag = $tags[1]; //取数组$tags的第二个元素
if(count($tags)>3) $PageNo = intval($tags[2]);
}else{
$tag = "";
}
$tag = urldecode($tag); //对变量$tag做URL解码处理,%27解码后就成了“'”
//如果没有Tag或Tag不合法,显示所有Tag
if($tag=="" || $tag!=addslashes($tag) ){ //如果$tag为空或有'、"、\等字符则执行
$dlist = new TagList($tag,'tag.htm'); //创建类TagList的实例,$tag传给其构造函数,此时$tag可能包含“'”
}
//如果有Tag,显示文档列表
else{
$dlist = new TagList($tag,'taglist.htm');
}

类TagList相关代码:(./include/inc_taglist_view.php)

class TagList
{
..
var $Tag;
..
//php5构造函数
function __construct($keyword,$templet) //$keyword=$tag
{
..
$this->Tag = $keyword;       //$this->Tag=$tag
..
if($this->Tag!='')
{
$this->TagInfos = $this->dsql->GetOne("Select * From `#@__tag_index` where tagname like '{$this->Tag}' "); //查询执行,漏洞产生!
}

以上就是代码的分析,可能说得不太清楚,这样的漏洞因为可以使用“'”,所以如果条件可以的话可以直接into file得SHELL。
利用方面大家自由发挥。为了方面我自己写了一个利用程序(https://files.cnblogs.com/allyesno/dedeExp.rar)

当File_priv为YES并得到了物理路径的时候就可以直接Get the shell了。其中得到物理路径的方法是利用了./include/htmledit/index.php的一个漏洞,我们提

交./include/htmledit/index.php?modetype=basic&height[]=toby57就可能得到路径。

如果这样得不到的话,还可利用重新安装漏洞,提交./install/index.php?step=2可以重新安装系统,当然也可以得到物理路径。

因为不能union查询,所以运气差的只有自己Get the hash再破解进后台拿SHELL了。