i春秋实验--struts2远程命令执⾏S2-045漏洞利⽤与修复
实验环境
操作机:Windows XP
⽬标机:CentOS 6.5
实验⽬的
了解S2-045 Struts2远程命令执⾏漏洞的危害
掌握检测修复S2-045 Struts远程命令执⾏漏洞技术
实验内容
Apache Struts 2被曝存在远程命令执⾏漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使⽤基于Jakarta插件的⽂件上传功能时,有可能存在远程命令执⾏,导致系统被⿊客⼊侵。
恶意⽤户在上传⽂件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进⽽执⾏系统命令。
影响范围
Struts 2.3.5 --Struts 2.3.31
Struts 2.5 --Struts 2.5.10
不受影响的范围
Struts 2.3.32 Struts 2.5.10.1
快速检测⽅式
使⽤知道创宇SeeBug照妖镜可以直接检测该站点是否存在漏洞。
漏洞危害
在default.properties⽂件中,struts.multipart.parser的值有两个选项分别是jakarta和pell。其中的jakarta解析器是Struts 2框架的标准组成部分。默认情况下jakarta是启⽤的,所以该漏洞的严重性需得到正视。
攻击者可以通过远程命令注⼊执⾏,另系统执⾏恶意命令,导致⿊客⼊侵,从⽽威胁服务器安全,影响极⼤。
实验步骤
步骤⼀:验证漏洞
打开cmd并切换⾄所在⽬录,执⾏下列命令:
< 172.16.12.2/example/HelloWorld.action "ifconfig"
成功执⾏,说明漏洞存在。可以尝试其他命令:
< 172.16.12.2/example/HelloWorld.action "cat /etc/passwd"
springframework远程代码执行漏洞
步骤⼆:修复漏洞
修改Struts2的Multipart parser
1,使⽤ssh登陆到⽬标主机172.16.12.2,⽤户名root,密码123456
2,将struts2-core-2.3.31.jar(路径:/var/www/apache-tomcat-7.0.14/webapps/ROOT/WEB-INT/lib/)下载到桌⾯,修改⽂件扩展名为struts2-core-2.3.31.zip,解压并打开⽂件夹org\apache\struts2。
  编辑struts.multipart parser⽂件,该选项就是Struts2的Multipart parser应⽤配置,默认值是jakarta,即此次出现命令执⾏漏洞的上传框架。
  将其修改为pell,相当于将存在漏洞的jakarta框架禁⽤了。
  修改值struts.multipart parser,保存,退出。(在struts.multipart parser=jakarta前加上#,去掉struts.multipart parser=pell前⾯的#)
3,重新打包.jar⽂件
  在struts2-core-2.3.31⽂件夹全部选中,压缩打包为struts2-core-2.3.31.jar
4,替换.jar⽂件
  使⽤SSH⼯具中的Xftp,将原有的⽂件mov⾄/⽬录,将新打包的⽂件放到该⽬录下。5,重启tomcat
1 cd /var/www/apache-tomcat-7.0.14/bin
2 ./shutdow.sh
3 ./startup.sh
6,漏洞验证
< 172.16.12.2/example/HelloWorld.action "ifconfig"
 此时poc程序已⽆法成功利⽤了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。