Perché Shellshock funziona nella stringa useragent?

3

Mi chiedevo perché Shellshock funzioni quando inserito nel useragent.

Sulla base di ciò che ho potuto trovare è perché un server web (ad esempio Apache) utilizza la stringa useragent nel suo funzionamento interno.

  1. Perché un server web dovrebbe preoccuparsi di useragent? Le decisioni AFAIK basate su useragent vengono eseguite nell'applicazione con il programmatore che costruisce la logica come se (mobile): mostra la versione mobile ecc.
  2. Perché il server web utilizza una variabile d'ambiente per gestire questo ?! non è possibile farlo attraverso una forma regolare a valore variabile con una sufficiente sanitizzazione sull'input? Per quanto ne so, env-vars non è esclusivo di bash, ma sono definiti in un ambito esteso al sistema. Non riesco ancora a ottenere la connessione!
posta Sam 17.11.2014 - 13:49
fonte

1 risposta

3

Un server web potrebbe utilizzare il contenuto dell'intestazione User-Agent per operativi di registrazione , per controllare l'accesso (" nega tutti i robot ") o restituire risposte alternative (" pagine ottimizzate per dispositivi mobili ") ). La validità di un valore di intestazione dipende dall'applicazione, non è possibile scrivere sulla regola che funziona con tutto.

Considera l'intestazione Cookie . Un sito potrebbe semplicemente utilizzarlo per memorizzare un identificativo di sessione come sessionid=01234567890abcdef . Un sito diverso potrebbe scegliere di memorizzare le impostazioni locali, ad esempio lang=nl-NL . Potresti applicare una blacklist di caratteri, ma qualcuno potrebbe sfruttare un bug nella tua applicazione che risulta in lang=--help trattata come una riga di comando opzione .

Per i programmi CGI , i browser Web invocheranno solitamente lo script e passeranno le intestazioni tramite variabili di ambiente tali che lo script può utilizzare anche queste informazioni. Questo non è limitato all'intestazione User-Agent , i valori di Cookie potrebbero essere più interessanti per lo script. Il "modulo di input" che descrivi è diverso dalle intestazioni. Le intestazioni vengono prima del corpo del messaggio.

Ora sul bug di Bash che porta al problema di sicurezza "Shellshock", tutto ciò che serve è il controllo su almeno una variabile d'ambiente. Come puoi vedere, l'accesso CGI diretto su un server web è un esempio in cui tale condizione è soddisfatta. Potresti anche essere influenzato quando il programma (PHP, Cgit, ...) richiama la shell, direttamente (tramite uno script di shell ) o indirettamente (tramite un comando shell ).

    
risposta data 17.11.2014 - 14:14
fonte

Leggi altre domande sui tag