目录
SSRF服务端请求伪造
一、定义
SSRF(Server-Side Request Forgery)服务端请求为伪造,SSRF是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
如果一个web应用会将外部输入的参数作为URL,然后访问这个URL,那么攻击者就可以构造特定的参数值让服务端访问制定的URL,该访问行为是服务器程序预期之外的,这种攻击叫做SSRF攻击,web应用中的这种漏洞叫做SSRF漏洞。这里输入的参数不一定是完整的URL,也可以是域名、IP地址、端口号等,攻击者能伪造这些值,从而使服务端访问预期外的内容。
eg:
有些提供翻译服务的网站允许用户提交一个网页的URL,然后对整个网页进行翻译,再返回翻译后的结果。
伪代码:
<?php
$content = file_get_contents($_GET['url']);
echo translate($content);
?>
由于服务端的翻译引擎必须访问网页的URL获取原始内容,如果攻击者构造特定的URL,就可以让服务端作为代理去访问它,并且获取访问的结果。
类似的场景有很多
比如:
1.web应用需要调用不同的外部接口,让客户端提交接口的地址;
2.在一些允许用户提交一个图片URL作为头像的应用种,web应用需要拉去这个图片并裁剪,这些场景都有可能存在SSRF漏洞。
url link探测内网信息:
Web 应用一般都有自己的内网环境,它与外网是隔离的,攻击者无法直接访问内网服务但是通过Web应用的SSRF 漏洞,攻击者可以访问内网服务或者对内网应用发起攻击,这是常见的SSRF攻击方式。
例如:
/translate.php?url=http://192.168.1.100:8080/
这种攻击与之前讲的远程文件包含有点像,只不过远程文件包含指的是服务端应用加载和执行远程脚本,实际上远程文件包含漏洞也是 SSRF 漏洞。此外,存在 SSRF 漏洞的应用如果使用 fle://协议,攻击者也能读取服务器上的本地文件,从而导致敏感信息泄露
比如:
/translate.php?url=file:///etc/passwd
在PHP中,除了fle_get_contents函数,其他的网络库也能产生 SSRF 漏洞。

本文详细解释了SSRF漏洞的定义、常见成因、漏洞探测方法、利用实例,以及如何通过防御策略来保护web应用,特别关注了SSRF如何突破内网安全。
最低0.47元/天 解锁文章
1864

被折叠的 条评论
为什么被折叠?



