★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
1、SSRF简介
SSRF全称:Server-Side Request Forgery,服务器端请求伪造,是指攻击者能够从易受攻击的指攻击者能够从易受攻击的。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。利用一个可以发起网络请求的服务,当做跳板来攻击其它服务。
2、SSRF成因
大部分是由于服务端提供了从其他服务器应用获取数据的功能但没有对目标地址做过滤与限制,利用存在缺陷的web应用作为代理去攻击远程和本地的服务器。
图片来源网络
3、SSRF原理
正常用户访问网站的流程:
输入网站URL --> 发送请求–> 服务器接受请求(没有过滤),并处理 -->返回用户
SRF漏洞:
就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法,然后服务器以他的身份来访问其他服务器的资源。
图片来源网络
在PHP中使用下面函数不当会导致SSRF:
# 这些函数可以通过网络协议访问目标服务器上的资源
file_get_ contents()
fsockopen()
curl_exec()
4、SSRF危害和漏洞挖掘
4.1、SSRF危害
1、可以对服务器所在内网、本地进行端口扫描,获取一些服务的信息等
2、目标网站本地敏感数据的读取
3、内外网主机应用程序漏洞的利用
4、内外网Web站点漏洞的利用
4.2、漏洞挖掘
1.在任何可以导入链接的地方都可以试试是否存在SSRF漏洞;
2.如果存在SSRF漏洞,看一看可不可以利用file协议,可以利用file协议读取文件;
3.如果只能依靠返回信息,可以利用脚本来扫描内网的存活主机和端口扫描,做一个内网的信息收集。如果扫描到一些能利用的端口漏洞,就可以利用服务器做跳板对其进行利用,比如redis服务。
5、SSRF防御及绕过
5.1、SSRF防御5个思路
1、过滤返回信息,验证远程服务器对请求的相应,是比较容易的方法。如果 Web 应用获取某种类型的文件,可以在把返回结果展示给用户之前先验证返回信息是否符合标准。
2、统一错误信息,避免用户根据错误信息来判断远程服务器端口状态。
3、黑名单内网 IP,避免应用被用来获取内网数据,攻击内网。
4、禁用不需要的协议。仅仅允许HTTP和HTTPS请求。可以防止类似于file://、ftp://等引起的问题。
5.2、SSRF绕过技巧
1、利用@符号
http://example.com@127.0.0.1
2、添加端口号
http://127.0.0.1:8080
3、利用短地址
http://dwz.cn/11SMa
4、利用特殊域名
xip.io
5、利用封闭式字母数字
ⓔ ⓧⓐ ⓜⓟ ⓛⓔ .ⓒ ⓞⓜ>>> example.com
清单:
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛
⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴
⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ ℗ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ
Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ
ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓿
6、利用句号 。或利用 [::] 绕过
http://127。0。0。1
7、利用进制转换
http://2130706433/
6、pikachu靶场实验
6.0、环境准备
靶场环境搭建详参考《靶场环境搭建【XP、pikachu、dvwa、sqli-labs】》
6.1、SSRF(curl)
先点:累了吧,来读一首诗吧
,然后看到url地址有变化有拼接了?url
把url后尝试修改为www.baidu.com
在小皮WWW
目录下创建一个test.txt
,里面添加写SSRF test1
,使用伪协议file://
来读取
6.2、SSRF(file_get_content)
先点:反正都读了,那就在来一首吧
,然后看到url地址有变化有拼接了?file=
把file后尝试修改为www.baidu.com
在小皮WWW
目录下创建一个test.txt
,里面添加写SSRF test1
,使用伪协议file://
来读取
7、下期内容预告
下期内容分享XXE相关内容,敬请关注我的公众号:大象只为你,持续更新中…