SSRF漏洞学习实验环境推荐及过程记录
副标题[/!--empirenews.page--]
在网上找到一个学习 SSRF 的环境,SSRF-LABS 有一个好看又简洁的界面,提供了最基本的 REST API 和客户端 WebHook 功能用于 SSRF 测试。前面只是大概的介绍,知道就好,不用花费过多精力了解。 SSRF 介绍 服务端请求伪造,用户通过 WEB 访问/上传/发出请求,绕过服务器防火墙,获取服务器及其内网信息。SSRF 可以说是一个媒介,结合服务器中的服务,常常可以形成一条完整的攻击链。 环境准备 我的环境是 Ubuntu16.04,如果使用其他的系统,可能安装 docker 的方法不同,可以到网上搜一下。下面为安装 docker 的步骤。
先按照下面的命令把 basic 这一关搭建好,其他的基本相同。在创建容器的时候避免出冲突,端口 8999 在设置要注意,避免与本地已开启端口产生冲突。
在 Advances 系列的文件夹还有 ctf 中没有 dockerfile 文件,只有 docker-compose.yml 文件,这时候我们就要在构建镜像的时候就换 docker-compose 来创建镜像并开启容器了。
在开启容器的时候的时候出了问题,因为在官网找不到 urllib2 的下载路径,编辑 ~/ssrf-lab/advanced2/flask-webserver 文件,去掉其中的 urllib2。 Part 1:basic 实验过程 打开页面,OUTGOING WEBHOOK 部分输入的https://yourhandler.io/events是有 REST API 监听的需要测试项目,在 SEE THE RESULT 的部分会显示请求响应的结果和状态码。输入 https://yourhandler.io/events的位置就可以作为一个测试点。 我们先用http://127.0.0.1进行测试。 发现数据显示出来了,说明这里没有对内网 IP 进行限制。 为了进一步进行测试,我们来了解一下 URL 的结构。
从结构中我们可以看出不同的 SSRF 的利用姿势,有协议、URL 绕过等等。这一关就尝试从协议入手,用 file 协议代替 http 协议或者 https 协议。在测试点输入file:///etc/passwd我们可以得到用户文件,我们也可以通过这样的方式获得其他文件。 成功之后我们可以通过深挖配置文件和源代码进行我们进一步的渗透,比如获得数据库的用户凭证。这里成功实现是因为URL没有经过严格的过滤,更准确地说应该是完全没经过过滤,下一关不会这么简单了。 SSRF 协议中的利用 看了很多教程都是结合 Redis 服务一起讲的,为了方便介绍下面几个协议,我们先在 ssrf-basics 容器里面安装该服务。
这一关可以利用协议收集信息及反弹 shell,都是没用协议白名单的锅,导致多个协议利用起来毫无阻力。 1. file 上面尝试的过的file:///etc/passwd就是利用了file协议,利用这个协议可以读取主机内任意文件。 2. dict 利用dict协议,dict://127.0.0.1:6379/info可获取本地redis服务配置信息。 还可以用dict://127.0.0.1:6379/KEYS *获取 redis 存储的内容。 Gopher 协议 (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |