SQLMap su una forma sequenziale

3

C'è un certo modulo che viene pubblicato su POST. Il modulo ha alcuni elementi di forma. Sto facendo un test della penna sull'applicazione che ha questo modulo. I valori del modulo vengono memorizzati in un determinato database. È un'applicazione PHP e la parte interessante, che ho appreso attraverso alcune discussioni con lo sviluppatore proprietario del modulo, è che le istruzioni preparate non vengono utilizzate per elaborare le rispettive query per gestire i dati POST provenienti dal modulo.

Questo mi ha reso sospettoso e pieno di speranza nel trovare un potenziale SQLi.

Sto eseguendo SQLmap includendo una sessione valida e altri dati del modulo. Tuttavia, attraverso un -v 5, mi sono reso conto che SQLMap sta ricevendo una risposta di reindirizzamento 302 per ogni singola richiesta. Attraverso ulteriori indagini, mi sono reso conto che il modulo in questione (ad esempio form3) si ottiene dopo aver seguito la sequenza

form1 - > form2 - > Form3.

Se provo ad accedere direttamente a form3 (anche attraverso il browser, dopo aver effettuato il login ovviamente), vengo reindirizzato a form1. Quindi devo seguire rigorosamente la sequenza di cui sopra per poter effettivamente inviare i dati di form3 da elaborare.

C'è un modo per automatizzare questa sequenza in SQLmap? O c'è un modo in cui posso testare l'esistenza di uno SQLi su form3 dato lo scenario sopra?

    
posta qre0ct 12.05.2015 - 21:38
fonte

1 risposta

1

Generalmente se trovi uno SQLi non hai bisogno di mappare l'intero database per provare la vulnerabilità, in realtà sono necessarie pochissime informazioni come prova. SQLmap è un ottimo strumento per il suo scopo, per mappare i database, ma ha alcune limitazioni di usabilità.

In generale, consiglierei di utilizzare uno scanner di applicazioni Web per cercare i vettori SQLi, ad esempio lo scanner proxy ZAP OWASP. Ma in questo caso anche gli scanner potrebbero essere difficili da configurare per fare sempre una serie di richieste valide prima che venga inviato il modulo di destinazione. Gli scanner dispongono di un ampio set di payload SQLi già pronti e di tecniche di analisi della risposta e questa è sicuramente una risorsa da utilizzare.

Se tutto fallisce, un semplice script e un elenco di stringhe SQLi potrebbero essere usato per fare il lavoro L'automazione dei due moduli precedenti da inviare con input statico valido è facilmente eseguibile nella maggior parte delle lingue, specialmente se non è necessaria alcuna parte della risposta. Dopo questo è possibile inviare il terzo modulo con un parametro iniettato. Ora puoi ripetere questo processo per tutti i payload fino a quando non ottieni una risposta interessante. Qualcosa di leggermente fuori dall'ordinario è una risposta interessante.

Spesso un messaggio di errore, una risposta leggermente diversa o una differenza nella durata della query è sufficiente per montare un SQLi cieco attacco. Ciò significa che tutte le prove necessarie per dimostrare che la vulnerabilità esiste sono una serie di (in questo caso) tre richieste che finiscono per rispondere in un modo che rivela informazioni sul processo di interrogazione. Data questa serie di richieste proof-of-concept, un utente malintenzionato potrebbe facilmente scrivere uno script che estrae lentamente l'intero database, in quanto un tester non ha realmente bisogno di farlo.

Se sei un programmatore esperto, puoi sfruttare le librerie che fanno parte del progetto SQLmap .

    
risposta data 24.06.2015 - 15:37
fonte

Leggi altre domande sui tag