Questa è la prima volta che chiedo un supporto nel mio caso. Per favore perdonami, mentre sto ancora imparando ... Lo scenario è davvero semplice:
Alcuni dispositivi con server HTTP vengono sfocati dal modulo di metasploit (http_get_uri_long) che richiede lunghi URI e attende una risposta. Il server HTTP si blocca quando riceve circa 1700 caratteri di URI, bloccando completamente il dispositivo fino a quando non viene riavviato manualmente scollegandolo dalla presa di corrente. Ho effettuato più test e sempre quando il server HTTP riceve "GET / XXXX ..." (circa 1700 di Xs) il dispositivo si blocca e conferma che il bug esiste.
Tuttavia, creando un semplice PoC in Python (2.7) usando il modulo socket, sto richiedendo la stessa quantità di X nell'URI, ma senza il mio obiettivo (congelamento del dispositivo). Per l'URI più corto, viene restituito l'errore 404 normale. Ma quando si richiedono URI più lunghi, il server HTTP non risponde con nulla. E il dispositivo è ancora attivo.
Ho provato wireshark, per verificare se (forse) ho fatto qualcosa di sbagliato nel mio codice PoC, ma i pacchetti sembrano essere gli stessi.
Ecco il mio PoC:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = "192.168.0.11"
port = 80
s.connect((ip,port))
data = "GET /" + 'X' * 1800 + " HTTP/1.1\r\nHost: %s\r\n\r\n" % ip
print data
s.send(data)
print s.recv(4096)
s.close()
Il mio obiettivo è: ottenere lo stesso risultato del flipper URI HTTP di MSF, significa congelare il dispositivo. Il problema è che non riesco a riprodurre lo stesso con il mio codice Python.
Qualsiasi aiuto è molto apprezzato:)