漏洞简介
Apache kafka组件反序列化漏洞是FileOffsetBackingStore类在反序列化本地文件时引发的,实际场景中用到的并不多,简单复现下做个记录。
漏洞是由于Spring Web Flow的数据绑定问题带来的表达式注入,从而导致任意代码执行。 Spring Web Flow是Spring的一个子项目,主要目的是解决跨越多个请求的、用户与服务器之间的、有状态交互问题,提供了描述业务流程的抽象能力,具体可以参考Spring Web Flow 2.0 入门。
“Used to embed small items of data into a URL—rather than link to an external resource, the URL contains the actual encoded data. URIs are supported by most modern browsers except for some versions of Internet Explorer.”
Data URI 是一种提供让外置资源的直接内嵌在页面中的方案。这种技术允许我们只需单次 HTTP 请求即可获取所有需要引用的图片与样式资源。
在 RFC2397(http://tools.ietf.org/html/rfc2397)中定义了它格式规范:
1 | data:[<mime type>][;charset=<charset>][;base64],<encoded data> |
jenkins反序列漏洞跟过一遍之后,虽说梳理清楚了漏洞触发的大体流程,但是对于JAVA反序列化漏洞导致代码执行的原理仍旧不懂,因此有必要整理JAVA反序列化漏洞相关的知识点。
本文记录的是利用play渗透框架学习XXE实体攻击的过程,实验环境来自于pentesterlab Play XML Entities, 下载页面的iso, 用虚拟机软件PD或vmvare安装即可。打开虚拟机,获取虚拟机ip地址,然后访问就可以实验了,并不需要开启服务等其他操作,非常简单易用。同时还配备了课程讲解https://pentesterlab.com/exercises/play_xxe/course.
Play Framework是一个web的框架,在这个框架中,开发者可以快速的使用java或者scala编译开发web应用。这样可以有序管理代码,并且url可以像Ruby-on-Rails一样被映射。就像Ruby-on-Rails,当收到Http请求时,Play框架管理多种文本类型。