加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

SSRF漏洞学习实验环境推荐及过程记录

发布时间:2019-06-18 00:12:46 所属栏目:建站 来源:Seas0n
导读:在网上找到一个学习 SSRF 的环境,SSRF-LABS 有一个好看又简洁的界面,提供了最基本的 REST API 和客户端 WebHook 功能用于 SSRF 测试。前面只是大概的介绍,知道就好,不用花费过多精力了解。 SSRF 介绍 服务端请求伪造,用户通过 WEB 访问/上传/发出请求
副标题[/!--empirenews.page--]

在网上找到一个学习 SSRF 的环境,SSRF-LABS 有一个好看又简洁的界面,提供了最基本的 REST API 和客户端 WebHook 功能用于 SSRF 测试。前面只是大概的介绍,知道就好,不用花费过多精力了解。

SSRF 介绍

服务端请求伪造,用户通过 WEB 访问/上传/发出请求,绕过服务器防火墙,获取服务器及其内网信息。SSRF 可以说是一个媒介,结合服务器中的服务,常常可以形成一条完整的攻击链。

SSRF漏洞学习实验环境推荐及过程记录

环境准备

我的环境是 Ubuntu16.04,如果使用其他的系统,可能安装 docker 的方法不同,可以到网上搜一下。下面为安装 docker 的步骤。

  1. $ curl -sSL https://get.docker.com/ | sh #脚本安装docker 
  2. $ apt install docker-compose #安装docker compose 

先按照下面的命令把 basic 这一关搭建好,其他的基本相同。在创建容器的时候避免出冲突,端口 8999 在设置要注意,避免与本地已开启端口产生冲突。

  1. $ git clone https://github.com/m6a-UdS/ssrf-lab.git 
  2. $ cd ~/ssrf-lab/basics #进入basics文件夹 
  3. $ docker build -t ssrf-lab/basic . #构建镜像 
  4. $ docker run -d -p 8999:80 ssrf-lab/basic #创建容器 
  5. $ docker ps #查看ssrf-lab/basic容器编号 
  6. $ docker stop [容器编号] #关闭容器 

在 Advances 系列的文件夹还有 ctf 中没有 dockerfile 文件,只有 docker-compose.yml 文件,这时候我们就要在构建镜像的时候就换 docker-compose 来创建镜像并开启容器了。

  1. $ cd ~/ssrf-lab/advanced1 # 进入advanced1目录下 
  2. $ docker-compose up -d #开启容器  
  3. $ docker-compose down #关闭容器 

在开启容器的时候的时候出了问题,因为在官网找不到 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进行测试。

SSRF漏洞学习实验环境推荐及过程记录

发现数据显示出来了,说明这里没有对内网 IP 进行限制。

SSRF漏洞学习实验环境推荐及过程记录

为了进一步进行测试,我们来了解一下 URL 的结构。

  1. scheme://user:pass@host:port/path?query=value#fragment 

从结构中我们可以看出不同的 SSRF 的利用姿势,有协议、URL 绕过等等。这一关就尝试从协议入手,用 file 协议代替 http 协议或者 https 协议。在测试点输入file:///etc/passwd我们可以得到用户文件,我们也可以通过这样的方式获得其他文件。

SSRF漏洞学习实验环境推荐及过程记录

成功之后我们可以通过深挖配置文件和源代码进行我们进一步的渗透,比如获得数据库的用户凭证。这里成功实现是因为URL没有经过严格的过滤,更准确地说应该是完全没经过过滤,下一关不会这么简单了。

SSRF 协议中的利用

看了很多教程都是结合 Redis 服务一起讲的,为了方便介绍下面几个协议,我们先在 ssrf-basics 容器里面安装该服务。

  1. $ docker ps #查看容器编号 
  2. $ docker exec -it [ssrf-lab/basics容器编号] /bin/bash #进入容器 
  3. $ apt-get install redis-server # 安装redis服务 
  4. $ redis-server #开启redis服务 

这一关可以利用协议收集信息及反弹 shell,都是没用协议白名单的锅,导致多个协议利用起来毫无阻力。

1. file

上面尝试的过的file:///etc/passwd就是利用了file协议,利用这个协议可以读取主机内任意文件。

2. dict

利用dict协议,dict://127.0.0.1:6379/info可获取本地redis服务配置信息。

SSRF漏洞学习实验环境推荐及过程记录

还可以用dict://127.0.0.1:6379/KEYS *获取 redis 存储的内容。

SSRF漏洞学习实验环境推荐及过程记录

Gopher 协议

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读