LDAP Injection

LDAP Injection è un tipo di attacco usato per compromettere siti web che utilizzano dichiarazioni LDAP (Lightweight Directory Access Protocol) dai dati forniti/inseriti dagli utenti. Questo è fatto cambiando le dichiarazioni LDAP in modo che applicazioni web possano girare in modo anomalo, senza avere gli effettivi permessi per farlo, permettendo all’attaccante di alterare, aggiungere o cancellare contenuti. LDAP è un protocollo che facilita la localizzazione di risorse in un network. E’ una versione dinamica del DAP (Directory access protocol), un protocollo facente parte dell’X.500, uno standard per i servizi di network directory.

L’iniezione LDAP funziona nella stessa maniera di una SQL Injection (che abbiamo più volte trattato su questo sito).

Questi tipi di iniezione, così come exploit simili, sono in continuo aumento a causa di una cattiva “educazione” nell’enfasi della programmazione ed in tematiche relative alla sicurezza. Gli esperti consigliano piccoli accorgimenti per evitare problemi in futuro e preservare l’integrità dei propri dati, basta semplicemente anche filtrare i caratteri inseriti in un input box html.

 

Esempio 1

 

Scenario: una pagina con un campo di ricerca, il seguente codice html si occupa di ottenere un input dall’utente, che verrà poi usato nel database LDAP.

 

 <input type="text" size=20 name="userName">Inserisci username</input>

Una funzione per processare l’input potrebbe essere la seguente:

 String ldapSearchQuery = "(cn=" + $userName + ")";
 System.out.println(ldapSearchQuery);

 

Se la variabile $userName non viene validata, potrebbe essere portata a compimento una LDAP injection, in questo modo:

  • Se un utente inserisce il carattere “*” nel campo di ricerca, il sistema potrebbe restituire tutti gli username presenti nel DB LDAP.
  • Se un utente inserisce: “pippo) (| (password = * ) )”, esso genererà il seguente codice, rivelando la password di pippo: ( cn = pippo ) ( | (password = * ) )

 

 

Torna all'inizio