漏洞介绍
SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,利用服务器端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务器端发起的,所以服务器能请求到与自身相连而外网隔离的内部系统)。
靶场推荐:
https://github.com/m6a-UdS/ssrf-lab
缺陷代码参考:
# 模拟SSRF,使用curl发起网络请求后返回客户端,请求加载文件
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET[‘url’]);
#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
#curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
curl_exec($ch);
curl_close($ch);
?>
Example:
GET /index.php?url=http://10.1.1.1/ HTTP/1.1
Host: example.com
攻击者不能直接访问10.1.1.1,但可以通过http://example.com 的服务器去访问 http://10.1.1.1;这就是SSRF漏洞
漏洞原理
SSRF漏洞的形成大多是由于服务端提供了从其他服务器应用发起请求获取数据的功能,但没有对目标地址做过滤与限制;攻击者可以任意修改获取数据的地址,向指定的URL地址发起请求,获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。
简而言之:SSRF利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。
漏洞危害
SSRF的最大的危害在于穿透了网络边界,但具体能做到哪种程度还需要根据业务环境来判断
[!NOTE]
例如我们在SSRF的利用中,如果需要更深一步扩展,第一反应通常是去攻击可利用的redis或者memcache等内网服务拿shell,但需要注意的是操作redis
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/31565