freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Discuz论坛自动爆破工具原理分析 金币
2015-05-22 13:50:12

ID:GENXOR

TEAM:360网站卫士

[转载请注明出处自  :  360网站卫士博客-blog.wangzhan.360.cn]

最近爆出关于利用社工库爆破Discuz论坛用户名密码的工具,造成很多大的论坛用户信息泄露,分析原理如下。

这里Discuz判断访问IP主要用了下面这段逻辑:

private function _get_client_ip() {
                   $ip = $_SERVER[;REMOTE_ADDR;];
                   if (isset($_SERVER[;HTTP_CLIENT_IP;]) && preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’, $_SERVER[;HTTP_CLIENT_IP;])) {
                            $ip = $_SERVER[;HTTP_CLIENT_IP;];
                   } elseif(isset($_SERVER[;HTTP_X_FORWARDED_FOR;]) AND preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’, $_SERVER[;HTTP_X_FORWARDED_FOR;], $matches)) {
                            foreach ($matches[0] AS $xip) {
                                     if (!preg_match(‘#^(10|172\.16|192\.168)\.#’, $xip)) {
                                               $ip = $xip;
                                               break;
                                     }
                            }
                   }
                   return $ip;
}

如果在HTTP HEAD里存在clientip则判断为clientip,如果存在XFF头,则判断为XFF,如果二者都没有,则直接取$_SERVER[;REMOTE_ADDR;]。其实这段逻辑是存在漏洞的,如果我们自己构造HTTP HEAD并在里面加入clientip、XFF字段,便可以轻松绕过DZ的防暴力猜测机制,DZ只会封掉我们伪造的clientip、XFF的IP,而不会限制真实IP。

0×01 DZ防暴力破击机制

这里我以DZ X2.5为例,跟踪用户登录的逻辑,登录执行class_member.php下的on_login(),这里DZ会先判断用户登录失败的次数是否大于4,也就是它的防爆破机制,这里执行logincheck()函数,如图所示

继续跟入这里可以看到了这个fetch_username会去pre_common_failedlogin这个表查询登录失败的次数,而这里用的便是$_G[‘clientip’]


关于$_G[‘clientip’]获取的内容便是前面提到的那个_get_client_ip函数实现,如图所示

这里fetch_username会去pre_common_failedlogin这个表查询登录失败的次数,如图所示

继续跟踪后面的内容,再回到logincheck的代码,后面这个$return这里会判断查询记录以及距离最后一次登陆失败的的时间是否大于15分钟,这里返回$return是0,说明登陆失败次数大于4次,

因为这里返回0所以进入showmessage(‘login_strike’)返回页面登陆失败提示。

返回如下

以上内容只是分析了DZ防止暴力破击的机制,可以看到当HTTP HEAD中同时存在client-ip、X-FORWARDED-FOR以及$_SERVER[‘REMOTE_ADDR’]时,DZ会优先将client-ip、X-FORWARDED-FOR作为源IP,所以封掉的永远是client-ip或是XFF,而不影响真正的连接IP。我们再回到问题上来,利用工具便是钻了这个空子,构造请求暴力破解的,至于利用社工库,只不过是利用一些已知社工网站提供的接口来撞库查询用户密码,例如www.cnseu.org

0×02 临时解决方案

开启验证码,这里以DZ X2.5为例,如图所示:

至于社工撞库,因为与正常的登陆行为没有任何区别,所以建议广大用户尽快修改密码,并设置强壮密码,切忌多个账号使用统一密码。

* 作者/GENXOR,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

本文作者:, 转载请注明来自FreeBuf.COM

# DZ自动爆破工具
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦
收入专辑