Lo strumento Slow Loris di RSnake

4

Stavo guardando l'implementazione di RSnakes del suo Slow Loris fatto su perl che può essere visto qui . Ho installato un piccolo server per ascoltare i suoi pacchetti, e all'inizio ho trovato questo

GET / HTTP/1.1\r\nHost: David-PC\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\nContent-Length: 42\r\n

Sì, ecco come dovrebbe apparire un'intestazione di Slow Loris, quindi questo è l'ideale, ma dopo un po 'ho ricevuto più dati sullo stesso socket che era

X-a: b\r\n

E questo sarebbe continuamente inviato dopo intervalli di tempo sugli stessi socket che già creavano connessioni e inviava la prima intestazione, e il programma continuava a creare nuove connessioni dopo intervalli di tempo.

La mia domanda è, a che serve la seconda parte dei dati inviati?

X-a: b\r\n

È significativo?

    
posta user3818650 18.04.2015 - 10:04
fonte

1 risposta

4

Questa seconda parte dei dati inviati fa effettivamente parte di un ciclo al fine di mantenere artificialmente alcune attività sulla linea.

Se lo script stava solo aprendo la connessione al server, invia la prima intestazione, quindi aspetta passivamente, il server chiuderà la connessione dopo un certo timeout di inattività.

Qui mantieni una bassa attività, simulando in realtà una sorta di client molto lento che ha bisogno di molto, molto tempo per completare la sua richiesta. Poiché esiste ancora un'attività, il server non può raggiungere alcun timeout di inattività e, poiché il client non ha ancora terminato la sua richiesta, il server non può ancora inviare alcuna risposta. Quindi il thread del server è bloccato in attesa che questo "client lento" completi la sua richiesta. E se hai abbastanza richieste di questo tipo in parallelo, spero che bloccherai tutti i thread disponibili su questo server con le richieste dei "client lenti", causando così un Denial Of Service.

Come da informazioni complementari, i dati effettivi inviati al server per mantenere un'attività bassa non sono così importanti. L'idea qui è solo per inviare un'intestazione HTTP formalmente valida (: \ r \ n), il prefisso "X-" viene aggiunto a intestazioni non standard o proprietarie, quindi stiamo ancora apparendo per inviare alcuni dati di richiesta legittimi.

    
risposta data 18.04.2015 - 10:48
fonte

Leggi altre domande sui tag