前天发布的新漏洞,以前Struts的漏洞也是经常出,今年三月份就有一次。但这类的洞一直没有跟进,今天也是想着把它给复现一下,同时搭个环境分析一下漏洞形成的原因。
0x01 漏洞简介
漏洞背景 2017年9月5日,Apache官方发布了一则公告,该公告称Apache Struts2的REST插件存在远程代码执行的高危漏洞,CVE编号为CVE-2017-9805。 Struts2 REST插件的XStream组件存在反序列化漏洞,使用带有 XStream实例的 XStreamHandler进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。
0x02 环境搭建
env | 版本 |
---|---|
docker | 16.04 |
jdk | 1.8.0_144 |
struts源码 | 2.5.12 |
tomcat | 8.0.46 |
直接从官网下载相对应的源码
0x1 dockerfile
FROM ubuntu:16.04
MAINTAINER 4t10n <act01n@163.com>
ENV DEBIAN_FRONTEND noninteractive
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update -y \
&& apt-get install unzip\
&& apt-get install net-tools
WORKDIR /tmp
COPY ./apache-tomcat-8.0.46.tar.gz /tmp/
COPY ./jdk.tar.gz /tmp/
COPY ./struts.zip /tmp/
COPY ./cmd.sh /tmp/
RUN chmod a+x cmd.sh
EXPOSE 8080
CMD ["/bin/bash","/tmp/cmd.sh"]
cmd.sh
tar -xz -f jdk.tar.gz -C /usr/local/
tar -xz -f apache-tomcat-8.