J2EE框架Struts2再次被爆存在远程代码执行漏洞(S2-045),编号:CVE-2017-5638。受影响范围:Struts 2。3。5 - Struts 2。3。31, Struts 2。5 - Struts 2。5。10)
危害等级:及其严重
黑客可以利用该漏洞在远程服务器上执行任意系统命令,将会对受漏洞影响站点造成严重影响,引发数据泄露、网页篡改、后门植入、成为肉鸡等安全事件。
影响版本s2-045
Struts2。3。5 到 Struts2。3。31 以及 Struts2。5 到 Struts2。5。10
自查方式
查看web目录下/WEB-INF/lib/目录下的struts-core。x。x。jar 如果这个版本在Struts2。3。5 到 Struts2。3。31 以及 Struts2。5 到 Struts2。5。10之间则存在漏洞。
修复建议s2-045
更新至Struts 2。3。32 或者 Struts 2。5。10。1 或 使用第三方的防护设备进行防护。临时解决方案:删除commons-fileupload-x。x。x。jar文件(会造成上传功能不可用)。
由于该漏洞影响范围广,漏洞危害程度极为严重,请各用户及时采取措施,避免受影响。SHCERT将持续关注该漏洞。
修改Struts2的Multipart parser
使用搜索工具搜索ssh连接工具xshell5连接目标机172。16。12。2,用户名root,密码123456
修改配置文件
将struts2-core-2。3。31。jar路径:/var/www/apache-tomcat-7。0。14/webapps/ROOT/WEB-INF/lib/下载到本地桌面,修改文件扩展名为struts2-core-2。3。31。zip,将其解压到struts2-core-2。3。31文件夹中,打开里面的文件夹org\apache\struts2右击目录下default。properties文件,使用notepad++进行编辑。
找到struts。multipart。parser,该选项就是Struts2的Multipart parser应用配置,默认值为jakarta,即此次出现命令执行漏洞的上传框架。
将其修改为pell,相当于将存在漏洞的jakarta框架禁用了。修改后值struts。multipart。parser=pell,保存,退出。
注意在行首不能存在注释符 # 号
重新打包jar文件
在struts2-core-2。3。31文件夹中全部选中,压缩打包为zip格式,文件名:struts2-core-2。3。31。jar
替换jar文件
使用工具Xftp,将/var/www/apache-tomcat-7。0。14/webapps/ROOT/WEB-INF/lib/路径下的struts2-core-2。3。31。jar移动到根目录/,将我们修改配置后重新打包的jar文件放到该目录下。
重启tomcat
替换文件后需要重启tomcat服务,切换到/var/www/apache-tomcat-7。0。14/bin/目录下,首先执行。/shutdown。sh,然后执行。/startup。sh
重启tomcat服务会有15秒左右的延时
验证漏洞
执行下面命令:
poc。exe http://172。16。12。2/example/HelloWorld。action "cat /etc/passwd"