从今天开始,在java代码审计这条路上,我将会把在java审计过程中遇到的开发相关的知识概念在JavaCode这个系列中记录下来。
前两天朋友在复现JavaMelody XXE漏洞 CVE-2018-15531这个漏洞遇到了写问题,我这边自己根据相关文章做了一次复现。
复现的过程不多说,主要参考了以下链接
https://anemone.top/xxe-XXE%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86%E3%80%81%E6%94%BB%E5%87%BB%E6%96%B9%E5%BC%8F%E4%BB%A5%E5%8F%8A%E9%98%B2%E5%BE%A1%E6%96%B9%E6%B3%95/
https://hexo.imagemlt.xyz/post/melodyXXE/
由于本文主讲java相关知识点,所以就不展开讲漏洞了。
晚上有仔细看了下JavaMelody的jar,目前在审计中。过程中遇到了一些开发知识,一点点补充并完善自己对于Java的学习和了解(本人不是Java开发者,所以只能从自己的路人水平去理解Java代码相关知识,大佬莫喷)
在该对jar包某行代码进行调试,下端点时,想要不断去追溯,代码入口源头
主要看右下角
跟踪其调用链发现,最终jar包的调用入口在如下文件中的dofilter方法
在JavaWeb当中,根据以往学习的知识,servlet可以通过过滤器对传入的url相关链接进行拦截并坐相应的处理,可以简单理解为,在“客户端请求资源”-“服务端业务处理”的中间,另外加一层拦截变成了“客户端请求资源”-“过滤器(拦截)”-“服务端业务处理”。
至于过滤器有什么用,可以查看下网上找到的相关链接,如果从安全的角度理解的话,可以理解为我们通过过滤器可以拦截带有恶意编码的数据等等。
https://blog.csdn.net/fengdongkun/article/details/8252999
经过查资料发现,spring用的servlet3.0的标准?(其实我不太懂java开发,所以就瞎猜),但我能确定的是,从以下文章中
https://blog.csdn.net/bright51future/article/details/47086607
可以确定的是,在之前的servlet配置中,我们一般要配置过滤器等都需要在web.xml当中进行配置,这次我复现的漏洞相关代码当中并没有找到相关的过滤器。于是结合参考链接,对该jar包代码结构进行了一次分析
我们看看配置文件web-fragment.xml,刚好解除了我心中所惑,可以看到配置文件直接指定了过滤器的类。因此,所有url将被该过滤器所拦截。
原文:https://www.cnblogs.com/0x28/p/12393463.html