GHSL-2024-009:Redash 中的 LDAP 注入 - CVE-2020-36144

admin 2024年5月24日22:07:02评论6 views字数 2101阅读7分0秒阅读模式

GHSL-2024-009:Redash 中的 LDAP 注入 - CVE-2020-36144

协调披露时间表

2024-02-01:报告已发送给维护人员。

2024-05-18:在此提交中修复。

2024-05-18:发布通告并发布公告。修复将在下一版本中部署。

概括

Redash 存在 LDAP 注入漏洞,可能允许密码喷洒。

测试版本

v10.1.0

细节

LDAP 注入auth_ldap_user( GHSL-2024-009)

从 v3 开始,Redash支持 LDAP/AD 身份验证。用户输入的电子邮件用于格式化 LDAP 过滤器查询字符串[1],允许未经身份验证的攻击者更改过滤器查询。

def auth_ldap_user(username, password):    server = Server(settings.LDAP_HOST_URL, use_ssl=settings.LDAP_SSL)    if settings.LDAP_BIND_DN is not None:        conn = Connection(            server,            settings.LDAP_BIND_DN,            password=settings.LDAP_BIND_DN_PASSWORD,            authentication=settings.LDAP_AUTH_METHOD,            auto_bind=True,        )    else:        conn = Connection(server, auto_bind=True)    conn.search(        settings.LDAP_SEARCH_DN,        settings.LDAP_SEARCH_TEMPLATE % {"username": username}, # [1]        attributes=[settings.LDAP_DISPLAY_NAME_KEY, settings.LDAP_EMAIL_KEY],    )    if len(conn.entries) == 0:        return None    user = conn.entries[0] # [2]    if not conn.rebind(user=user.entry_dn, password=password):        return None    return user

影响

LDAP 身份验证默认是禁用的,必须由 Redash 管理员启用。

另一个限制因素是默认值为settings.LDAP_SEARCH_TEMPLATE(cn=%(username)s)并且ldap3Redash 当前使用的库对括号的数量非常严格,并且只允许一个根查询对象。即,导致查询过滤器具有不匹配的括号或多个根查询对象的常见 LDAP 注入有效负载将不被接受。

尽管如此,settings.LDAP_SEARCH_TEMPLATE Redash 管理员仍可对其进行配置,并且 Redash 提供了有关如何自定义它以与特定 LDAP 提供程序集成的说明。如果将设置设置为以逻辑 AND&或逻辑 OR|运算符开头的 LDAP 过滤器(来自流行的 LDAP 过滤器列表),例如(&(objectClass=inetOrgPerson)(userPassword=*)(cn=%(username)s))仅缩小到具有密码的用户,则注入允许创建将通过ldap3检查的有效过滤器查询。

因此,可以将其用于多种password spray攻击 - 通过单个请求强行破解所有用户的密码。概念验证如下:

  • 将 LDAP 设置到免费的 LDAP 服务器。

  • 使用用户名*)(userPassword={SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=和密码发出登录请求password。(这是攻击者试图猜测的W6ph5Mm5Pz8GgiULbPgzG37mj9g= base64 编码的 SHA 值。)password

settings.LDAP_HOST_URL = "ldap.forumsys.com:389"    settings.LDAP_BIND_DN = "cn=read-only-admin,dc=example,dc=com"settings.LDAP_BIND_DN_PASSWORD = "password"settings.LDAP_SEARCH_DN = "dc=example,dc=com"settings.LDAP_SEARCH_TEMPLATE = "(&(objectClass=inetOrgPerson)(userPassword=*)(cn=%(username)s))"auth_ldap_user("*)(userPassword={SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=", "password")

由于在 [2] Redash 总是选择第一个找到的用户,第二个请求可能会对!找到的用户名注入逻辑否定,以查找所有具有相同密码的其他用户。

CVE编号

  • CVE-2020-36144

GHSL-2024-009: LDAP injection in Redash - CVE-2020-36144https://securitylab.github.com/advisories/GHSL-2024-009_Redash/

原文始发于微信公众号(Ots安全):GHSL-2024-009:Redash 中的 LDAP 注入 - CVE-2020-36144

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月24日22:07:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   GHSL-2024-009:Redash 中的 LDAP 注入 - CVE-2020-36144https://cn-sec.com/archives/2774730.html

发表评论

匿名网友 填写信息