ssrf原理
SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。从而被利用来达到访问内网的目的等
ssrf利用
我们可以通过ssrf达到以下目的:
1.对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
2.攻击运行在内网或本地的应用程序。
3.对内网Web应用进行指纹识别,识别企业内部的资产信息。
4.攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击(比如struts2、SQli等)。
5.利用file协议读取本地文件等。
ssrf绕过
1.利用@嵌入URL
http://baidu.com@www.baidu.com/与http://www.baidu.com/请求时是相同的
2.利用#嵌入URL
http://www.baidu.com#127.0.0.1与http://www.baidu.com相同
3.使用URL编码字符干扰URL解析;
IP地址的进制转换,如:十进制转换为16进制
4..URL跳转绕过:http://www.hackersb.cn/redirect.php?url=http://192.168.0.1/
5.关于ssrf黑名单绕过:
思路:对于黑名单绕过,我们只需要不出现黑名单中的词就可以了
于是我们可以通过url编码,ip进制转换,等价替换,各种各样的方法去尝试,看有没有黑名单遗漏的单词,
6.关于ssrf白名单绕过:
思路:包含特定字符,绕后通过截断,替换等达到目的
在拼接url时%00可以将语句截断,不执行后面的(php语法)。
ssrf常见协议利用
1.file协议:
通过文件地址来达到任意文件读取,如:
File:///flag
2.dict协议:
通过bp抓包,爆破端口号,可以获取开放端口信息,如:
Dict://127.0.0.1:&80&
获取redis配置信息,如:
Dict://127.0.0.1:80/info
3.Gopher协议:
Gopher是一个可以信息查找的协议,格式为:
Gopher://<host>:<port>_<TCP数据流>
gopher的端口为70,
_:因为url后面的一个字符会被过滤所以多加一个任意字符
<TCP数据流>:可以是get和post请求,需要进行url全编码。
Get:包含get,host
Post:包含post,host,data
其中换行用%0d%0a隔开
结尾要加%0d%0a表示结束