# 简介:
Struts2是一个开源的Web开发框架,被广泛使用。由于Struts2的底层性导致整个Web系统对其安全性的依赖程度高。最近,有两个安全漏洞被公布了:S2-045,S2-046
# 危害:
* 高危(0day)
* 无前置条件
* 可执行任意命令,上传shell
# 成因:
主要是因为Struts2默认文件上传解析器jakarta的使用
* S2-045:It is possible to perform a RCE attack with a malicious Content-Type value. If the Content-Type value isn't valid an exception is thrown which is then used to display an error message to a user.
* S2-046:It is possible to perform a RCE attack with a malicious Content-Disposition value or with improper Content-Length header. If the Content-Disposition / Content-Length value is not valid an exception is thrown which is then used to display an error message to a user. This is a different vector for the same vulnerability described in S2-045 (CVE-2017-5638).
# 检测工具:
* 上github直接搜索S2-045,S2-046
* Apache官方也有开源的POC
* 白帽子也开源了不少POC
# Getshell的方法:
达到触发异常的条件,将shellcode 注入到content-type与filtename就行了
# 防御:
* 更新至最新版本
* 在WAF或者应用本身添加filter,针对POC字段
* 严格过滤Content-Type,filename中的内容,严谨ognl表达式相关字段
* 删除commons-fileupload-x.x.x.jar文件,文件上传不可用