一、介绍SSRF漏洞
SSRF是Server-Side Request Forgery 的简称,是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问到的内部系统。
二、SSRF漏洞利用的相关协议
1、dict协议:常用来探测内网端口开放情况,但不是所有的端口都可以被探测。
2、http或https协议:用来探测内网主机存活。
3、file协议:主要用来访问本地计算机中的文件。
4、gopher协议:是ssrf利用中最强大的一个协议。
三、例题演示
1、内网访问
http://challenge-dd486253875424cc.sandbox.ctfhub.com:10800/
题目要求:尝试访问位于127.0.0.1的flag.php吧
打开题目后,可以看到在网址栏里有一个传url地址的地方
访问内网,可以使用http协议,http://127.0.0.1/flag.php
这样就可以得到flag了
2、伪协议读文件
http://challenge-e416bc5c0dd13a41.sandbox.ctfhub.com:10800/
题目要求:尝试去读取一下Web目录下的flag.php吧
打开题目后,看到与上一题类似的页面
根据题目要求,是要访问计算机的内部文件,所以使用file协议。
这里要注意的是,题目中的Web目录一般指的是/var/www/html/
访问后我们发现出现了三个奇怪的问号,这时我们Ctrl+U检查一下页面的源代码
这样就得到了flag
3、BYPASS系列
(1)url bypass
http://challenge-137892ebe653bbe3.sandbox.ctfhub.com:10800/
题目要求:请求的URL中必须包含http://notfound.ctfhub.com,来尝试利用URL的一些特殊地方绕过这个限制吧
打开题目后,看到如下页面,要求请求的URL中必须包含http://notfound.ctfhub.com,考虑绕过
比如用@来绕过
这样就得到了flag
(2)数字ip bypass
http://challenge-44bb66f5073c3ee2.sandbox.ctfhub.com:10800/
题目要求:这次ban掉了127以及172.不能使用点分十进制的IP了。但是又要访问127.0.0.1。该怎么办呢
打开题目后,看到如下界面
不能使用十进制,可以考虑更换为十六进制或八进制,或者直接将其转换为一串数字,都可以达到一样的效果
这里以八进制为例
这样就得到了flag