转载

基于全局储存的新思路 | Tomcat的一种通用回显方法研究

对于不出网的反序列化回显,有利用Linux文件描述符的方法: 《linux下java反序列化通杀回显方法的低配版实现》 ,思路比较巧妙,但有一些局限性,对比起来感觉response直接写回显会比较方便,但是其在通用性上也存在痛点:

很多框架对于Serlvet进行了封装,不同框架实现不同,同一框架的不同版本实现也可能不同,因此我们无法利用一种简单通用的方法去获取当前请求的response。

针对这一点,前几天在先知社区看到了@kingkk师傅的 《Tomcat中一种半通用回显方法 》 学习了一下,师傅的思路很巧妙: 通过反射修改控制变量,来改变Tomcat处理请求时的流程,使得Tomcat处理请求时便将request,response存入ThreadLocal中,最后在反序列化的时候便可以利用ThreadLocal来取出response 。师傅的寻找过程主要是从Tomcat处理请求的调用栈中寻找有机会的代码流程。我在学习完师傅的文章之后也试着跟着调用栈寻找了一下,看是否有别的方法,但是发现这种方法比较掣肘于Tomcat处理请求时现有的流程,没有更好的发现。于是尝试换一种思路, 不再寻求改变代码流程,而是找找有没有Tomcat全局存储的request或response

原文  http://wiki.ioin.in/url/vnaG
正文到此结束
Loading...