前文tomcat的通用servlet内存马已经基本可以覆盖大部分的情况,针对第三方框架,思路也是一样的,姿势不同。观星实验室的师傅们在参考【1】中提到了关于Sping的姿势,这里学习记录下。
Spring
具体的背景不赘述,详见参考【1】,几个重点的步骤
- 获得当前代码运行时的上下文环境
- 手动注册 controller
- controller 中的 Webshell 逻辑
文中师傅没有给出直接运行的poc,这里给一下
Show me the code
1 | class MyClassLoader extends ClassLoader{ |
执行之后可以看到registry已经添加成功
http://localhost:8080/hahaha?code=whoami 为后门地址
小结
大同小异,其实都是找到上下文,执行恶意的code添加url映射及其对应代码。不过找到这些关键类,还是需要对框架的一定理解。
这两篇文章中,都没有提到在实际场景下,比如反序列化/fastjson等漏洞中,如何运行这些evil code,留待下篇总结解释。