spring actuator 攻击方式分析记录

0x00 复现记录

原文章作者已经给出了漏洞环境:https://github.com/artsploit/actuator-testbed

直接run起来就行,不用管报错信息~

1. 攻击方式一 -- 通过eureka组件RCE

Spring actuator 提供了/env接口来查看和改变应用程序的环境变量~因此,找到了eureka.client.serviceUrl.defaultZone属性~

记录2个要点:

  • 访问/env时,直接复制下面的请求再改细节,浏览器抓包改会有问题~

XStream的payload(需要更近一步分析):

  • Xstream的Payload要设置Content-Type头为application/xml(我用nginx配了下)~实际会请求/java/xstreampoc/apps/路由~
  • 使用/env看环境变量有没有改变写入~

2. 攻击方式二 -- 通过jolokia组件XXE-RCE

内部是使用SAX解析XML文件的,可以XXE~
这里面涉及到了JNDI注入,Payload是这样的~

jndi_poc.xml内容:

RMI服务端JNDI的攻击代码(2种方案的限制,请看参考文章):

JConsole工具,可以看到JMX里面的MBeans,寻找可以利用的地方~实质是通过jolokia组件,控制JMX下的MBean进行利用。请看https://jolokia.org/reference/html/protocol.html

3. 敏感信息泄漏

细心关注/trace,/env等接口可能会发现用户和应用程序的隐私数据~

0x01 RCE攻击原理ToDo

攻击方式一:实质是XStream反序列化的问题~ XStream历史上有许多不依赖第三方包就能进行反序列化攻击的问题,具体分析看看https://github.com/mbechler/marshalsec里面的攻击向量~

攻击方式二:探讨下,JRMP和JNDI注入攻击在源码层面的原理的根本区别~

0x02 参考链接

https://www.veracode.com/blog/research/exploiting-spring-boot-actuators
https://xz.aliyun.com/t/2233
https://www.veracode.com/blog/research/exploiting-jndi-injections-java