前言
今天与大家分享的是ssrf的绕过技巧,在未来的某一天,观众老爷们会不会有疑问,为啥我大部分发的都是概念性的东西,实战很少。其实这个问题很好回答,如果你们实战遇到问题了,可以去看看重楼学网安和徐长卿学网安,这两位都是很好的网安方面的博主,可能你们觉得我是在商业互吹,但我还是要说他们的帖子是有真东西的,确确实实能学到东西,而且很细致。
开玩笑没关系,但是切记言多必失。世间一个个文字,是有力量的。字眼组合成词,词汇串联成句,语句契合成文章。大道就在其中。--《剑来》
ssrf绕过技巧
点分割符号替换
在浏览器中可以使用不同的分割符号来代替域名中的 . 分割,可以使用 。(句号空格) 、 。(单句号) 、 .(点加空格) 来代替:
http://www。qq。com
http://www。qq。com
http://www.qq.com
本地回环地址
127.0.0.1,通常被称为本地回环地址(Loopback Address),指本机的虚拟接口,一些表示方法如下(ipv6的地址使用http访问需要加 [] ):
http://127.0.0.1 - 127.255.255.255
http://localhost
http://127.255.255.254
127.0.0.1 - 127.255.255.254
http://[::1]
http://127.1
http://127.0.1
http://0:80
127.0.0.1:
八进制:0177.0.0.1
十六进制:0x7f.0.0.1
十进制:2130706433
URL十六进制编码
可被浏览器正常识别,编码脚本:
利用网址缩短
https://www.985.so/
https://www.urlc.cn/
利用30x重定向
重定向的状态码:300.301.302.303.305.307.308
需要一个vps,把302转换的代码部署到vps上去访问,就可跳转到内网中
绕过url解析限制
第一种用@跳过 如127.0.0.1@evil.com (请求的还是evil.com)
第二种,302 需要vps,把302转换到代码部署到vps上,再去访问,就能跳转
虚拟服务器 eg 学校教务处,可以在公网上访问到,是因为学校机房有个vps,可以连接到公网
302跳转过程
SSRF中有个很重要的一点是请求可能会跟随302跳转,尝试利用这个来绕过对IP的检测访问到位于 127.0.0.1的flag.php吧
然后构造poc
再将poc防止公网web的服务器下
漏洞寻找
能够对外发起网络请求的地方,就可能存在 SSRF 漏洞
1、分享:通过URL地址分享网页内容 www.xxx.comshare=http://ww.baidu.com/xx.html
2、转码服务
3、在线翻译
4、图片加载与下载:通过URL地址加载或下载图片
5、图片、文章收藏功能
6、未公开的Api实现以及其它调用URL的功能
7、从URL关键字中寻找
inurl:?url=
inurl:?share=
inurl:?wap=
inurl:?src=
inurl:?source=
inurl:?target=
inurl:display=
inurl:sourceURL=
inurl:imageURL=
inurl:domain=
8.设置网站分辨率
ssrf漏洞防御方案
1. 禁止跳转;
2. 过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果 web 应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准;
3. 禁用不需要的协议,仅仅允许 http 和 https 请求。可以防止类似于 file://, gopher://, ftp:// 等引起的问题;
4. 设置 URL 白名单或者限制内网 IP(使用 gethostbyname()判断是否为内网 IP);
5. 限制请求的端口为 http 常用的端口,比如 80、443、8080、8090;
6. 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态;