SSRF漏洞(服务器端请求伪造):是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统,正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统,利用漏洞可以发起网络请求来攻击内网服务
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制,比如从指定URL地址获取网页文本内容,加载指定地址的图片以及下载等等,利用的是服务端的请求伪造
SSRF是利用存在缺陷的web应用作为代理攻击远程和本地的服务器
SSRF是要目标网站的内部系统
SSRF攻击结果由涵数本身来决定,涵数功能越强大,攻击成功的机会就越高,如PHP的:curl_init、file_get_contents、fsockopen
利用解析URL所出现的问题比如:http://www.xxx.com@192.168.0.1/
改写成 8进制、16进制等,IP地址是一个32位的二进制数,通常被分割为4个8位二进制数,通常用“点分十进制”表示成(a.b.c.d)的形式,所以IP地址的每一段可以用其他进制来转换
比如将 http://192.168.66.133 转换为8进制:http://0300.0250.0102.0205
比如将 http://192.168.66.133 转换为16进制:http://0xc0.0xa8.0x42.0x85
比如将 http://127.0.0.1 转换为8进制:http://0177.0000.0000.0001
比如将 http://127.0.0.1 转换为16进制:http://0x7f.0x00.0x00.0x01
前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端,这关支持的协议挺多的:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP
读取文件:
Linux系统读取
file:///etc/passwd
我在C盘下建立了一个ssrf文本文件,就读取这个文本 我用的 file:///C://ssrf.txt
根据banner返回,错误提示,时间延迟扫描端口:
http://192.168.1.15:22
这里探测 3306 是否开启,有结果就是开启了,没结果换换协议换协议还没有就是没探测出来或则没开端口
读取PHP文件的源码:
php://filter/read=convert.base64-encode/resource=ssrf.php