Come si può iniettare lo script di bash attraverso lo user agent

1

Stavo controllando il nuovo exploit di Bash e stavo guardando questo post in particolare.

Scenari di attacco della nuova vulnerabilità di Bash

Quello che non capisco è come l'inclusione di bash nella stringa user-agent lo faccia eseguire. Mi sembra strano che l'agente utente venga mai eseguito sul server. So che questa è una domanda ampia, ma sto solo cercando una comprensione generale di come è possibile che ciò accada se possibile.

EDIT:

Facendo qualche ulteriore ricerca, ho letto questo che mi ha chiarito alcune cose.

link

Il che spiega che CGI sta impostando alcune variabili ambientali e qualche altro input tramite stdin. Perché non esiste una protezione per impedire che questa stringa sia al di là di me o perché tu possa passare una funzione di bash in un'intestazione.

    
posta mschuett 25.09.2014 - 19:36
fonte

1 risposta

2

Quello a cui ti riferisci è il Bug di Shellshock, vedi link

Il problema Shellshock si verifica in particolare quando un utente malintenzionato modifica la richiesta HTTP di origine per contenere la stringa () { :; }; magica discussa sopra.

Supponiamo che l'attaccante cambi l'intestazione User-Agent sopra da Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 a semplicemente () { :; }; /bin/eject . Questo crea la seguente variabile all'interno di un server web:

HTTP_USER_AGENT=() { :; }; /bin/eject

Se tale variabile viene passata in bash dal server Web, si verifica il problema Shellshock. Questo perché bash ha regole speciali per gestire una variabile che inizia con () { :; }; . Invece di trattare la variabile HTTP_USER_AGENT come una sequenza di caratteri senza significato speciale, bash la interpreterà come un comando che deve essere eseguito (ho omesso le spiegazioni profondamente tecniche del perché () { :; }; fa bash comportarsi come questo per il bene di chiarezza in questo saggio.)

Il problema è che HTTP_USER_AGENT proveniva dall'intestazione User-Agent che è qualcosa che un utente malintenzionato controlla perché entra nel server web in una richiesta HTTP. E questa è una ricetta per il disastro perché un utente malintenzionato può fare in modo che un server vulnerabile esegua qualsiasi comando desiderato (vedi esempi sotto).

La soluzione è di aggiornare bash a una versione che non interpreta () { :; }; in modo speciale.

    
risposta data 24.09.2016 - 13:54
fonte

Leggi altre domande sui tag