viernes, mayo 16, 2025
viernes, junio 03, 2016
Nuestro nuevo libro de "Hacking Web Technologies" @0xWord #pentesting #hacking
![]() |
Figura 2: Libro de Hacking Web Technologies |
Publicado por
Chema Alonso
a las
6:15 a. m.
8
comentarios
Etiquetas: 0xWord, auditoría, Blind LDAP Injection, Blind XPath Injection, Connection String Parameter Pollution, Hacking, LDAP, LDAP Injection, LFI, libro, pentesting, RFI, Xpath injection
sábado, febrero 27, 2016
Examen del Máster de Seguridad de la UEM 2016
![]() |
Figura 1: Examen del módulo de Seguridad en las Aplicaciones del Máster de Seguridad de la UEM. Curso 2015 -2016 |
A ver si saco algo de tiempo para responderlas yo - y las del último examen que también las dejé sin responder - para que tengáis la información completa. Al final os dejo la lista de exámenes de años anteriores.
1.- Tu organización dispone de una aplicación web de cara a internet consistente en ofertar productos y servicios con pasarela de pago propia desarrollada para una plataforma Java utilizando tecnologías Linux. Los datos de registro de los clientes, así como los pedidos solicitados se almacenan en una base de datos MySQL de la empresa, gestionando todo el proceso a través de la lógica de negocio. ¿Qué mecanismos de protección consideras que deberían implantarse en cuanto a la arquitectura de servidores y servicios se refiere? Cita reglas generales de fortificación y algunas medias concretas que creas convenientes para implantar.
2.- Una aplicación web de una empresa proporciona un proceso de autenticación que sospechamos un tanto curioso. Al analizar el código fuente de la página, vemos que la aplicación utiliza para el proceso de autenticación un Applet de Java con extensión JAR. Tras probar varios intentos de inicio de sesión, detectamos que no se produce Post-Back al servidor. ¿Qué fallo de seguridad podría tener esta aplicación y cómo debería investigarse?
3.- En qué consiste un ataque de tipo SQL Injection inband a una aplicación web. Pon algún ejemplo para sacar la lista de usuarios Tabla_USERS[Campo_Login, Campo_Password] de una web en un entorno vulnerable.
4.- Describe en qué consisten los ataques de Time-Based Blind SQL Injection y con qué tipo de funciones o métodos pueden realizarse en los motores de base de datos SQL Server, MySQL, Oracle y Access.
5.- Describe con tus palabras en qué consisten los ataques de LFI y cómo los podrías descubrir en una aplicación web durante un proceso de auditoría.
6.- Una aplicación web en PHP con MySQL es vulnerable a SQL Injection. Se quiere extraer la versión de Mysql realizando un ataque de Blind SQL injection. Describe el proceso que habría que realizar.
7.- En una aplicación web, la aplicación autentica a los usuarios con un árbol LDAP, para ello, cada usuario tiene un atributo uid y un atributo password. El programador ha filtrado el * y utiliza la función crypt antes de usar la contraseña en una consulta AND LDAP como ésta.
V_username: valor de usuario introducido en la página web por el cliente.
V_passwd: valor de contraseña introducido en la página web por el cliente.
C_passwd =crypt(v_passwd)
Consulta que da acceso o no a la aplicación:
(&(uid=+v_username+)(password=+c_passwd+))
¿Con qué inyección LDAP conseguirías entrar si la se está utilizando un árbol LDAP basado en OpenLDAP?
8.- Como administrador del sistema de tu organización, una mañana monitorizas que el antivirus corporativo reporta un malware en un directorio local del servidor donde tu empresa tiene alojado el sitio web. El archivo en cuarentena es un fichero denominado C99.php. ¿Qué tipo de ataque estás sufriendo y qué fallo o fallos de seguridad se ha/n podido aprovechar?
9.- Describe un posible método para robar una cookie marcada como HTTP-Only con un ataque de XSS y describe en qué entornos funcionaría.
10.- Describe como se puede hacer un proceso de hijacking de sesión a un usuario de una red social en la que las cookies no vayan por HTTP-s si en la web no se ha descubierto ninguna vulnerabilidad de código (ni SQLi, ni XSS).
Tiempo: 1 horaPor si te animas a seguir, aquí tienes los exámenes de años anteriores, que también los he ido publicando en el blog.
- Examen Máster de Seguridad de la UEM 2009-2010
- Examen Máster de Seguridad de la UEM 2010-2011
- Examen Máster de Seguridad de la UEM 2011-2012
- Examen Máster de Seguridad de la UEM 2012-2013
- Examen Máster de Seguridad de la UEM 2013-2014
- Examen Máster de Seguridad de la UEM 2013-2014 (Herramientas auditoría)
- Examen Máster de Seguridad de la UEM 2014-2015
Publicado por
Chema Alonso
a las
8:34 a. m.
3
comentarios
Etiquetas: auditoría, Blind LDAP Injection, Blind SQL Injection, fortificación, Hijacking, LDAP Injeciton, MS SQL Server, MySQL, pentesting, SQL Injection, SQL Server, Universidad, XSS
sábado, octubre 24, 2015
Cómo NO debes publicar y retirar una app de Google Play
![]() |
Figura 2: Buscando apps en Android con links a LDAP |
![]() |
Figura 3: Enlaces a un backend LDAP accedido vía WebServices |
![]() |
Figura 4: La app estaba retirada de Google Play |
![]() |
Figura 5: El backend aún activo |
![]() |
Figura 6: Petición SOAP al WebService para hacer un LDAP Search Filter al árbol LDAP |
![]() |
Figura 7: Código de construcción de llamada al WebService en la app con datos de árbol LDAP |
![]() |
Figura 8: Construcción de petición SOAP en Repeater de Burp |
![]() |
Figura 9: Respuesta del WebService con la salida del LDAP Search Fileter |
![]() |
Figura 10: Respuesta de error forzada con filtro LDAP inyectado |
1) Tiene los WebServices del Backend expuestos a Internet.
2) Son vulnerables a LDAP Injection por medio de la llamada SOAP.
3) Publicó la app con las credenciales hardcodeadas.
4) Retiró la app y no retiró el servicio de backend.
4) Retiró la app y no cambió las credenciales.
Publicado por
Chema Alonso
a las
9:41 a. m.
2
comentarios
Etiquetas: Android, Blind LDAP Injection, Google Play, Hacking, LDAP, LDAP Injection, pentesting, Tacyt, WebServices
lunes, septiembre 14, 2015
Dorking & Pentesting con Tacyt: Inyección de comandos
![]() |
Figura 1: Dorking & Pentesting con Tacyt. SQL Injection, LDAP Injection y Command Injection |
![]() |
Figura 2: Un enlace en una app para conectarse a una base de datos |
![]() |
Figura 3: Código decompilado de una app con ShowMyCode para ver los parámetros de SQLQuery.php |
![]() |
Figura 4: En el parámetro Query basta con poner la consulta. FAIL! |
![]() |
Figura 5: Otro enlace en una app sin ningún tipo de protección en el parámetros query |
![]() |
Figura 6: Una app con un backend LDAP |
![]() |
Figura 7: Un LdapSearch en una app con escritura de LDAP Searh Filters |
![]() |
Figura 8: Un enlace a un command.cgi en una app (con enlace local) |
![]() |
Figura 9: Llamada aun programa para hacer directorios en el servidor. Muchos lo han debido de usar ya. |
- Dorking & Pentesting con Tacyt: Inyección de comandos
Publicado por
Chema Alonso
a las
8:26 a. m.
0
comentarios
Etiquetas: Android, Blind LDAP Injection, Blind SQL Injection, Eleven Paths, Hacking, LDAP Injection, pentesting, RFI, SQL Injection, Tacyt
domingo, enero 25, 2015
Examen Máster Seguridad UEM 2014 - 2015
![]() |
Figura 1: Tarde de Sábado (ayer) para examinarese en la UEM |
2.- Explica en que se diferencia una vulnerabilidad de RFI de una LFI
3.- Explica para que sirven los flags Secure y HTTP Only en una cookie
4.- ¿Qué son los headers HTTP de CSP?
5.- ¿Cómo extraerías el nombre de los usuarios de una base de datos a través de una vulnerabilidad SQL Injection Out-Band basada en errores ODBC?
6.- Explica cómo extraer de una aplicación web vulnerable a Time-Based Blind SQL Injection la versión de una base de datos si el motor es un MySQL v4.
7.- En un ataque LDAP Injection en el que la función de consulta es como la que sigue. ¿Cómo conseguirías acceso con algún usuario si el motor es un OpenLDAP?
Web:
User: v_userPass:v_passConsulta para acceso:
ldapfilter='(&(uid='+v_user+')(Pass='+crypt(v_pass)+'))';8.- Explica en que consiste un ataque SQL Injection inband.
9.- ¿Cómo se podría realizar un ataque Time-Based Blind SQL Injection a una aplicación web que utilice un motor de base de datos Ms Access 2007?
10.- Explica algún método conocido para poder robar una cookie con el flag HTTP-Only.
- Examen Máster de Seguridad de la UEM 2009-2010
- Examen Máster de Seguridad de la UEM 2010-2011
- Examen Máster de Seguridad de la UEM 2011-2012
- Examen Máster de Seguridad de la UEM 2012-2013
- Examen Máster de Seguridad de la UEM 2013-2014
- Examen Máster de Seguridad de la UEM 2013-2014 (Herramientas auditoría)
Publicado por
Chema Alonso
a las
5:13 a. m.
5
comentarios
Etiquetas: auditoría, Blind LDAP Injection, BSQLi, Hacking, LDAP Injection, pentesting, SQLi, Universidad
sábado, febrero 15, 2014
Examen Máster de Seguridad de la UEM 2013-2014
Además, tienes exámenes de años anteriores ya publicados por aquí, que espero que mis alumnos se hayan empapado en profundidad, ya que suelo hacer más o menos las mismas preguntas.... para ver si estudian o no. Por supuesto, en el examen siempre entra todo lo citado directa o indirectamente en las clases, las diapositivas y publicado en el blog.
Examen Máster de Seguridad de la UEM 2009-2010Saludos Malignos!
Examen Máster de Seguridad de la UEM 2010-2011
Examen Máster de Seguridad de la UEM 2011-2012
Examen Máster de Seguridad de la UEM 2012-2013
- Respuesta: Reglas de fortificación 1) Mínimo Punto de Exposición 2) Mínimo Privilegio Posible y 3) Defensa en Profundidad. Design Guidelines for Secure Web Applications. Hacking Webs en .NET: Algunos trucos para auditoría.2º.- Si tu organización dispone de un servidor de base de datos SQL Server 2008 pero el DBA es una persona con poca experiencia. ¿Qué mecanismos de seguridad pondrías en su conocimiento como disponibles en el entorno a la hora de cifrar la información que en él se aloja?
- Respuesta: Cifrado de almacenamiento de sistema, cifrado de base de datos, cifrado de datos, hashing seguro de passwords, cifrado de backups y cifrado de comunicaciones a nivel de cadena de conexión y aplicación web.3.- Describe como se puede hacer un proceso de hijacking de sesión a un usuario de una red social en la que las cookies no vayan por HTTP-s si en la web no se ha descubierto ninguna vulnerabilidad de código (ni SQLi, ni XSS).
- Hijacking de session con cookies capturadas por la red.4.- Describe un posible método para robar una cookie marcada como HTTP-Only con un ataque de XSS que se debería probar sabiendo que el servidor no tiene habilitado el método TRACE y que es un Apache 2.0.X.
- Robar cookies HTTP-Only con XSS y Error 400 en Apache. También se podría describir un método basado en un Applet Java.5.- Una aplicación web de una empresa proporciona un proceso de autenticación que sospechamos un tanto curioso. Al analizar el código fuente de la página, vemos que la aplicación utiliza para el proceso de autenticación un Applet de Java con extensión JAR. Tras probar varios intentos de inicio de sesión, detectamos que no se produce Post-Back al servidor. ¿Qué fallo de seguridad podría tener esta aplicación y cómo debería investigarse?
- Autenticación local. Decompilación de Applets Java. Jugando con un Applet Java. Cómo localizar Applets Java con Shodan.6.- Detectamos que una aplicación web realizada en ASP con acceso a SQL Server es vulnerable a SQL Injection. Describe porqué se producen este tipo de ataques y un método simple para solventarlos.
- Mi primera comilla.7.- En qué consiste un ataque de tipo Blind SQL Injection a una aplicación web. Explícalo con tus palabras por ejemplo para obtener la versión del motor de la base de datos que se está utilizando.
- Técnicas avanzadas en Blind SQL Injection8.- La nueva tecnología adoptada por tu empresa para el sitio web interno corporativo te permite visualizar a través del navegador aquellas impresoras y recursos compartidos de red a los que sólo tienes acceso por pertenencia a un departamento en concreto. Analizando el código web, se ver que es un código muy parecido al que usan los administradores de sistemas Windows para gestionar los sistemas con CScript. Llegas a la conclusión de que puede tener algún tipo de inyección y estás en lo correcto ya que al introducir los caracteres de inyección adecuados, te permite visualizar más recursos corporativos de los que deberías ver en un principio ¿De qué tipo de vulnerabilidad estamos hablando y a qué tipo de base de datos estamos accediendo?
- (Blind) LDAP Injection in Web Applications9.- Describe en qué consisten los ataques de Time-Based Blind SQL Injection y con qué tipo de funciones o métodos pueden realizarse en los motores de base de datos SQL Server, MySQL, Oracle y Access.
- Time- Based Blind SQL Injection using Heavy Queries
10.- Como administrador del sistema de tu organización, una mañana monitorizas que el antivirus corporativo reporta un malware en un directorio local del servidor donde tu empresa tiene alojado el sitio web. El archivo en cuarentena es un fichero denominado C99.php. ¿Qué tipo de ataque estás sufriendo y qué fallo o fallos de seguridad se ha/n podido aprovechar?
- Tienes una WebShell [Community Shells availables, Riesgos en el uso de WebShells en auditoría], Métodos HTTP Inseguros PUT, subida insegura de ficheros, Técnicas SQLi con acceso al File System de escritura, RFI si lo pilla en tmp o por red, Web compartida en hosting inseguro o hacking del servidor web por otro medio.
Publicado por
Chema Alonso
a las
8:48 a. m.
7
comentarios
Etiquetas: auditoría, Blind LDAP Injection, Blind SQL Injection, Hacking, LDAP Injection, pentesting, Seguridad Informática, SQL Injection, Universidad
jueves, noviembre 22, 2012
6.317 bugs de LDAP Injection (y alguno más)
Publicado por
Chema Alonso
a las
3:52 a. m.
2
comentarios
Etiquetas: Active Directory, Blind LDAP Injection, bugs, Google, Hacking, LDAP, LDAP Injection, Open Source, pentesting
miércoles, julio 06, 2011
ASP.Net autenticando con LDAP en Active Directory
En el artículo publicado, creo que se cometen algunas imprecisiones que son dignas de resaltar, ya que el ejemplo que aparece no funciona tal y como está descrito, y puede llevar a error a muchos personas, así que vamos a hacer un resumen.
Resumen de las diferentes implementaciones LDAP
El primer paper que habla de LDAP Injection, el de Sacha Faust, hacía un ejemplo de inyección en el que a partir de un filtro LDAP simple, es decir, algo como (atributo=valor) inyectaba un filtro compuesto, haciendo algo como (atributo=injección), donde en injección ponía un nuevo filtro LDAP del tipo foo)(|(atributo2=valor).
Esa acción genera 2 filtos LDAP y no funciona ni en OpenLDAP ni en Microsoft ADAM [Active Directory Application Mode] o el nuevo MS LDS [Ldap Directory Services]. OpenLDAP porque solo ejecuta el primer filtro y desecha el segundo al no ser una lista de atributos válidos, Microsft LDS o ADAM porque no está correctamente formado (son 2 y no lo permite el estándar).
Esa inyección funciona en el ejemplo de Sacha Faust porque usa un servidor SUN que permite la ejecución de dos filtros LDAP en una única consulta -como si fuesen independientes-, pero no en OpenLDAP o MS AD, ADAM o LDS. Todo esto está explicado en el artículo titulado Jugando con LDAP.
Como curiosidad, el componente IPWorks*ASP LDAP que usa Sacha, y que usamos nosotros en nuestro Reto Hacking IV y en la escritura del paper, realiza un borrado de todo aquello que está fuera del primer filtro, lo que provoca situaciones muy curiosas, como que las inyecciones LDAP que generan 2 filtros se anulen, y solo quede el primer filtro.
Implementaciones Microsoft y filtros compuestos
Sin embargo, si el filtro es uno compueto, es decir, que tiene más de un condicionante, con un operando AND u OR, entonces sí que se pueden hacer inyecciones en árboles LDAP de Microsoft, siempre y cuando generen un único filtro LDAP en una consulta.
Así, el ejemplo que ponía Andres Riancho sobre saltarse la autenticación en un árbol LDAP de Microsoft, se podría hacer, tal y como expliqué en el artículo or 1=1 en LDAP. En un filtro escrito por el programador como el siguiente:
(&(uid=valor_usuario)(webpassword=valor_password))
¿Cómo conseguir acceso con un usuario sin saber la password? Pues como no se pueden generar dos filtros en la inyección, hay que conseguir que se genere un único filtro. Para ello habría que introducir algo como:
Valor_usuario = admin)(!(&(|
Valor password = any))
El resultado tras esta inyección sería:
(&(uid= admin)(!(&(|)(webpassword= any))))
Y no como se plantea en el post con una inyección que genere algo como (&(user=andres)(&))(password=notimportant)). Esto solo sería válido si se está utilizando un componente como IPWorks*ASP LDAP, con un comportamiento tan peculiar como el explicado de borrar el segundo filtro, o si se está utilizando un árbol OpenLDAP.
En cualquier caso, si se usa el componente por defecto de ASP.NET para conectarse a un árbol LDAP sea el que sea, ese componente es seguro y no permite inyección. Así que, para que el ejemplo publicado tenga sentido se deberían cumplir las siguientes condiciones:
1) No se usa el componente LDAP por defecto de ASP.NET
2) Se está usando un componente que jamás envía los dos filtros al árbol LDAP
Sin embargo, la parte de detección del ataque sería totalmente cierta.
Si te gusta el tema del LDAP Injecction tienes más información aquí:
- Ataques a LDAP
- LDAP Injection and Blind LDAP Injection
- Jugando con LDAP
- Or 1=1 en LDAP
- LDAP Injector
- El listín de teléfonos
- Whitepaper LDAP Injection & Blind LDAP Injection [Inglés]
Saludos Malignos!
Publicado por
Chema Alonso
a las
7:00 a. m.
3
comentarios
Etiquetas: .NET, Active Directory, Blind LDAP Injection, Hacking, LDAP, LDAP Injection
sábado, enero 29, 2011
Examínate este fin de semana
1.- Describe en que consiste un ataque XSS no-persistente, un entorno en el que se pueda encontrar esta vulnerabilidad y cómo puede ser utilizado para distribuir malware.
2.- Describe tres medidas que conozcas para evitar que los ataques de XSS no persistente tengan efecto.
3.- Describe en qué consiste un ataque de Cross-Site Request Forgery.
4.- Si una aplicación muestra un mensaje de Error ODBC de un servidor SQL Server, ¿qué sistema de ataque puede utilizarse para extraer información de la base de datos?
5.- Se ha encontrado una vulnerabilidad en una aplicación web de SQL Injection en la que si se pone una inyección SQL correcta sale la página de una noticia y, si se comete algún error sintáctico o semántico, el programador ha capturado la excepción y muestra una página genérica de error. Si se quiere realizar un ataque SQL Injection de tipo inboud, describe el proceso que habría que seguir para construir la inyección correcta.
6.- Dentro de los ataques inboud, explica en qué consisten los ataques de Serialized SQL Injection.
7.- Una aplicación web en PHP con MySQL es vulnerable a SQL injection pero no se pueden realizar ataques inbound y los errores de base de datos están capturados. Se quiere extraer la versión de mysql realizando un ataque de Blind SQL injection. Describe el proceso que habría que realizar.
8.- Describe en qué consisten los ataques de Time-Based Blind SQL Injection y cómo pueden realizarse.
9.- En una aplicación web, la aplicación autentica a los usuarios con un árbol LDAP, para ello, cada usuario tiene un atributo uid y un atributo password. El programador ha filtrado el * y utiliza la función crypt antes de usar la contraseña en una consulta AND LDAP como ésta.
V_username: valor de usuario introducido en la página web por el cliente.
V_passwd: valor de contraseña intoducido en la página web por el cliente.
C_passwd =crypt(v_passwd)
Consulta que da acceso o no a la aplicación:
(&(uid=+v_username+)(password=+c_passwd+))
¿Con qué inyección LDAP conseguirías entrar si la se está utilizando un árbol LDAP basado en OpenLDAP?
10.- En una aplicación web se sabe que el parámetro id se inyecta en una consulta AND LDAP. Se quiere extraer el valor del atributo objetclass de todos los objetos afectados por esta consulta. ¿Cómo realizarías el proceso con un ataque Blind LDAP Injection?
Si no eres capaz de hacerlo y te gustaría saber como van estas cosas, yo te enseño, como "amor y abrazos" en el próximo RootedLab que voy dar de Técnicas de Inyección en Aplicaciones Web. Y si se te ha quedado corto, puedes hacerte el exámen del año pasado.
Saludos Malignos!
Publicado por
Chema Alonso
a las
8:00 a. m.
7
comentarios
Etiquetas: Blind LDAP Injection, Blind SQL Injection, CSRF, LDAP Injection, Seguridad Informática, SQL Injection, XSS
Entrada destacada
+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial
Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares
-
Circula por la red un truco que llegó a mí de casualidad , donde se explica cómo conseguir ver más de una vez - e incluso capturar - las fot...
-
Ayer publiqué un post que tiene ver con las opciones de privacidad de Facebook asociadas a los correos electrónicos , y mañana sacaré la se...
-
Las técnicas de OSINT son aquellas que te permiten buscar información en fuentes abiertas. O lo que es lo mismo, sacar datos de plataformas...
-
Hoy os traigo una " microhistoria " peculiar que tiene que ver con la historia de la tecnología. Es una historia de esas que empie...
-
Hace mucho tiempo, cuando se creo el " Modo Incógnito " de los navegadores, que algunos llamaron también " Modo Privado ...
-
Dentro de una investigación de una fotografía, tal vez te interese saber dónde está hecha, o a qué hora se hizo. Cualquiera de esas dos info...
-
Conseguir la contraseña de Facebook de una cuenta es una de las peticiones más usuales que se suele recibir de la gente que busca solucion...
-
Una de las opciones que se puede configurar a nivel de hipervínculo, de documento o de servidor web en los navegadores es el funcionamiento...
-
El SEPE (Servicio Público de Empleo Estatal) ha sido víctima de la archiconocida crisis del COVID-19 enlazando la avalancha de expedientes...
-
La app de mensajería instantánea Telegram tiene muchos fans por el atributo de seguridad que ha querido potenciar desde el principio, per...