LOADING

加载过慢请开启缓存 浏览器默认开启

2024/6/5

国光ssrf靶场打穿内网

环境搭建:

git clone https://github.com/Duoduo-chino/ssrf_vul.git
cd ssrf_vul
docekr-compose up -d

image-20240605110832962

image-20240605111114669

靶场网络拓扑图:

total

先理清一下攻击流程,172.72.23.21 这个服务器的 Web 80 端口存在 SSRF 漏洞,并且 80 端口映射到了公网的 8080,此时攻击者通过这个 8080 端口可以借助 SSRF 漏洞发起对 172 目标内网的探测和攻击。

复现

SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

访问docker下的ip:8080端口,能够对外网发起请求的地方,就有可能存在SSRF。看一下这个站点的正常功能,是一个站点快照获取。

image-20240605112023787

先尝试获取外网 URL 试试看,测试一下经典的 百度 robots.txt:

image-20240605111919526

172.72.21 -SSRF获取本地信息

利用file协议尝试读取文件:

image-20240605112246372

dict协议探测内网端口

发现内网的地址为172.72.23.21,使用dict协议进行内网探测,IP跑完全部,端口就跑常见的

image-20240605115721481

image-20240605113146268

image-20240605113156096

探测结果:

172.72.23.21 80
172.72.23.22 80
172.72.23.23 80
172.72.23.23 3306
172.72.23.24 80
172.72.23.25 80
172.72.23.26 8080
172.72.23.27 6379
172.72.23.28 6379
172.72.23.29 3306
dict指纹识别

通过dict返回的指纹信息判断开启的服务,仔细查看可以发现开启了未授权Redis服务得回来的信息是这样的,一般在6379端口存在Redis服务。

image-20240605122244270

而有授权的Redis服务是这样子(由于我dict没有扫到这个redis,所以直接用其他师傅的)

img

172.72.23.22 - 代码注入

由于我用自己的kali docker下来的,所以可以直接访问,如果想其他主机也访问,可以开一个socket代理

  • index.php

一个正常的提示页面,啥都没有:

image-20240605144609116

  • phpinfo.php

凑数勉强算是一个敏感文件吧:

image-20240605144642731

  • shell.php

一个经典的 system 一句话木马:

image-20240605144711952

SSRF 之目录扫描

cpkkcb/fuzzDicts: 渗透测试路径字典,爆破字典。内容来自互联网和实战积累。 (github.com)

如果想要利用 SSRF 漏洞对内网 Web 资产进行目录扫描的话,使用传统的 dirsearch 等工具就不是很方便了,这种场景下使用的是 Burpsuite 抓包,然后导入字典批量遍历路径参数,请求包如下:

image-20240605172531465