web漏洞-SSRF服务端请求伪造

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

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 漏洞。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值