diff --git a/_posts/2017-03-21-s_struts2_s2-046.md b/_posts/2017-03-21-s_struts2_s2-046.md new file mode 100644 index 0000000..ce8d9ac --- /dev/null +++ b/_posts/2017-03-21-s_struts2_s2-046.md @@ -0,0 +1,63 @@ +--- +layout: post +title: "Struts2 Jakarta 插件远程代码执行漏洞(S2-046)" +date: 2017-03-21 12:48:12 +0800 +image: '/assets/img/' +description: 'Struts2 Jakarta 插件存在远程代码执行漏洞,攻击者只需发送一个精心构造的恶意请求,即可执行任意代码' +main-class: 'hole' +color: '#B31917' +tags: +- Struts2 +- RCE +categories: +- Struts2 +twitter_text: 'Struts2 Jakarta 插件存在远程代码执行漏洞,攻击者只需发送一个精心构造的恶意请求,即可执行任意代码' +introduction: 'Struts2 Jakarta 插件存在远程代码执行漏洞,攻击者只需发送一个精心构造的恶意请求,即可执行任意代码' +--- + +### 漏洞信息 + + * [S2-046 公告](https://cwiki.apache.org/confluence/display/WW/S2-046) + +### 获取环境: + +1. 拉取镜像到本地 + ```bash +$ docker pull medicean/vulapps:s_struts2_s2-046 + ``` + +2. 启动环境 + ```bash +$ docker run -d -p 80:8080 medicean/vulapps:s_struts2_s2-046 + ``` + > `-p 80:8080` 前面的 80 代表物理机的端口,可随意指定。 + +### 使用与利用 + +访问 `http://你的 IP 地址:端口号/` + +#### PoC + +> 本例中使用 [Struts2_Jakarta_Plugin插件远程代码执行漏洞(S2-046) ](http://www.bugscan.net/source/plugin/4787/template/) + + +1.下载并安装 `BugScan SDK` + + 详见 [BugScan 插件开发文档 - 环境配置](http://doc.bugscan.net/chapter1/1-1.html) + +2.修改 `poc.py` 中地址为容器地址 + + > 该漏洞无需配合上传表单使用 + + ```python +if __name__ == '__main__': + from dummy import * + audit(assign(fingerprint.struts, 'http://127.0.0.1:8080/')[1]) + + ``` + +3.运行 `poc.py` + + ```bash +$ python poc.py + ```