hacktricks/pentesting-web/reset-password.md

9.2 KiB
Raw Blame History

重置/忘记密码绕过

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

加入HackenProof Discord服务器,与经验丰富的黑客和赏金猎人交流!

黑客见解
参与深入探讨黑客的刺激和挑战的内容

实时黑客新闻
通过实时新闻和见解及时了解快节奏的黑客世界

最新公告
通过最新的赏金计划发布和重要平台更新保持信息更新

加入我们的 Discord 并开始与顶尖黑客合作!

通过引用者泄漏密码重置令牌

  • 如果密码重置令牌包含在URL中HTTP引用者标头可能会泄漏该令牌。当用户在请求密码重置后单击第三方网站链接时可能会发生这种情况。
  • 影响通过跨站请求伪造CSRF攻击潜在接管帐户。
  • 利用:要检查引用者标头中是否泄漏了密码重置令牌,请向您的电子邮件地址请求密码重置,然后单击提供的重置链接。不要立即更改密码。而是,导航到第三方网站如Facebook或Twitter同时使用Burp Suite拦截请求。检查请求以查看引用者标头是否包含密码重置令牌,因为这可能会向第三方泄露敏感信息。
  • 参考
  • HackerOne报告342693
  • HackerOne报告272379
  • 密码重置令牌泄漏文章

密码重置中毒

  • 攻击者可能在密码重置请求期间操纵主机标头,将重置链接指向恶意站点。
  • 影响:通过向攻击者泄漏重置令牌导致潜在接管帐户。
  • 缓解步骤
  • 针对允许的域名白名单验证主机标头。
  • 使用安全的服务器端方法生成绝对URL。
  • 修补:使用$_SERVER['SERVER_NAME']构建密码重置URL而不是使用$_SERVER['HTTP_HOST']
  • 参考
  • Acunetix关于密码重置中毒的文章

通过操纵电子邮件参数重置密码

攻击者可以通过添加额外的电子邮件参数来操纵密码重置请求,以转移重置链接。

  • 使用&将攻击者电子邮件作为第二个参数添加
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
  • 使用 %20 将攻击者电子邮件添加为第二个参数
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
  • 使用 | 将攻击者电子邮件添加为第二个参数
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
  • 使用 cc 将攻击者的电子邮件添加为第二个参数
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
  • 使用密件抄送将攻击者的电子邮件添加为第二个参数
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
  • 使用 , 将攻击者电子邮件添加为第二个参数
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
  • 将攻击者电子邮件添加为 JSON 数组中的第二个参数
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}

通过 API 参数更改任何用户的电子邮件和密码

  • 攻击者可以修改 API 请求中的电子邮件和密码参数,以更改帐户凭据。
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})

无速率限制: 邮件轰炸

  • 在密码重置请求上缺乏速率限制可能导致邮件轰炸,用重置邮件淹没用户。
  • 缓解步骤:
    • 基于 IP 地址或用户账户实施速率限制。
    • 使用 CAPTCHA 挑战来防止自动滥用。
  • 参考:

查找密码重置令牌生成方式

  • 了解令牌生成背后的模式或方法可以帮助预测或暴力破解令牌。一些选项:
    • 基于时间戳
    • 基于用户ID
    • 基于用户电子邮件
    • 基于名字和姓氏
    • 基于出生日期
    • 基于密码学
  • 缓解步骤:
    • 使用强大的密码学方法进行令牌生成。
    • 确保足够的随机性和长度以防止可预测性。
  • 工具: 使用 Burp Sequencer 分析令牌的随机性。

可猜测的 UUID

  • 如果 UUID版本 1是可猜测或可预测的攻击者可能会暴力破解它们以生成有效的重置令牌。检查: {% content-ref url="uuid-insecurities.md" %} uuid-insecurities.md {% endcontent-ref %}

  • 缓解步骤:

    • 使用 GUID 版本 4 以获得随机性,或为其他版本实施额外的安全措施。
  • 工具: 使用 guidtool 分析和生成 GUID。

响应操纵: 用良好的响应替换坏的响应

  • 操纵 HTTP 响应以绕过错误消息或限制。
  • 缓解步骤:
    • 实施服务器端检查以确保响应完整性。
    • 使用安全通信渠道如 HTTPS 防止中间人攻击。
  • 参考:

使用过期令牌

  • 测试过期令牌是否仍然可以用于密码重置。
  • 缓解步骤:
    • 实施严格的令牌过期策略,并在服务器端验证令牌过期。

暴力破解密码重置令牌

  • 尝试使用工具如 Burpsuite 和 IP-Rotator 暴力破解重置令牌以绕过基于 IP 的速率限制。
  • 缓解步骤:
    • 实施强大的速率限制和账户锁定机制。
    • 监控可疑活动,表明可能存在暴力破解攻击。

尝试使用您的令牌

  • 测试攻击者的重置令牌是否可以与受害者的电子邮件一起使用。
  • 缓解步骤:
    • 确保令牌绑定到用户会话或其他用户特定属性。

注销/密码重置中的会话失效

  • 确保用户注销或重置密码时会话失效。
  • 缓解步骤:
    • 实施适当的会话管理,确保所有会话在注销或密码重置时失效。

注销/密码重置中的会话失效

  • 重置令牌应在一段时间后失效。
  • 缓解步骤:
    • 为重置令牌设置合理的过期时间,并在服务器端严格执行。

参考

加入 HackenProof Discord 服务器,与经验丰富的黑客和赏金猎人交流!

黑客见解
参与深入探讨黑客行为的内容

实时黑客新闻
通过实时新闻和见解了解快节奏的黑客世界

最新公告
随时了解最新的赏金任务发布和重要平台更新

加入我们的 Discord,立即与顶尖黑客合作!