slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Ing. Hernán Segismundo Abbamonte habbamonte@ribadeohacklab.com.ar www.ribadeohacklab.com.ar RibadeoHackLab PowerPoint Presentation
Download Presentation
Ing. Hernán Segismundo Abbamonte habbamonte@ribadeohacklab.com.ar www.ribadeohacklab.com.ar RibadeoHackLab

Loading in 2 Seconds...

play fullscreen
1 / 25

Ing. Hernán Segismundo Abbamonte habbamonte@ribadeohacklab.com.ar www.ribadeohacklab.com.ar RibadeoHackLab - PowerPoint PPT Presentation


  • 128 Views
  • Uploaded on

Inyección de LDAP: Técnicas de ataque y defensa en Aplicaciones Web. Ing. Hernán Segismundo Abbamonte habbamonte@ribadeohacklab.com.ar www.ribadeohacklab.com.ar RibadeoHackLab. Contenido. Introducción Directory Services Ataques de Inyección Filtros en LDAP Ataques Login Bypass

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Ing. Hernán Segismundo Abbamonte habbamonte@ribadeohacklab.com.ar www.ribadeohacklab.com.ar RibadeoHackLab' - owen


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Inyección de LDAP:

Técnicas de ataque y defensa en Aplicaciones Web

Ing. Hernán Segismundo Abbamonte

habbamonte@ribadeohacklab.com.ar

www.ribadeohacklab.com.ar

RibadeoHackLab

contenido
Contenido
  • Introducción
    • Directory Services
    • Ataques de Inyección
    • Filtros en LDAP
  • Ataques
      • Login Bypass
      • Information Disclosure
      • Charset Reduction
      • Privilege Escalation
      • Information Alteration
  • Inyección LDAP vs. Inyección SQL
  • Mecanismos de Prevención
  • Mas información
directory services
Directory Services
  • Un Directory Service (o Servicio de Directorio) es software que permite realizar operaciones de ABM sobre un directorio.
  • Es una base de datos jerárquica diseñada para maximizar la velocidad de recuperación de la información.
  • La información esta organizada en entries, cada una de las cuales se encuentra identificada por un Distinguished Name.
directory services4
Directory Services
  • Diferencias con una BBDD Relacional:
    • La mayoría de los accesos a un directorio son de lectura, por lo que manejar operaciones de transacciones y rollback no es algo fundamental.
    • La información no tiene necesidad de estar almacenada de acuerdo a una Forma Normal. Incluso muchas veces se duplica información para optimizar la velocidad de recuperación.
directory services5
Directory Services
  • Familia de Protocolos X500 (ITU)
    • Conjunto de protocolos que definen el manejo de las operaciones sobre el Directorio.
    • Define la organización del Directorio de manera jerárquica.
    • Uno de los principales protocolos que define es DAP – Directory Access Protocol, que especifica la forma de acceso a la información almacenada en un Directorio.
    • LDAP es un protocolo de aplicación que permite manipular la información almacenada en un Directorio sobre redes TCP/IP.
ataques de inyecci n
Ataques de Inyección
  • Se basa en asunciones incorrectas que hace el servidor de los datos provistos por el cliente
  • Se asume que los datos provistos siempre tendrán el formato esperado
  • Se crean datos del lado del cliente que tienen un contenido semántico del lado del servidor
  • El cliente mediante la manipulación de las entradas puede modificar el comportamiento de la aplicación del lado del servidor, por ejemplo, incluyendo sintaxis de algún lenguaje en particular.
filtros en ldap
Filtros en LDAP
  • Definidos por la RFC 2254
  • Tienen la forma
    • Attribute Operator Value
    • filter = "(" filtercomp ")"
    • filtercomp = and / or / not / item
    • and = "&" filterlist
    • or = "|" filterlist
    • not = "!" filter
filtros en ldap8
Filtros en LDAP
  • (cn=Babs Jensen)
  • (o=univ*of*mich*)
  • (!(location=NYC*))
  • (&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*)))
ataques login bypass
Ataques: Login Bypass
  • Bind Method
    • El ataque se basa en una incorrecta implementación de la conexión que permite el acceso anónimo

<?php

$ldapuser = $_GET['username'];

$ldappass = $_GET['password'];

$ldapconn = ldap_connect("ldap.server.com")

or die("Could not connect to server");

if ($ldapconn) {

$ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass);

if (! $ldapbind) {

$ldapbind = ldap_bind($ldapconn);

}

}

?>

ataques login bypass10
Ataques: Login Bypass
  • Search Query
    • Esta autenticación es similar a la que se hace contra un modelo de base de datos relacional en donde se valida la correspondencia entre un usuario y una contraseña.
    • Consiste en manipular el input del usuario para lograr construir un filtro que modifique semánticamente la consulta a ejecutar en el servidor.
    • Se aprovecha de un filtro basado en un AND.
ataques login bypass11
Ataques: Login Bypass
  • Para ello se podría utilizar un filtro como el siguiente:
    • (&(Username=user)(Password=passwd))
  • Si en el nombre de usuario ingresáramos “user)(&))(“

se formaría el siguiente filtro

(&(Username=user)(&))((Password=zz)),

el cual es siempre verdadero

ataques information disclosure
Ataques: Information Disclosure
  • Imaginemos una aplicación que consulta un servicio de directorio para listar información
    • (|(objectClass=device)(name=parameter1))
  • Si el atacante provee como parámetro “test)(objectClass=*” se genera el siguiente filtro (|(objectClass=device)(name=test)(objectClass=*))
  • Esta consulta es totalmente valida y muestra objetos de todas las clases y no solo los de tipo device
ataques charset reduction
Ataques: Charset Reduction
  • El objetivo de este tipo de ataque es determinar caracteres validos para una propiedad de un objeto en particular
  • Se aprovecha de que los filtros LDAP pueden ser construidos utilizando caracteres especiales que actúan como comodines.
  • Se basa en un proceso iterativo de prueba y error mediante el análisis de la salida de la aplicación al realizar consultas especialmente diseñadas por el atacante
ataques charset reduction14
Ataques: Charset Reduction
  • Por ejemplo, tenemos un pagina que hace una consulta LDAP para obtener información de personas con un parámetro oculto y fijo por defecto, en nuestro caso el campo zone
  • Nosotros sabemos que la siguiente consulta es valida

http://rhl.com.ar/people_search.aspx?name=John)(zone=public)

  • Asumiendo que existen mas zonas podríamos intentar la siguiente consulta para buscarlas

http://rhl.com.ar/people_search.aspx?name=John)(zone=m*)

ataques charset reduction15
Ataques: Charset Reduction
  • Si no se obtienen resultados se puede continuar probando hasta descubrir una combinación de letras que nos permita darnos una idea de cual puede ser otro valor posible
  • Si bien es una técnica que puede ser considerada como fuerza bruta, con un poco de astucia del atacante se puede llegar a buenos resultados
  • También podría construirse un diccionario y automatizar el ataque
ataques privilege escalation
Ataques: Privilege Escalation
  • Se refiere a obtener información de un directorio LDAP que supere nuestro nivel de autenticación
  • Si tuviéramos un filtro como el siguiente: (&(category=latest)(clearance=none)) en donde solo se toma por parámetro la categoría, podríamos modificar la entrada para listar información de un nivel superior.
  • Ingresar category=latest)(clearance=confidential) permitirá construir un filtro que muestre mas información de la debida
ataques information alteration
Ataques: Information Alteration
  • Si una aplicación vulnerable a este tipo de ataques se utiliza para ABM de datos de un directorio y se cuenta con los permisos adecuados, mediante la manipulación de las entradas se podrían obtener comportamientos no esperados por la aplicación.
  • Si por ejemplo la aplicación recibiera el DN a modificar se podría lograr la modificación masiva de contenido
ataques information alteration18
Ataques: Information Alteration

<?php

$attr["cn"] = "ToModify";

$dn = "uid=Ribadeo,ou=People,dc=foo";

$result = ldap_modify($ldapconn, $dn, $attr);

if (TRUE === $result) {

echo "Entry was modified.";

}

else {

echo "Entry could not be modified.";

}

?>

  • Si la aplicación recibe como parámetro de entrada $dn, y se ingresa “uid=Ribadeo,ou=People,dc=*”,

entonces se modificarían todas las entradas bajo esa rama.

ldap injection vs sql injection
LDAP Injection vs. SQL Injection
  • En entornos Microsoft pueden utilizarse linked servers en SQL Server de tipo Active Directory Services para consultar al directorio LDAP
  • Mediante OPENQUERY se puede consultar a este linked server
  • Si esta consulta se almacena en una vista, y la aplicación cliente consulta a esta vista para realizar las validaciones, se podría lograr una inyección en la query SQL, por lo que el problema de inyección de LDAP se reduce a un problema de inyección de SQL
mecanismos de prevenci n
Mecanismos de Prevención
  • Como todo ataque de inyección, el principal mecanismo de prevención consiste en validar los datos de entrada provistos por el usuario.
  • Este tipo de validaciones deben realizarse siempre del lado del servidor.
  • Este proceso puede hacerse validando un formato de entrada esperado, por ejemplo, con expresiones regulares
  • Existen alternativas mas sofisticadas en donde se intentan adaptar los inputs del usuario para que sean inofensivos
mecanismos de prevenci n21
Mecanismos de Prevención
  • Suponiendo que la aplicación debe recibir como parámetro un nombre de usuario

<?php

$user=$_GET['username'];

$UsrRegex = "/(^[A-Za-z0-9_-]+$)/";

if preg_match($UsrRegex,$user){

$dn = "o=My Company, c=US";

$filter="(|(sn=$username*)

(givenname=$username*))";

$sr=ldap_search($ds, $dn, $filter);

}

else {

print "Invalid UserName";

}

?>

mas informaci n
Mas Información

Hack In The Box Ezine – Issue 1

https://www.hackinthebox.org/misc/HITB-Ezine-Issue-001.pdf

contacto
Contacto

Ing. Hernán Segismundo Abbamonte

habbamonte@ribadeohacklab.com.ar

www.ribadeohacklab.com.ar