协调披露时间表
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-36144
https://securitylab.github.com/advisories/GHSL-2024-009_Redash/
原文始发于微信公众号(Ots安全):GHSL-2024-009:Redash 中的 LDAP 注入 - CVE-2020-36144
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论