如何巧妙构建“LDAPS”服务器利用JNDI注入
内容提要
这篇文章介绍了如何使用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服务器。