Come rendere sqlmap sfruttare una vulnerabilità SQLi

1

Ho trovato una semplice vulnerabilità SQL boolean blind e desidero consentire a sqlmap di eseguire l'iterazione ma non sembra funzionare, ho l'impressione che provi ad iniziare a un punto che sono molto oltre. Ecco i dettagli. La vulnerabilità è come questa

http://host/path?param=123

e posso interrogare in questo modo

http://host/path?param=123' or 10 = (select len(system_user()));--

(URL codificato, ovviamente). Se il secondo o condizione è vera, arriverò da qualche parte nella risposta "Trovato 1000 risultati". Se è falso ci sarà "Trovato 0 risultati". Così ora posso facilmente fare una ricerca binaria con

http://host/path?param=123' or 100 < (select ascii(substring(system_user(), 1, 1));--

carattere per carattere (è MS SQL Server nel caso non l'avessi notato). Sembra così dannatamente facile che non riesco a capire che sqlmap continua a dirmi "param non sembra essere iniettabile". Ecco la chiamata sqlmap che ho provato:

sqlmap -u "http://host/path?param=123" -p param --current-user --dbms mssql --prefix="123' or " --suffix=";--" --risk 3 --level 2

Ho giocato con --risk, --level e --technique = B e anche --string="Trovato 1000 colpi". Niente aiuta Come posso dire a sqlmap di non cercare nulla ma semplicemente di fare questa stupida iterazione?

    
posta kaidentity 18.05.2017 - 10:12
fonte

2 risposte

2

Punti di iniezione semplici come il tuo esempio possono certamente essere raccolti da sqlmap.

Ecco alcune idee per la risoluzione dei problemi:

  • Il server può utilizzare un WAF o reagire in altro modo allo user-agent sqlmap ( sqlmap/x.x )? Utilizza --user-agent per specificare lo stesso user-agent del browser (o generico).

  • Il server reagisce in modo diverso su richieste HTTP consecutive consecutive? Puoi utilizzare --delay per specificare un intervallo di ritardo tra le richieste.

  • Per un'iniezione così semplice di solito non è necessario specificare --prefix e --suffix . Meglio ometterli per non scherzare con il proprio processo di analisi di sqlmap.

  • Prova a omettere --dbms mssql se non sei sicuro al 100% del DBMS di back-end. sqlmap in genere può capirlo da solo.

  • Le richieste possono essere autenticate o dipendere da alcune impostazioni dei cookie di cui non si è a conoscenza? Utilizza --cookie per aggiungere gli stessi cookie che potrebbero essere impostati nel tuo browser.

  • Esegui il debug delle richieste e delle risposte di sqlmap e confrontale con ciò che ricevi nel tuo browser. Puoi impostare un alto livello di verbosità di output (ad esempio -v 6 ) per superare l'intero traffico HTTP .

  • Utilizza curl per verificare che l'iniezione manuale funzioni generalmente al di fuori del browser. Per esempio:.

    curl "http://host/path?param=123' or 10 = (select len(system_user()));--" | grep "1000 hits"
risposta data 18.05.2017 - 11:08
fonte
2

Dato che hai menzionato che hai trovato un SQli cieco basato su boolea, avrai bisogno di un input sqlmap come quello qui sotto:

#sqlmap -u "http://host/path?param=123" --technique=B --level=5 --risk=3 --random-agent --dbms=MSSQL
  • - l'opzione tecnica imporrà solo Blind SQLi Attacks
  • - random-agent assicurerà l'utilizzo di un agente utente legittimo, la maggior parte delle vulnerabilità non viene sfruttata se non la si fornisce il sito potrebbe bloccarti vedendo un agente sconosciuto
  • Aumenta il livello
  • Inoltre, la tua query non ha altri parametri, quindi ignorare la fornitura il parametro parte e suffisso e prefissi
risposta data 18.05.2017 - 12:37
fonte

Leggi altre domande sui tag