黑客 OWASP Juice Shop:第一部分 - 发现关键漏洞
奉至仁至慈的真主之名。一切赞颂全归真主,养育众世界的主。
我决定今天测试一下 OWASP Juice Shop。我将从测试登录功能开始,记录我遇到的所有漏洞和安全问题。这篇报告是第一篇,我会在标题中注明。
我尝试使用 ' OR 1=1-- 作为邮箱,并输入了一个随机的密码,结果成功登录了管理员账户。
第一个漏洞:登录功能存在 SQL 注入漏洞。
我点击了评论区域,注意到有一些用户留下了评论。我想:“如果我可以通过 SQL 注入以这些用户的身份登录呢?”
我尝试了以下邮箱地址:
然而,我并没有以这些用户的身份登录,而是再次登录了管理员账户。
第二个漏洞:部分用户登录存在 SQL 注入漏洞,但会授予管理员权限,而非目标用户账户。
我创建了一个测试账户:test+1@gmail.com。我注意到系统允许用户使用自己的邮箱作为密码,同时也作为安全问题的答案。出于安全考虑,这不应该被允许。
第三个漏洞:系统允许使用相同的邮箱地址作为用户名和密码,损害了账户安全性。
回到 Burp Suite,我注意到一个指向 /api/Users/ 的 POST 请求。出于好奇,我将它发送到 Repeater,删除了 POST 请求体,将请求方法改为 GET,然后发送。我收到了一个错误响应:
{
"error": {
"message": "No Authorization header was found",
"name": "UnauthorizedError",
"code": "credentials_required",
"status": 401,
"inner": {
"message": "No Authorization header was found"
}
}
}
我检查了站点地图中带有 Authorization 头的请求,找到了一个。我解码后发现这是管理员的授权令牌。我将它添加到请求中,希望能成功,结果确实成功了。我在响应中获取了用户的邮箱和角色。我可以在无需密码的情况下利用 SQL 注入登录。
第四个漏洞:由于授权检查不当导致个人身份信息 (PII) 泄露。
注意:普通用户的授权令牌同样有效。
我从端点中移除 /Users/ 后,向 /api/ 发起了一个请求,这触发了一个堆栈错误。我认为这是一个安全问题。
第五个漏洞:由于错误处理不当导致堆栈跟踪信息泄露。
我注意到一个请求头 GET /rest/products/search?q=,并尝试输入 apple' OR 1=1。这触发了一个错误,泄露了数据库名称和错误位置。
{
"error": {
"message": "SQLITE_ERROR: near \"' OR 1=1%'\": syntax error",
"stack": "Error: SQLITE_ERROR: near \"' OR 1=1%'\": syntax error",
"errno": 1,
"code": "SQLITE_ERROR",
"sql": "SELECT * FROM Products WHERE ((name LIKE '%apple' OR 1=1%' OR description LIKE '%apple' OR 1=1%') AND deletedAt IS NULL) ORDER BY name"
}
}
第六个漏洞:由于 SQL 错误处理不当导致信息泄露。
我通过 /api/BasketItems/ 端点输入了它未预期的值(例如 -1),触发了另一个错误。这泄露了更多关于数据库的信息。
第七个漏洞:由于用户输入验证不当导致信息泄露。
我注意到普通用户无法查看点赞某个特定产品的用户。通过将授权头替换为管理员的授权头,我成功获取了点赞该产品的用户邮箱。
第八个漏洞:权限提升,允许未经授权访问用户邮箱。
目前就这些。感谢阅读!别忘了点赞。你可以订阅以便将下一篇报告直接发送到你的收件箱。
如有任何建议或更正,请随时联系我: Twitter — callgh0st CSD0tFqvECLokhw9aBeRqopJDR93OU7WxHE+knUD6TOhHbcUe1LgS00eirihpKWvLQI3V8BPv89shQKQLzLf5XMoh2F4XrVLS44j3K4ihNydg3etI+FiRX5l8tHj8npOLM0boW+BSsr2kVZw44tprg==