网站后台账号密码爆破工具
去年秋天,网站我帮一个做安全运维的后台朋友处理过一次应急响应。客户是账号一家小型电商,后台登录日志里出现了连续三天的密码异常——每天凌晨两点到四点,同一个IP段轮流尝试了四千多次登录,爆破用户名从admin、工具test一路猜到运营总监的网站拼音全拼。密码字典不算大,后台大概两万条,账号但足够把弱口令筛一遍。密码最后对方还真碰进去一个账号,爆破密码是工具“admin123”,属于一个离职半年的网站前员工。这事让我重新翻出自己早年写的后台一个小脚本,重新整理了一下后台爆破的账号基本逻辑。
所谓后台账号密码爆破,本质就是拿一个用户名列表配一个密码列表,反复往登录接口发请求,看返回结果里有没有“登录成功”的痕迹。听起来粗暴,但真做起来有一堆细节要处理。最朴素的方式是手动打开浏览器,挂上Burp Suite的Intruder模块,把用户名和密码字段设成变量,跑Sniper或Cluster bomb模式。这种方式慢,但胜在直观,适合小规模测试。我见过有人拿它跑一个三千条的字典,整整跑了一下午,中间还因为会话过期断了两次。
脚本化是更常见的路子。Python里用requests库配threading,写个几十行就能并发跑。关键点不在代码本身,而在怎么判断登录成功。有的系统返回302跳转,有的返回200但页面里藏了“欢迎回来”几个字,还有的会设置一个新的Cookie。你得先手动登录一次,抓下成功响应和失败响应的差异,再把这个差异写成判断条件。我那个脚本里用的是状态码加关键字双重校验,因为吃过亏——有一次目标系统失败也返回200,只是页面里多了个“验证码错误”的提示,差点把整个字典跑完才发现判断逻辑写反了。
字典质量比并发数重要得多。网上流传的“top1000弱口令”能覆盖大概三成左右的真实弱密码,但剩下的七成得靠针对性收集。比如目标公司叫“蓝鲸科技”,你就得把lanjing、bluewhale、ljkeji这些变体加进去,再配上2023、2024、@123、!qaz这些常见后缀。我习惯用CUPP生成一份基础字典,再拿目标官网、招聘信息、社交媒体账号里出现过的词汇做二次扩充。有一次在一个论坛上看到有人贴出目标公司年会的抽奖口令是“hongbao2022”,加进字典后第三轮就命中了。
速度控制是个容易被忽略的坑。很多新手一上来就把线程开到200,结果目标服务器直接返回503,或者WAF把IP封了。稳妥的做法是从5个线程起步,观察响应时间,如果平均延迟超过两秒就降速。还可以加随机User-Agent和请求间隔,模拟正常用户的点击节奏。我通常会在脚本里加一个指数退避的逻辑——连续失败三次就暂停十秒,再失败就暂停三十秒。这招在对付有频率限制的接口时特别管用。
最后说一句法律边界。未经授权的爆破测试,在国内属于违反《网络安全法》第二十七条的行为,轻则行政处罚,重则刑事追责。我那个脚本只在客户书面授权、且明确划定测试时间窗口的情况下用过。平时自己练手,都是搭本地DVWA或者靶场环境。技术本身没有对错,但用在哪里、怎么用,差别很大。









