php发展

首页 » 常识 » 问答 » AntCTFxD3CTFnonR
TUhjnbcbe - 2021/4/27 0:55:00
白癜风专家李从悠 http://yyk.39.net/hospital/89ac7_registers.html

梅子酒

卫兵实验室上海研究分院

前言

周末看了下orich和幻猫出的non-RCE,这个题目主要涉及到的点有三个,分别为:

鉴权绕过

Servlet时间竞争绕过黑名单

AspectJWeaver反序列化Gadget构造

这一篇文章就主要针对这三个点进行分析。

鉴权绕过

在这个题目中设计了几个Filter,这里只说下涉及到的两个:

AntiUrlAttackFilter

LoginFilter

当我们需要访问/admin/*格式的地址时,会触发LoginFilter要求我们密码,然而密码无从知晓。

而AntiUrlAttackFilter这个过滤器对所有url生效,并且里面进行了对url的处理:

OverridepublicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)servletRequest;HttpServletResponseres=(HttpServletResponse)servletResponse;Stringurl=req.getRequestURI();if(...){...}elseif(url.contains(";")){StringfilteredUrl=url.replaceAll(";","");req.getRequestDispatcher(filteredUrl).forward(servletRequest,servletResponse);}else{filterChain.doFilter(servletRequest,servletResponse);}}

因此对于/;admin/importData格式的请求,AntiUrlAttackFilter会对其处理变为/admin/importData并重新进行路由,鉴权也就被绕过了。

Servlet时间竞争

在该题目中,攻击的入手点在于AdminServlet下的doGet(),我们需要传入一个jdbcurl,服务端会对该jdbcurl使用

1
查看完整版本: AntCTFxD3CTFnonR