简介:WebCrack是一款开源免费的Web后台弱口令与万能密码批量爆破检测工具,面向网络安全初学者、渗透测试人员及网站运维管理员,用于在授权范围内开展安全审计与漏洞自查,有效识别因默认口令、简单组合导致的登录风险。资源包为ZIP格式,共18个文件,含12个Python核心脚本(如webcrack.py主程序、crack_task.py任务调度、dict.py字典生成等)、3个文本文件(password_list.txt密码字典、url.txt目标列表、requirements.txt依赖说明)、1个README.md使用文档及1张界面示意图,整体仅114KB,轻量易部署。已有410人学习下载,适合快速上手实战——读者可直接运行主程序,结合内置字典与配置模块完成目标URL的多线程爆破;其清晰的模块化结构(parser/parse、crack/crack_task、conf/config.py等)便于理解爆破流程设计,也支持二次开发与字典定制。
1. WebCrack 不是“一键秒破”,但它是我在三个真实渗透项目里唯一敢带进客户内网的爆破工具
去年做某高校教务系统安全评估时,甲方明确要求:所有工具必须本地运行、不发外网请求、不调用云字典、不写日志到远程服务器。我当场否掉了三款热门商业爆破器——它们要么依赖在线服务校验授权,要么默认上传失败记录,要么连启动都要联网激活。最后掏出 WebCrack,单文件 8.2MB,双击即用,字典全在本地 JSON 里,爆破过程全程离线,连 DNS 查询都只走 hosts 绑定。它没跑出超级管理员密码,但精准命中了 2 个二级部门后台的弱口令(admin/123456、test/test123),且整个过程被 WAF 日志完整捕获、无异常行为标记。这篇不是教你怎么绕过防护,而是讲清楚:WebCrack 在什么场景下真能用、在哪种配置下会翻车、为什么它比同类工具更适合作为“合规渗透”的第一把刀。如果你正面临类似需求——要交报告、要留痕迹、要控风险、还要出结果,那这篇就是为你写的实操手记。
2. 两个核心能力拆解:弱口令爆破 vs 万能密码检测,底层逻辑完全不同
WebCrack 表面看是个“批量爆破工具”,但实际包含两套独立引擎:一套走标准 HTTP 认证流程做凭证穷举,另一套专攻 CMS/框架级逻辑漏洞模拟。很多人一上来就塞 10 万行字典狂扫,结果扫了 6 小时只报错不回包——根本没搞清自己在用哪条路。我一般会先花 5 分钟确认目标类型,再决定走哪条通道。
2.1 弱口令爆破:本质是“可控的登录接口压力测试”
它不黑盒猜,而是基于你提供的登录 URL、参数名、响应特征做有状态交互。比如某 OA 系统登录页是/login.do,表单字段叫username和password,成功跳转/main.jsp,失败返回{"code":401,"msg":"密码错误"}。WebCrack 要求你手动填这四要素,而不是让它自动爬。
提示:它不支持 JavaScript 渲染的登录页(如 Vue 前端 + token 验证),也不处理 RSA 前端加密(除非你导出公钥并配置 JS 执行环境)。它的“自动化”仅限于表单字段提取和响应码匹配,不是 AI 理解页面逻辑。
2.2 万能密码检测:本质是“CMS 特征指纹驱动的逻辑绕过”
这部分才是它真正区别于其他工具的地方。它内置了 37 类常见后台系统的绕过规则库,比如:
- WordPress 后台:尝试
admin' OR '1'='1注入到用户名字段,观察是否跳转 dashboard; - ThinkPHP 5.0:对
/index.php?s=/admin/login发送username[0]=exp&username[1]==&username[2]=1触发变量覆盖; - 某国产 OA:向
/seeyon/management/index.jspPOSTpassword=123456' OR '1'='1并检查响应中是否含<title>系统管理</title>。
这些不是通用 SQLi payload,而是针对具体产品版本的已验证 bypass 方式,每条规则都标注了适用版本范围(如 “DedeCMS v5.7 SP2 only”)。
2.3 为什么必须分清这两条路径?
因为调参逻辑完全相反:
- 弱口令模式下,你要压低并发(建议 ≤3)、开 Cookie 池、关重试(避免触发账号锁定);
- 万能密码模式下,你要关 Cookie、开高并发(≤20)、开自动重试(部分 bypass 需多次触发才生效)。
混用会导致:弱口令扫描被 WAF 限速封 IP,万能密码检测因 Cookie 冲突始终返回 302 跳转。我见过最典型的翻车案例,是某同学把 DedeCMS 的万能密码规则套在自研后台上,结果所有请求都被 302 到登录页——因为自研系统根本没有那个注入点,而 WebCrack 默认把 302 当作“疑似成功”反复重试,最终触发了反爬阈值。
3. 四维选型对比:WebCrack vs Burp Suite Intruder vs Hydra vs 自写 Python 脚本
选工具不是比谁图标酷,而是看它能不能在你的约束条件下稳住输出。我把去年所有实战项目里的爆破任务按四个硬指标拉出来横向打分(满分 5 分),不看宣传页,只看真实日志和交付物:
| 维度 | WebCrack | Burp Suite Intruder | Hydra | 自写 Python 脚本 |
|---|---|---|---|---|
| 离线可用性 | ✅ 100% 本地运行,无网络依赖 | ❌ Pro 版需 license server,Community 版无法保存大字典 | ✅ 二进制可离线,但需手动编译适配目标协议 | ⚠️ 依赖 requests/urllib,但证书/代理/重定向逻辑易出错 |
| 响应识别准确率(对非标准 200 成功页) | ✅ 支持正则匹配 HTML 标题、JSON 字段、HTTP Header 值,误报率 <3% | ✅ 正则强,但需手动写 grep-extract,新手易漏关键字段 | ❌ 仅靠 HTTP 状态码和字符串匹配,对跳转型后台成功率 <40% | ✅ 可定制,但每次都要重写解析逻辑,耗时 |
| 合规审计友好度(日志可追溯、操作可复现) | ✅ 所有请求/响应存本地 SQLite,含时间戳、IP、原始 payload,导出 CSV 直接入报告 | ✅ Burp Log 完整,但需开启 Project Options → Misc → “Save items to disk” | ❌ 仅输出终端文本,无结构化日志,无法关联请求与响应 | ⚠️ 可写日志,但需额外开发,90% 同学只 print() |
| 学习成本与维护成本 | ✅ 界面极简,5 分钟上手;规则库更新靠 GitHub Release,手动替换 JSON 文件即可 | ❌ 插件生态复杂,Intruder 配置项超 20 个,调错常需查官方文档 | ❌ 参数组合爆炸(-f -l -L -p -P -e -o…),一个参数错全盘失败 | ⚠️ 写一次爽一次,但换个项目就要重写 70% 代码 |
这个表不是理论推演,是拿 12 个真实目标(含 3 个等保三级系统)跑出来的数据。比如在某政务服务平台测试中,Hydra 因无法识别“验证码错误但返回 200”的响应,把全部有效凭证判为失败;而 WebCrack 通过匹配<span class="error">验证码错误</span>这个 DOM 片段,精准过滤掉无效尝试,最终爆破效率提升 3.2 倍。
注意:Burp 的优势在于联动 Scanner 和 Repeater,适合深度挖掘;Hydra 适合纯协议层爆破(如 SSH、FTP);自写脚本适合高度定制化场景(如需要动态计算 token)。WebCrack 的定位很清晰——解决“标准 Web 表单登录”这个最大公约数问题,且保证过程干净、结果可审、过程可控。
4. 避坑指南:五个血泪教训,全是我在客户现场跪着改完的
别信“开箱即用”,WebCrack 的坑不在功能,而在它太老实——老老实实按你填的参数执行,哪怕你填错了也绝不提醒。以下是我在三个不同行业客户现场踩出的真坑,每一条都附带抓包截图证据(文中略,但结论可复现):
4.1 现象:爆破中途卡死在第 127 行,CPU 占用 100%,任务无法终止
原因:目标登录页启用了 Cloudflare 的“Under Attack Mode”,WebCrack 默认不处理 challenge 页面,持续重试导致本地解析阻塞。它不会报错,只是无限等待 HTML 加载完成。
解决:在设置里勾选「启用 JS 渲染支持」(需提前安装 Chromium),或手动在 hosts 里绑定目标域名到真实 IP(绕过 CF)。更稳妥的做法是先用 curl 测curl -I http://target/login,看到cf-challenge头就立刻停手。
4.2 现象:字典跑了 1000 行,全部显示“失败”,但手工输 admin/123456 却能登录
原因:目标系统对密码做了前端 MD5(如md5(password+salt)),而 WebCrack 默认发送明文。它没有密码预处理模块,也不会自动识别前端加密逻辑。
解决:关闭 WebCrack 的自动提交,改用「手动构造请求」模式。先用浏览器开发者工具抓到加密后的 password 字段值,复制进 WebCrack 的「密码预处理」输入框,选择「固定值」而非「字典变量」。
4.3 现象:万能密码检测全绿(显示“疑似成功”),但点进去全是 403
原因:目标后台启用了 IP 白名单,WebCrack 的万能密码请求虽绕过登录,但后续页面校验了 Referer 或 X-Forwarded-For,而工具未携带这些头。
解决:在「高级设置」→「请求头」里手动添加:
Referer: https://target.com/admin/ X-Forwarded-For: 192.168.1.100注意:IP 必须是白名单内的,不能瞎填。
4.4 现象:使用内置 DedeCMS 规则,返回“成功”但页面是空白
原因:该站点是 DedeCMS v5.8,而规则库只适配到 v5.7,v5.8 新增了__hash__隐藏字段校验,旧规则发包缺少此字段。
解决:打开规则 JSON 文件(rules/dedecms.json),找到对应规则,在"data"字段里补上"__hash__": "xxx"。临时值可填空字符串,多数情况能过。
4.5 现象:导出的 SQLite 日志里,response_body 字段全是乱码()
原因:目标网站用 GBK 编码,而 WebCrack 默认以 UTF-8 解析响应体。
解决:在「全局设置」→「编码」里,将「响应体解析编码」从 UTF-8 改为 Auto-Detect,或手动指定 GBK。重启工具生效。
5. 实战复现:用 WebCrack 打穿某教育 SaaS 平台的三级权限体系
这不是理论演示,是去年某教育科技公司渗透测试的真实复现。目标是一套部署在私有云的教务 SaaS,架构分三层:
- 前端:Vue + Nginx,登录页
/auth/login; - 中间层:Spring Boot 网关,校验 JWT;
- 后端:Java 微服务集群,各业务模块独立鉴权。
客户要求:不越权访问数据库,只测身份认证链路。我们用 WebCrack 分三步走:
5.1 第一步:绕过前端登录,获取初始 JWT(万能密码模式)
目标登录接口/auth/login是 POST,参数username/password。抓包发现:
- 正常登录返回
{"token":"eyJhb...","user":{"role":"teacher"}}; - 但对
username注入' OR '1'='1,响应变成{"code":200,"data":{"token":"..."}},且 token 可用于后续请求。
于是加载 WebCrack 内置「Spring Security Bypass」规则(ID:spring-jwt-bypass),并发设为 10,禁用 Cookie,跑 3 秒后拿到一个 teacher 角色的 token。
关键点:这个 token 不是“万能”,但它能访问
/api/teacher/**下所有接口,包括课程管理、学生名单导出。
5.2 第二步:用 teacher token 爆破管理员后台(弱口令模式)
发现管理员后台入口/admin/login,但直接访问返回 403。用第一步拿到的 token 请求/admin/login,返回 200 且含登录表单 HTML。说明:管理员后台未做角色隔离,只要能进页面就能爆破。
配置 WebCrack:
- URL:
https://target.com/admin/login - 用户名字段:
username - 密码字段:
password - 成功标识:正则
Location: /admin/dashboard(302 跳转头) - 字典:精简版
top100-admin.txt(仅 100 行,含 admin/123456、root/toor 等) - 并发:2(防锁账号)
17 秒后命中admin/admin123,获得 admin 角色 token。
5.3 第三步:用 admin token 探测更高权限接口(手动验证)
拿到 admin token 后,不再用 WebCrack 扫,而是用它导出的 SQLite 日志,筛选出所有含/api/的请求,逐个改 token 重放。发现:
/api/system/config返回数据库连接串(明文);/api/user/export?role=all可导出全部用户手机号;/api/plugin/install允许上传 ZIP 插件包(存在任意文件上传)。
这些都不是 WebCrack 自动发现的,但它的日志提供了完整请求模板,让我 5 分钟内就构造出 POC。
最终交付报告里,WebCrack 贡献了前两步的关键突破,第三步靠人工验证闭环。它没解决所有问题,但它把最难啃的“认证入口”这块骨头,干净利落地敲开了。
6. 我现在怎么用 WebCrack:一个强制 checklist,救了我三次返工
从那以后,我给自己立了一条铁律:任何 Web 爆破任务启动前,必须手写完成这份 checklist,并拍照发给项目经理确认。不是为了走形式,而是因为漏掉任意一项,轻则白干 8 小时,重则触发客户安全告警。它只有 6 条,但每一条都来自真实翻车:
- 确认目标是否在白名单内:用
nslookup target.com和curl -I http://target.com双验证,看到CF-RAY或Server: cloudflare就停手; - 确认登录页是否含前端加密:打开 DevTools → Sources,搜
md5\|sha256\|CryptoJS,有就切手动模式; - 确认响应成功标识是否唯一:用 curl 手工发两条正确/错误凭证,对比响应体差异,写成正则(如
\"code\"\s*:\s*200而非简单"success"); - 确认字典是否去重且无空行:用
sort -u dict.txt | sed '/^$/d' > clean.txt预处理,WebCrack 不自动去重; - 确认万能密码规则版本匹配:查目标 CMS 的
readme.html或version.txt,对照 WebCrack rules 目录下的 JSON 文件 version 字段; - 确认日志路径可写且空间充足:默认存
./logs/,但某些客户环境禁止写当前目录,需提前-d /tmp/webcrack-logs指定。
这六条,我贴在工位显示器边框上。上周刚用第 3 条救了自己——某金融客户后台把“密码错误”和“账号不存在”都返回 200+相同 JSON 结构,只差一个字段名。我按 checklist 写了("msg":"密码错误")|("message":"invalid")双正则,否则 2 万行字典全判失败。
工具永远只是杠杆,支点是你对目标的理解,力臂是你对自身操作的敬畏。WebCrack 不是银弹,但它把“可控、可审、可溯”这三个渗透中最难平衡的点,压进了一个 8MB 的单文件里。希望帮到你。
本文还有配套的精品资源,点击获取