qxyhuiyuan 发表于 2020-6-25 16:21:38

【aixiagame首发】【discuz找回密码的漏洞】防攻击邮箱系统

上回我们说到了这个屏蔽*蜘蛛问题,现在的呢?我们一起来接着看。
大量的站长在很久之前就发现了这个漏洞问题,忘记密码这块取回限制什么都没有,恶意用户频繁发送,最终发送邮箱可能被封禁。
但是官方他不修改这块漏洞,原话如图(吐槽一下,大家又不需要官方提供邮箱功能,设置个取回限制都这么懒)
http://www.discuz.net/data/attachment/forum/202001/30/205412f99bz11n4nareggf.jpg.thumb.jpg
所以,我们要自行采取防护措施,如何在找回密码上面加限制与巩固。

以DiscuzX 3.4 R20191201建站程序的来巩固找回密码漏洞问题。

首先感谢reCAPTCHA云验证码插件的开发者提供的增加验证码的代码,以及@风乱流年 提供的同一个账号发送频率限制代码。一共分两步。
提供给小白们解决这个取回密码来攻击邮箱的问题,老白就不用看了,写的不一定好。

第一步:找回密码邮件发送频率修改(同一个账号的取回发送限制)

打开source/module/member/member_lostpassword.php

搜索$idstring = random(6);
在上面加入
$memberauthstr = C::t('common_member_field_forum'.$table_ext)->fetch($member['uid']);
      list($dateline, $operation, $idstring) = explode("\t", $memberauthstr['authstr']);
      if($dateline && $operation == 1 && $dateline>TIMESTAMP-900){
                showmessage('getpasswd_has_send');
      }

打开source/language/lang_message.php
搜索'submit_verify_succeed'
在上面加入
'getpasswd_has_send' => '取回密码的方法已通过 Email 发送到您的信箱中,如果您没有收到,请稍等15分钟后重试',
当然,这第一步仅仅只是一个账号不停的取回限制,那黑手也不是傻子,这一步行不通,他肯定用你论坛里不同帐号不停的取回。
这时怎么办?再来个同一个IP的取回发送限制?那黑手更不是傻子,他肯定会用你论坛里不同的IP不同的账号再接着不停的取回。

何处能消停?且看第二步。

第二步:在忘记密码取回的界面加上验证码(阻拦机器人的取回发送限制)

这样的话,除非这黑手真是个傻子,自己在那儿人工发送,不然的话除非他有破解reCAPTCHA云验证码的水平。
所以这一步基本上已经给这黑手打上GAME OVER!了
那如何在这界面加上验证码呢?
http://www.discuz.net/data/attachment/forum/202001/30/213547aecf4yv5ghwgfy58.jpg.thumb.jpg
discuz官方没在这个位置提供嵌入点,也没有相关的设置项,因此通过插件极难实现接入系统验证码(不是完全不能,但很困难,common嵌入点强行实现性能也会很不好)。
那比较好的解决方案是什么?
在这个界面加上系统验证码,而reCAPTCHA云验证码的插件就是覆盖的系统验证码,所以正好加了系统验证码就带表能加上了reCAPTCHA云验证码。
效果如图:
http://www.discuz.net/data/attachment/forum/202001/30/220515ij00f9ejglj3e0d8.png.thumb.jpg
修改办法:

**** Hidden Message *****

这样验证码在配合限制取回密码的邮件发送频率,漏洞就巩固加强了。


最后,总结一下:
第一步:同一个账号的取回发送限制
第二步:阻拦机器人的取回发送限制

如果有什么新方法、好方法,欢迎大家留言,给予遇到的人帮助,先就这样吧,祝大家大吉大利、万事顺心。


页: [1]
查看完整版本: 【aixiagame首发】【discuz找回密码的漏洞】防攻击邮箱系统