如何巧妙构建“LDAPS”服务器利用JNDI注入

💡 原文中文,约4300字,阅读约需11分钟。
📝

内容提要

这篇文章介绍了如何使用ldaps进行JNDI注入的漏洞探测。ldaps是将普通的LDAP协议通信过程包裹一层TLS,可以通过CoNote等工具进行搭建LDAPS服务器。文章还提到了Opportunistic TLS和LDAPS两种安全传输方式,并介绍了利用JNDInjector等工具建立恶意ldaps服务器的方法。最后演示了利用JNDInjector成功执行命令的过程。

🎯

关键要点

  • ldaps是将LDAP协议通信过程包裹一层TLS的安全传输方式。

  • CoNote工具可以搭建LDAPS服务器,支持JNDI注入漏洞探测。

  • JNDI注入过程中,Java根据URL的scheme判断使用的包,ldaps由ldapURLContextFactory处理。

  • RFC4510定义了Opportunistic TLS和LDAPS两种安全传输方式。

  • Opportunistic TLS在明文通信中找机会升级为TLS通信,LDAPS则在连接时直接使用TLS。

  • CoNote支持ldaps日志功能,可以探测JNDI注入漏洞的存在。

  • 探测JNDI注入不受Java版本影响,但后续命令执行可能受限于Java版本。

  • 可以使用JNDInjector等工具生成恶意ldaps URL进行漏洞利用。

  • 可以通过编写TLS反向代理将ldaps请求转发给JNDInjector。

  • 实现TLS端口转发的代码示例提供了基本的TLS代理功能。

  • 利用JNDInjector选择利用链和命令,结合TLS代理实现漏洞利用。

延伸问答

ldaps是什么,它与LDAP有什么区别?

ldaps是将LDAP协议通信过程包裹一层TLS的安全传输方式,区别在于ldaps在连接时直接使用TLS,而LDAP则是明文通信。

如何使用CoNote搭建LDAPS服务器?

可以通过CoNote中的功能生成或绑定自定义域名,并在LDAP日志页面生成ldaps URL进行探测。

JNDI注入漏洞的探测是否受Java版本影响?

探测JNDI注入漏洞不受Java版本影响,但后续命令执行可能受限于Java版本。

如何利用JNDInjector生成恶意ldaps URL?

可以使用JNDInjector选择利用链与Payload,生成ldap协议的恶意URL,并通过TLS反向代理实现ldaps请求的转发。

Opportunistic TLS和LDAPS的主要区别是什么?

Opportunistic TLS在明文通信中找机会升级为TLS,而LDAPS则在连接时直接使用TLS进行加密。

如何实现TLS端口转发?

可以通过编写TLS反向代理,将ldaps请求转发给JNDInjector,使用tls.Listen创建TCP over TLS服务器。

➡️

继续阅读