ssrf攻击

 人参与 | 时间:2026-10-17 07:24:34

凌晨三点,攻击某家电商平台的攻击运维被警报吵醒。数据库连接数暴涨,攻击日志里全是攻击同一个IP发来的请求——但那个IP地址,其实属于他们自己的攻击内网监控服务器。攻击者没用什么高明手段,攻击只是攻击让服务器去访问了一个它不该访问的地址。这,攻击就是攻击SSRF。

SSRF全称Server-Side Request Forgery,攻击服务端请求伪造。攻击说白了,攻击就是攻击攻击者把目标服务器当成一个跳板,让它帮自己去访问内网资源。攻击你可能会问,攻击服务器自己访问自己内网有什么大不了的?问题在于,很多公司把内网服务默认当成可信的,防火墙对外网请求严防死守,却对内部流量大开绿灯。

举个具体例子。某图片处理网站有个功能,你提交一个URL,它抓取图片并帮你压缩。攻击者提交的不是图片链接,而是http://192.168.1.1/admin。服务器傻乎乎地去请求内网路由器的管理页面,然后——如果这个页面没有做来源校验,攻击者就拿到了路由器的管理员权限。整个过程,攻击者自己的IP根本没暴露。

这玩意儿最烦人的地方在于,它往往藏在一些看似人畜无害的功能里。网页爬虫、PDF生成器、远程图片加载、Webhook通知、甚至某些“分享链接预览”功能,都可能成为SSRF的温床。我见过最离谱的一个案例,是某企业内部的工单系统,用户提交工单时可以填“关联的外部系统地址”,系统会自动去那个地址拉取状态信息——结果这成了黑客进内网的后门。

技术层面,SSRF的变种多到让人头疼。最基本的用IP地址直接访问,稍微懂点的会加个十六进制编码,再狠一点的直接改DNS解析记录,让一个看起来无害的域名解析到内网IP。有些防御措施只检查URL前缀是不是http://或https://,结果攻击者用file://协议直接读取了服务器上的敏感文件。你堵住一个洞,他立马挖出另一个。

说到防御,很多人第一反应是加个黑名单,把127.0.0.1、localhost这些常见内网地址拦住。但这就像用筛子挡沙——攻击者可以用短链接跳转绕过,用IPv6映射地址绕过,甚至利用重定向机制让服务器先请求一个外网地址,然后被302跳转到内网。真正靠谱的做法是白名单制,只允许服务器访问明确指定的少数外部域名,其余请求一概拒绝。同时,对响应内容做严格校验,别让内网数据轻易流出去。

现实里更棘手的是,很多系统架构本身就给SSRF留了后门。比如微服务之间互相调用,每个服务都暴露在内网,如果某个服务能被外网触发请求,那整个内网就相当于裸奔。我见过有些开发为了调试方便,直接把内网管理接口绑定在0.0.0.0上,结果就是任何人都能访问。这种问题不是靠一个安全工具能解决的,它需要从架构设计层面就考虑隔离和最小权限。

说实话,SSRF在OWASP Top 10里排不上号,但它带来的危害一点不比SQL注入小。因为它往往意味着内网边界被撕开了一道口子,后续的攻击路径就多了去了。你堵住了这个端口,他可能从另一个服务摸进去。最讽刺的是,很多企业直到被薅羊毛薅到亏钱,或者数据被拖走挂到暗网上,才回头排查自己那个“只是抓个网页”的小功能。

别指望靠一台WAF就能挡住所有SSRF。这玩意儿的核心问题在于,服务器发起请求的权限太大了。你要是真在乎安全,就该让服务器少管闲事——能不让它访问外部资源就别让它访问,必须访问时严格限制范围。毕竟,让服务器当个哑巴,比让它学会分辨谁在说谎要容易得多。

顶: 661踩: 4944