【THM-课程内容&答案】:Web Hacking Fundamentals-OWASP API Security Top 10-II-Broken User Authentication
这是怎么发生的?
用户身份验证是开发任何包含敏感数据的应用程序的核心方面。Broken User Authentication(BUA)反映了一种情况,即API端点允许攻击者访问数据库或获得比现有端点更高的权限。BUA背后的主要原因要么是身份验证的无效实现,如使用错误的电子邮件/密码查询等,要么是缺乏授权头、令牌等安全机制。
考虑攻击者获得滥用身份验证API的能力的场景;它最终将导致数据泄露、删除、修改,甚至被攻击者完全接管帐户。通常,黑客会创建特殊的脚本来分析、枚举系统上的用户并识别身份验证端点。一个实施不当的身份验证系统可能会导致任何用户冒充另一个用户的身份。
可能影响
在破坏用户身份验证的情况下,攻击者可以破坏经过身份验证的会话或身份验证机制,并轻松访问敏感数据。恶意行为者可以假装是授权人员,并可以进行不受欢迎的活动,包括完全接管账户。
实际例子
- 继续使用Chrome浏览器和Talend API测试仪在虚拟机中进行调试。
- Bob知道身份验证是至关重要的,并被指派开发一个API端点apirule2/user/login_v,该端点将根据提供的电子邮件和密码进行身份验证。
- 端点将返回一个令牌,该令牌将作为授权令牌头(GET请求)传递给apirule2/user/details,以显示特定员工的详细信息。Bob成功开发了登录端点;但是,他只使用电子邮件从用户表中验证用户,而忽略了SQL查询中的密码字段。攻击者只需要受害者的电子邮件地址即可获得有效的令牌或帐户接管。
- 在VM中,您可以通过向发送POST请求来测试这一点http://localhost:80/MHT/apirule2/user/login_v表单参数中包含电子邮件和密码。

- 正如我们所看到的,易受攻击的端点收到了一个令牌,该令牌可以转发到/apirule2/user/details以获取用户的详细信息。
- 为了解决这个问题,我们将更新登录查询逻辑,并使用电子邮件和密码进行验证。端点/apirule2/user/login_s是一个有效的端点,如下所示,它根据密码和电子邮件授权用户。

缓解措施
- 确保终端用户使用具有更高熵的复杂密码。
- 不要在GET或POST请求中暴露敏感凭据。
- 启用强JSON Web令牌(JWT)、授权标头等。
- 确保实施多因素身份验证(在可能的情况下)、帐户锁定或验证码系统,以减轻对特定用户的暴力攻击。
- 确保密码不以纯文本形式保存在数据库中,以避免攻击者进一步接管帐户。
【题目&思路】:
(1) 你能找到令牌吗hr@mht.com? Can you find the token of hr@mht.com?
cOC%Aonyis%H)mZ&uJkuI?_W#4&m>Y
【思路】:
1- 根据课程内容,访问的网站URL为:apirule2/user/login_v,email参数为hr@mht.com,请求方法为POST,填写完成后,直接点击Send按钮,即可通过漏洞获取hr用户token

(2) 去哪个国家sales@mht.com属于?To which country does sales@mht.com belong?
china
【思路】:
1- 根据课程内容,访问的网站URL为:apirule2/user/login_v,email参数为sales@mht.com,请求方法为POST,填写完成后,直接点击Send按钮,即可通过漏洞获取sales用户token

2-切换请求方法为GET,url调整为/apirule2/user/details,请求头添加参数Authorization-Token:~jSkQD:u<Zdo!JDvX_9V[GrD%:JTtU,最后点解send按钮,即可获取sales的个人信息。

(3) 在GET请求中发送用户名和密码(是/否)是一种好的做法吗?Is it a good practice to send a username and password in a GET request (yea/nay)?
nay
【思路】:在get请求中发送用户名和密码容易被劫持后,进行越权访问。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)