Struts2远程代码执行漏洞.PDF
文本预览下载声明
Struts2 远程代码执行漏洞
S2-053 (CVE-2017-12611)简报
2017-09-08
404 实验室
Struts2 远程代码执行漏洞 S2-053 (CVE-2017-12611)简报
目 录
一、漏洞概述2
1 简介2
2 影响版本2
二、漏洞复现2
1 复现环境2
2 环境搭建2
3 复现过程及结果3
三、防护方案3
四、相关链接4
第 1 页
Struts2 远程代码执行漏洞 S2-053 (CVE-2017-12611)简报
一、漏洞概述
1 简介
Apache Struts 是一个免费的开源 MVC 框架,用于创建优雅、现代的 Java Web 应
用程序。Apache FreeMarker 是一个模板引擎:基于模板和更改数据生成文本输出(HTML
网页,电子邮件,配置文件,源代码等)的Java 库。
2017 年 9 月 7 日,Apache Struts 发布最新安全公告[2] 。在 Freemarker 标记中使
用表达式而不是字符串时,可能会二次解析表达式并造成远程执行代码攻击。
2017 年 9 月 7 日,Seebug 漏洞平台收录了该漏洞[1],知道创宇 404 实验室漏洞情
报团队开始漏洞应急,复现并分析了该漏洞。
2 影响版本
Apache Struts Version:Struts 2.0.1 – Struts 2.3.33
Apache Struts Version:Struts 2.5 – Struts 2.5.10
二、漏洞复现
1 复现环境
Apache tomcat 8
Apache Struts 2.5. 10
2 环境搭建
1. 从 docker 拉取存在漏洞的镜像[3]:
docker pull medicean/vulapps:s_struts2_s2-053
2. 启动docker:
docker run -d -p 80:8080 medicean/vulapps:s_struts2_s2-053。
第 2 页
Struts2 远程代码执行漏洞 S2-053 (CVE-2017-12611)简报
3. 访问页面: http://localhost:80
3 复现过程及结果
1. 访问页面:http://localhost:80
2. 向页面 name 表单提交 poc。
(poc 没有完全进行 URL 编码,直接使用 curl 或者 访问带参数的 url 进行复现是
不能成功的。)
3. 进入容器查看 /tmp 目录, 发现 test404 文件已被创建。命令执行成功。
三、防护方案
1、升级 Struts 版本到最新版本 2.5.13 或 2.3.34 。
2 、官方建议:代码中出现如下构造是不可取的。
@s.hidden name=redirectUri value=redirectUri /
@s.hidden name=redirectUri value=${redirectUri} /
或者使用只读属性来初始化 value 属性(仅限 getter 属性)。
3 、使用第三方防火墙进行防护(如创宇盾[ /cyd/ ])
4 、技术业务咨询
知道创宇技术业务咨询热线 :
400-060-9587(政府,国有企业)、028互联网企业)
显示全部