SSRF
0x00-引言
寻找大师, 跟随大师, 模仿大师, 洞察大师, 成为大师——一位不知道名字的大佬
《Web安全攻防:渗透测试实战指南》-MS08067
0x01-漏洞描述
SSRF:服务端请求伪造(Server Side Request Forgery),攻击者构造请求,服务端执行请求的安全漏洞。服务端执行请求,可以请求到与服务端相连接的内部系统。
0x02-漏洞原理
SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能并没有对目标地址做过滤与限制。攻击者操作服务端从指定URL获取网页文本内容,加载指定的图片,利用的是服务端请求伪造。SSRF利用存在缺陷的web应用作为代理攻击远程和本地的服务器。
- 对外网、服务器所在的内网、本地进行端口扫描,获取一些服务的banner信息
- 攻击运行在内网或本地的应用程序
- 对内网Web应用进行指纹识别,识别企业内部的资产信息
- 攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击
- 利用file协议读取本地文件
0x03-漏洞演示
01-MS08067靶场演示
打开靶场
设置URL-页面跳转-存在SSRF
探测内网端口
读取本机文件
02-MS08067靶场代码分析
<?php
function curl($url){
//curl 就是模拟浏览器请求的,比如获取获取远程的网页
$ch = curl_init();//初始化一个curl会话
curl_setopt($ch, CURLOPT_URL, $url);//设置抓取的url
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_exec($ch);//运行curl,请求网页
curl_close($ch);//关闭curl会话
}
$url = $_GET['url'];//从浏览器中传入地址
curl($url); //传入curl函数中
程序获取URL,通过curl_init()初始化,之后把URL带入curl_setopt()中,
通过curl_exec()执行,没有过滤机制
0x04-SSRF修复建议
- 限制请求的协议,只允许http/https
- 限制访问内网IP,通常过滤IP地址
- 对返回数据包进行校验,涉及敏感信息不返回
0x05-参考
《web安全攻防:渗透测试实战指南》