domingo, 19 de mayo de 2013

Hackeando Nucom R5000UNv2

Hace un par de días, nuestro ISP nos cambió el modem/router por otro modelo más "adecuado" al plan de servicio que tenemos contratado. El anterior router que teníamos era un bonito porta retratos blanco marca Huawei que, aunque no fuera lo mejorcito, ya lo tenía configurado a mi gusto: puertos cerrados, DMZ, QoS, etc. Así que ahora tocaba volver a meter mano a todo.

El nuevo modelo de router que tenemos es un Nucom R5000UNv2 de color blanco y con dos antenas wifi como el de la imagen. Al inicio me dio una buena impresión.

Fig. 1 - Nucom R5000UNv2.

jueves, 2 de mayo de 2013

Find In Set con extractvalue y XPath

Una de las técnicas de inyección SQL que más me sorprendió, en cuanto a optimización de la extracción de datos en inyecciones ciegas, es "Find In Set". Pues llega al punto de mejorar la eficiencia "lineal" de la búsqueda binaria (que son siempre ocho consultas para cualquier carácter ASCII) a una expresión "logarítmica" que depende de la posición del carácter a extraer dentro de un conjunto arbitrario y esto es mucho mejor.

Sin embargo, tiene un pequeño gran problema: necesita un tercer estado para funcionar. Mientras que la técnica clásica de búsqueda binaria solo requiere dos estados (la página de verdadero y la de falso), Find In Set necesita un tercer estado que indique el final de la cadena binaria. Originalmente se sugería ejecutar un "delay" y usarlo como tercer estado, pero es contraproducente. Al final lo que se pretende es ahorrar tiempo no consultas.

martes, 30 de abril de 2013

Una forma de elevar privilegios en linux

Hace algún tiempo escribí un par de posts en los que, mientras buscaba una forma de espiar la terminal de otro usuario, encontré también una manera para ejecutar comandos en su consola usando pseudoterminales y secuencias de escape.

Aprendido este nuevo truco, pense en buscar otros escenarios donde pudiera ser útil y es así como encontré una forma, algo rebuscada eso sí, de elevar privilegios en Linux.

Los detalles a continuación...

miércoles, 17 de abril de 2013

Tomando el control con UDF en Postgresql

Tanto Postgresql como MySQL soportan librerías UDF (User Defined Functions). Estas librerías permiten ampliar las funciones del DBMS y programar las nuestras propias en un lenguaje como C o C++. Esto nos puede permitir por ejemplo programar una función que llame a "system" y ejecute comandos en el sistema operativo desde una consulta SQL o, mejor aún, desde una inyección SQL. Este post trata de como "tomar el control" con una inyección SQL usando librerías UDF en Postgresql.

miércoles, 10 de abril de 2013

Compilar librería UDF "lib_postgresqludf_sys.so" para Sqlmap

Una de las formas de tomar control del sistema operativo mediante un SQLi en Postgresql (y también en MySQL) es mediante librerías UDF (User Defined Functions). Este mecanismo permite programar nuestras propias funciones en C/C++, compilarlas como una librería compartida (.so en linux y .dll en windows) y luego importarlas a la base de datos. Evidentemente, es necesario tener permisos de administrador en la DB.

Sqlmap, implementa esta técnica de explotación y viene con librerías precompiladas para distintas versiones de Postgresql y MySQL tanto para linux como para windows con arquitecturas de 32 o 64 bits. Para usarlas se utiliza el parámetro "--os-cmd" (para ejecutar comandos en el SO) o también "--os-pwn" (para ejecutar payloads de metasploit). Por ejemplo:

domingo, 31 de marzo de 2013

Explotación de web services con Sqlmap

Hace poco encontré un Blind SQLi en un web service y recordé que se podía automatizar con Sqlmap. Tiempo atrás ya había leído este post de Bernardo Damele, en el que explica como usar el soporte para SOAP de Sqlmap.  Es genial cuando algo que leíste hace mucho tiempo de pronto te sirve y ahorras tiempo y esfuerzo :)

En este otro post ya había escrito sobre los web services y el protocolo SOAP. Puedes revisarlo si no recuerdas el funcionamiento de SOAP. En resumen, se puede decir que la diferencia, en lo que a la explotación de un SQLi se refiere, está en el "formato" de envió de datos. Mientras que en un SQLi "normal" los datos se envían por GET o POST en el formato "variable=valor", en un webservice los datos de entrada se envían por POST en un documento XML.

miércoles, 20 de marzo de 2013

Redirecciones no validadas (caso práctico)

En el último puesto del "OWASP Top 10" del año 2010, se incluyó una nueva vulnerabilidad con el nombre de "Unvalidated Redirects and Forwards". En la versión "Release Candidate" de este año del mismo documento, dicha vulnerabilidad aún se mantiene vigente y en su mismo puesto. Pero... ¿De qué trata este fallo de seguridad?

lunes, 11 de marzo de 2013

Configurando Fedora 18



Hace poco instalé en mi máquina la última versión de Fedora: "Spherical Cow". O también conocida como Fedora 18. Así que pondré aquí algunas de las configuraciones que hice para asegurar un poco mi sistema y además instalar algunas herramientas "básicas".