SQL Injection - UNION SELECT e restituisce una 'parola chiave' per trovare colonne sfruttabili

6

Ho un problema che spero che qualcuno possa aiutare riguardo all'uso di UNION SELECT , in modo script / automatizzato per trovare le colonne che sono sfruttabili (avendo già trovato il numero di colonne usando ORDER BY )

Fai questo manualmente

Uso di http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,4,5,6,7,8-- Sono consapevole che posso visualizzare manualmente i numeri di colonna che compaiono nella pagina per trovare le colonne che sono sfruttabili, ma è estremamente difficile provare a analizzarle al di fuori del contenuto della risposta o dell'origine della pagina utilizzando un script in modo automatico per trovare le colonne espolutibili che vengono rivelate (a meno che qualcuno non conosca un modo affidabile per farlo)?

Automazione di questo utilizzando uno scanner / fuzzer

In alcuni scanner / fuzzer e strumenti di iniezione sql ho trovato alcuni riferimenti per ottenere che UNION SELECT restituisca una specifica parola chiave ' sulla pagina che indicherà che questa particolare colonna è sfruttabile se quella 'parola chiave' viene quindi trovata nel contenuto della risposta ....

Ad esempio:

http://www.site.com/index.php?id=-2 UNION SELECT "EXPLOITABLE",2,3,4,5,6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,"EXPLOITABLE",3,4,5,6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,"EXPLOITABLE",4,5,6,7,8--   <-- The word EXPLOITABLE **DID** appear on the page content so this column **IS** exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,"EXPLOITABLE",5,6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,4,"EXPLOITABLE",6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable

e così via fino a quando non raggiunge l'ultima colonna numero 8 .......

La 'parola chiave' è una parola che normalmente non verrebbe trovata in una pagina Web in modo da impedire i falsi positivi, ad esempio EXPLOITABLE, InJeCtAbLE, AASSDDFFGG (o qualsiasi variabile desiderata).

Il problema che sto riscontrando:

Mentre sto scrivendo uno strumento / fuzzer di sql injection cerco di trovare il modo migliore per trovare queste colonne sfruttabili in modo automatico / con script e il metodo più logico sembra essere quello descritto sopra usando la 'parola chiave' ( a meno che qualcuno non possa suggerire un modo migliore)

Questo perché posso quindi solo GET ogni url con UNION SELECT e la 'parola chiave', memorizzare il contenuto della risposta e poi vedere se la variabile 'parola chiave' che ho usato appare nel contenuto della risposta. Se lo fa, saprò che è sfruttabile, altrimenti passerò all'url successivo e così via fino a quando lo script non lo ha provato su tutti i numeri di colonna.

Questo sarebbe il metodo migliore / più affidabile per determinare le colonne sfruttabili usando UNION SELECT o puoi suggerire un metodo migliore da usare?

    
posta perl-user 04.04.2013 - 16:32
fonte

1 risposta

2

Questo è uno dei modi migliori per farlo, ma attenzione ai problemi di iniezione basati su errori. Potresti scoprire che ogni singolo risultato visualizza il token casuale nell'output perché ogni colonna è associata a un risultato intero e una stringa causerà un errore di cast. In tal caso, l'unico modo per rilevarlo è cercare i tipici messaggi di errore SQL server / MySQL / PostgreSQL nell'output e cercare un conteggio diverso del token nella pagina.

    
risposta data 04.04.2013 - 17:06
fonte