SSRF
利用一个可以发起网络请求的服务当跳板来攻击其他服务。
常见例子:通过web interface请求受保护网络内的资源。
SSRF能做什么
- 扫描内部网络
- 向内部任意主机的任意端口发送精心构造的数据包
- DOS(请求大文件,始终保持连接)
- 暴力穷举。
但是漏洞不能百分百利用,有两种可能无法利用漏洞。
- 服务端开启OpenSSL无法进行交互利用。
- 服务端需要鉴权信息(cookies&user:pass)不能完美利用。
如何找到SSRF漏洞:
- 能够对外发起网络请求的地方就可能存在SSRF漏洞。
- 从远程服务器请求资源。
- 数据库内置功能
- webmail收取其他邮箱邮件,
- 文件处理,编码处理,属性信息处理。
SSRF形成的原因大都由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤和限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片、下载等等。
html、php、asp、jsp具有这些文件后缀的文件通常储存在web服务器中,而且web服务器都具有独立ip。
网站访问大致步骤:
用户在地址栏输入网址 --> 向目标网站发送请求 --> 目标网站接受请求并在服务器端验证请求是否合法,然后返回用户所需要的页面 -->用户接收页面并在浏览器中显示。
【此处的请求默认为www.xxx.com/a.php?image=(地址)】
那么产生SSRF漏洞的环节在哪里呢?目标网站接受请求后在服务器端验证请求是否合法。
产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致可以从其他服务器的获取一定量的数据
例如:
www.xxx.com/a.php?image=http://www.abc.com/1.jpg
如果我们将http://www.abc.com/1.jpg换为与该服务器相连的内网服务器地址会产生什么效果呢?
如果存在该内网地址就会返回1xx 2xx 之类的状态码,不存在就会其他的状态码
终极简析: SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有发现在这个请求是不合法的,然后服务器以他的身份来访问其他服务器的资源。
攻击者利用ssrf可以实现的攻击主要有5种:
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
2.攻击运行在内网或本地的应用程序(比如溢出);
3.对内网web应用进行指纹识别,通过访问默认文件实现;
4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
5.利用file协议读取本地文件等。
SSRF常见绕过技巧:
1.用@进行绕过,例如http://example.com@127.0.0.1
2.用localhost进行绕过,例如:http://127.0.0.1:80
3.利用短网址进行绕过。
4. 利用特殊域名进行绕过。例如127.0.0.1.xip.io(实际访问的还是1270.0.1)
5. DNS解析绕过。
利用Enclosed Alphanumerics(封闭式字母数字)例如
6.ⓐⓐⓐ.ⓒⓞⓜ=aaa.com
Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ
Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ
ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ
ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ
③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯
⑱ ⑲ ⑳
7. 利用。绕过 例如:http://127。0。0。1
8. 使用进制转换进行绕过。
来源:CSDN
作者:花自飘零丶水自流
链接:https://blog.csdn.net/jpygx123/article/details/83019652