• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida XPath Injection

PSiimo

Utente Master
Autore del topic
7 Febbraio 2009
2.503
85
Miglior risposta
0
XPath Injection.


Le applicazioni web utilizzano sempre più i database per immagazzinare e incorporare all'interno di essi i dati necessari al loro funzionamento.

Da molti anni i database sono la tecnologia preferita per la gestione e incorporamento dei dati, ma ultimamente hanno cominciato a farsi avanti anche soluzioni specifiche organizzate in strutture
XML. Se i Database venivano interrogati utilizzando il linguaggio SQL, i database XML utilizzano XPath per effettuare le query.

Così come esistono vulnerabilità e bug nel linguaggio SQL, ve ne sono alcune anche nell’Xpath.

In questo caso , l’XPath injection consente di iniettare sintassi (stringhe) Xpath all’interno della richiesta che l’applicazione web deve interpretare, permettendoci così di eseguire query perfette per, per esempio, oltrepassare meccanismi di autentificazione o accedere ad informazioni riservate.


La struttura di un database XML è composta cosi:


Per capire come funziona ed esercita una query XPath, dobbiamo immaginare un database che contiene dei dati di autenticazione (username, password e livello di accesso):

HTML:
Perfavore, Entra oppure Registrati per vedere i codici!


Specifichiamo nel dettaglio cosa rappresentano i tag utilizzati nel codice soprastante:


  • <auth>: è l’elemento radice, edobbiamo considerarlo il nome che vogliamo dare al nostro database.



  • <user>: definisce la prima separazione degli elementi dello stesso insieme, questo corrisponde al nome della tabella.



  • <username>, <password> e <account>: definiscono i vari record logici relativi ad ogni <user>

La nostra prima XPath injection creata:


Al momento della verifica delle credenziali d’accesso, verrà generata una stringa simile a questa:
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!

Qui, l’input che fornisce l'utente è rappresentato dalle stringhe USERNAME e PASSWORD.
Se l’applicazione che elabora il codice XPath non “filtra” entrambe in maniera corretta (cioè, in questo caso, non bisogna rimuovere gli apici), essa sarà esposta ad una vulnerabilità di tipo Xpath injection.

Per prima cosa dobbiamo andare a verificare la fattibilità dell’injection, e possiamo farlo inserendo un singolo apice. In questo modo se il server ritornerà un errore di sintassi, possiamo essere abbastanza sicuri del fatto che l’applicazione è vulnerabile all' Xpath injection.
Vediamo ora come possiamo utilizzarla:

Supponiamo che le stringhe precedentemente utilizzate (
USERNAME e PASSWORD) sono valorizzate come segue:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


La condizione presente in questa
query ritornerà sempre un risultato positivo (TRUE), garantendo sicuramente l'accesso attraverso il primo account all’interno del database, senza che l’utente ha inserito le giuste credenziali d'accesso.
 
Ultima modifica:
Ciao, scusa è tutto interessante, ma potresti evitare di usare il giallo sopra il grigio che io non lo vedo affatto e devo evidenziare tutto il testo per leggere ciò che scrivi?
Grazie :-)
 
Ciao, scusa è tutto interessante, ma potresti evitare di usare il giallo sopra il grigio che io non lo vedo affatto e devo evidenziare tutto il testo per leggere ciò che scrivi?
Grazie :-)

Grazie della segnalazione, ora la lettura dovrebbe essere molto scorrevole.