以前只是简单的了解SSRF,并没有进行深入的学习,经过两天的研究与实现,将收获总结博客中。
什么是SSRF漏洞?
利用存在缺陷的Web应用做为代理攻击远程或本地的服务器,这种形式的攻击被称为SSRF。
SSRF产生原理
通常存在于需要请求外部内容的逻辑中,比如本地化网络图片、XML解析时的外部实体注入、软件的离线下载,链接分享或者title,在线网页翻译,在线代理浏览器等。当攻击者传入一个未经验证的URL,后端代码直接请求这个URL,将会造成SSRF漏洞。
SSRF的危害
- 内网端口扫描
- 内网Web应用指纹识别
- 通过访问内网Web应用robots.txt等方式辨别cms的类型及版本然后根据公开的漏洞去攻击内网服务器
- 读取本地文件
- 读取远程文件
- 攻击内网其他应用
SSRF挖掘
- 社交分享功能
- 转码服务
- 在线翻译
- 在线代理浏览器
- 图片加载/下载
- 图片/文章收藏功能
- API或调用外部URL的功能
URL的构成
要谈SSRF的绕过首先就要对URL的构成有一定的了解。
http://admin:123456@wkh.dropsec.xyz:80/xx/test.php?id=1
- 第一部分 协议
- admin:123456访问所带的用户信息
- 第三部分 域名
- 第四部分 端口号
- 第五部分 目录及文件
- 第六部分 参数
SSRF绕过技巧
- IP地址转换绕过
- 数字地址(十进制):127.0.0.1->2130706433
- 十六进制:127.0.0.1->0x7F000001或0x7F.00.00.01或0x7F.0x00.0x00.0x01
- 八进制: 127.0.0.1->0177.0.0.1或0177.00.00.01
- 省略写法:127.0.0.1->127.1
- URL跳转绕过
- 在自己的网站上放一个重定向到127.0.0.1等内网地址的文件,然后访问
- 短网址绕过
- 随便找一个短网址转换网站即可转换成短网址,
如www.baidu.com.index.php->http://0x9.me/H27bC
- 随便找一个短网址转换网站即可转换成短网址,
- xip.io绕过
- 127.0.0.1.xip.io
- www.127.0.0.1.xip.io
- xxx.127.0.0.1.xip.io
- fuzz.xxx.127.0.0.1.xip.io
- 使用@绕过
SSRF防御
以PHP为例
- 1、禁止跳转(请求时设置redirect=false)
- 2、使用gethostname()判断是否为内网IP
gethostnane获取到的是各种形式IP转换后的真实IP。