SSRF漏洞
SSRF意为服务端请求伪造(Server-Side Request Forge)。攻击者利用SSRF漏洞通过服务器发起伪造请求,这样就可以访问内网的数据,进行内网信息探测或者内网漏洞利用。
SSRF漏洞形成的原因是:应用程序存在可以从其他服务器获取数据的功能,但是对服务器的地址并没有做严格的过滤,导致应用程序可以访问任意的URL链接。攻击者通过精心构造URL链接,可以利用SSRF漏洞进行以下攻击:
- 通过服务器获取内网主机、端口和banner信息。
- 对内网的应用程序进行攻击,例如Redis、JBoss等。
- 利用file://伪协议读取文件。
- 可以攻击内网程序,造成缓冲区溢出。
端口探测
url参数没有经过严格过滤,因此攻击者就可以构造任意的URL以利用SSRF漏洞。例如,可以通过http://127.0.0.1:3306来探测此服务器是否开启3306端口。
输入以下测试语句:
http://192.168.1.1/ssrf/1.php?url=http://127.0.0.1:3306
发现返回数据库的版本信息,就说明开放了3306端口,若没有数据返回或者返回时间延长较大,就说明3306端口没有开放。
读取文件
通过file://伪协议尝试读取常见的文件,例如/etc/passwd文件
输入以下测试语句:
http://192.168.1.1/ssrf/1.php?url=file:///etc/passwd
SSRF漏洞修复
- 过滤请求协议,只允许http或者https开头的协议
- 严格限制访问的IP地址,只允许访问特定IP地址
- 限制访问的端口,只允许访问特定的端口
- 设置统一的错误消息,防止造成消息泄露
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?