DZ自动爆破工具原理分析

反诈示警:如遇到文章内跳转至别的网站或产生需要交钱,交易等行为,均为诈骗行为,请谨慎对待。对于网上兼职、刷单、刷信誉的就是诈骗,请勿相信!需要提供身份证明、短信验证和短信链接点击都是诈骗, 请不要提供!同时请下载“国家反诈中心”App能自查自检,规避诈骗电话,免遭损失。

DZ自动爆破工具原理分析,插图,来源:资源仓库www.zycang.com

 

0×01 原理分析

最近爆出关于利用社工库爆破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。

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

DZ自动爆破工具原理分析,插图1,来源:资源仓库www.zycang.com

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

DZ自动爆破工具原理分析,插图2,来源:资源仓库www.zycang.com

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

DZ自动爆破工具原理分析,插图3,来源:资源仓库www.zycang.com

DZ自动爆破工具原理分析,插图4,来源:资源仓库www.zycang.com

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

DZ自动爆破工具原理分析,插图5,来源:资源仓库www.zycang.com

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

DZ自动爆破工具原理分析,插图6,来源:资源仓库www.zycang.com

 

DZ自动爆破工具原理分析,插图7,来源:资源仓库www.zycang.com

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

DZ自动爆破工具原理分析,插图8,来源:资源仓库www.zycang.com

返回如下

DZ自动爆破工具原理分析,插图9,来源:资源仓库www.zycang.com

以上内容只是分析了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为例,如图所示:

DZ自动爆破工具原理分析,插图10,来源:资源仓库www.zycang.com

 

DZ自动爆破工具原理分析,插图11,来源:资源仓库www.zycang.com

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

如需 WordPress 优化加速、二次开发、网站维护、企业网站建设托管等服务,点此联系我 | 近期站内热门福利推荐:
文章版权及转载声明

本文地址:https://www.zycang.com/115258.html
文章转载或复制请以超链接形式并注明来源出处。 本文最后更新于:2023-07-06 18:45:30
声明:某些文章或资源具有时效性,若有 错误 或 所需下载资源 已失效,请联系客服QQ:11210980

喜欢就支持一下吧
点赞142赞赏 分享
评论 抢沙发

请登录后发表评论