漏洞原理
要求开发者模式,且poc第一个参数是debug,触发点在DebuggingInterceptor上,查看intercept函数,从debug参数获取调试模式,如果模式是command,则把expression参数放到stack.findValue中,最终放到了ognl.getValue中
影响版本
Struts 2.0.0 - 2.3.15.1
Apache+Tomcat 是很常用的网站解决方案,Apache 用于提供 web 服务,而 Tomcat 是 Apache 服务器的扩展,用于运行 jsp 页面和 servlet。Tomcat 有一个管理后台,其用户名和密码在 Tomcat 安装目录下的 conf\tomcat-users.xml 文件中配置,不少管理员为了方便,经常采用弱口令。 Tomcat 支持在后台部署 war 包,可以直接将 webshell 部署到 web 目录下,如果 tomcat 后台管理用户存在弱口令,这很容易被利用上传 webshell。
war 包是一种打包格式
Java web工程,都是打成war包,进行发布,打成war包的好处是不会缺少目录,并且只管理好一个发布文件就好,并且tomcat服务器能够自动识别,将war包放在tomcat容器的webapps下,启动服务,即可运行该项目,该war包会自动解压出一个同名的文件夹。
war 包的结构(是一个web 项目编译后的结果)