2017年7月7日,Apache Struts发布最新的安全公告,漏洞编号为S2-048,该漏洞存在Struts2和Struts1一个Showcase插件Action Message类中,通过构建不可信的输入实现远程命令攻击,存在安全风险。
基础环境
1.Ubuntu 作为靶机:192.168.159.134
2.Ubuntu使用docker获取Struts2-048靶场
源码部署过程
首先Ubuntu已经安装了docker环境。用了DaoCloud 的自动安装脚本:
DaoCloud 的安装脚本
curl -sSL https://get.daocloud.io/docker | sh
安装了docker之后,安装docker的compose
可以像 python 包一样安装:
pip install -U docker-compose
验证是否可以使用:
使用git下载Strust2-048的靶场:
git clone https://github.com/rebo-rn/vuldocker.git
在s2-048这个文件有一个由compose编写的靶场环境的docker-compose.yml,前面已经安装好了compose,现在创建并启动它。
docker-compose build
docker-compose up -d
搭建成功,访问30081端口:
漏洞复现过程
漏洞POC:
链接:http://pan.baidu.com/s/1dFL7r0X
密码:uvg2
点击Struts 1 Integration,在出现的表单输入任意数据并提交,这里提前使用burp拦截数据包并将拦截的数据包发送到Repeater模块。
修改name参数的值为经过URL编码后的POC,数据执行命令id和ls -al,可以发现服务端执行了命令并将结果返回。
总结
这个漏洞复现比较简单,关键在于docker靶场的搭建。本文所用的git资源,还有很多其他的struts2的漏洞环境,有兴趣的小伙伴们可以深究。如果在环境搭建上有疑问,欢迎给斗哥留言。