记一次全回显ssrf到任意文件读取的挖掘

SSRF(Server-Side Request Forgery,服务端请求伪造)是一种安全漏洞,其原理是:应用程序在后端代替用户向外部地址发起请求时,未对用户可控的 URL 输入进行严格校验,导致攻击者可构造恶意地址(如 file:///etc/passwd)诱使服务器访问本应隔离的本地文件、内网服务或云平台元数据,从而绕过网络边界限制,实现敏感信息读取、内网探测甚至远程代码执行。其本质是“借服务器之手,访问攻击者自身无法直接触达的资源”。

漏洞探测

访问目标站点后,发现一个人脸算法分析平台,支持“新建任务”与“刷新列表”功能。

image-20260203154237052

新建任务时,除本地上传外

image-20260203154354919

图中包含一个功能点允许远程加载图片,可以使用http/https协议。这里是 SSRF 的典型高危入口。

image-20260203154716021

构造 DNSLog 外联请求,服务器成功发起 DNS 查询,那么可以确认存在ssrf漏洞。但前端仅返回“上传成功”,无内容回显。如何去利用呢?

漏洞利用

尝试访问内网服务:

1
http://127.0.0.1

image-20260203155151713

返回错误,推测存在 IP 黑名单。改用localhost绕过

image-20260203155219928

成功返回响应,包含一串字符(如 a1b2c3d4)及图片大小信息。

分析业务逻辑:该功能需存储远程图片供后续查看。通过正常上传图片并抓包观察刷新接口,发现图片实际访问路径为:

1
/xxxx/xxxx/a1b2c3d4

image-20260203155808427

由此推断:SSRF 返回的字符串即为服务端存储路径标识

前端虽限制协议为 http/https,但后端未做校验。抓包将请求协议替换为file:

1
2
3
4
5
{
"sources": [{
"url": "file:///etc/passwd"
}]
}

image-20260203155852589

漏洞成果

上传成功,访问对应路径 /xxxx/xxxx/a1b2c3d4,成功读取/etc/passwd内容

image-20260203155920162

进一步读取敏感历史记录:

1
2
3
4
5
{
"sources": [{
"url": "file:///root/.bash_history"
}]
}

成功获取 root 用户操作历史

image-20260203160740589


记一次全回显ssrf到任意文件读取的挖掘
https://oxshadow.github.io/2026/02/03/记一次全回显ssrf到任意文件读取的挖掘/
作者
ss
发布于
2026年2月3日
更新于
2026年3月10日
许可协议