Quale vulnerabilità potrebbe tentare di sfruttare questo valore HTTP_HOST non valido?

2

Ho appena ricevuto una e-mail di errore dal mio server web di casa (è un sito a basso traffico e dal momento che sta eseguendo un'applicazione Django mi sono scritto che ricevere un'e-mail sugli errori mi aiuta a trovare i bug).

Subject: [Django] ERROR (EXTERNAL IP): Invalid HTTP_HOST header: '203.7.2.230 deimos-legion.net'. The domain name provided is not valid according to RFC 1034/1035.

Invalid HTTP_HOST header: '203.7.2.230 deimos-legion.net'. The domain name provided is not valid according to RFC 1034/1035.

L'URL richiesto era /?author=1 (la pagina / è una pagina di notizie semplice e non utilizza parametri di query, quindi questo non può aver avuto origine da un link sulla pagina).

Il resto delle specifiche della richiesta sono fornite di seguito. Qualcuno ha idea di ciò che questa richiesta sta cercando di fare / quale vulnerabilità potrebbe aver tentato di sfruttare?

GET:<QueryDict: {u'author': [u'1']}>,
POST:<QueryDict: {}>,
COOKIES:{},
META:{'CONTENT_LENGTH': '',
'CONTENT_TYPE': '',
'DOCUMENT_ROOT': '/var/www',
'HTTP_ACCEPT_ENCODING': 'identity',
'HTTP_CONNECTION': 'close',
'HTTP_HOST': '203.7.2.230 deimos-legion.net',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0',
'PATH_INFO': u'/',
'QUERY_STRING': 'author=1',
'REMOTE_ADDR': '89.248.174.49',
'REMOTE_PORT': '21642',
'REQUEST_METHOD': 'GET',
'REQUEST_URI': '/?author=1',
u'SCRIPT_NAME': u'',
'SERVER_NAME': 'solaris.deimos-legion.net',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',

(Suppongo che la presenza di SCRIPT_NAME suggerisca che si tratti di un tentativo di sfruttare PHP - non penso che Django usi quel valore.)

    
posta Adam Luchjenbroers 09.12.2016 - 07:54
fonte

1 risposta

3

Sembra un po 'come un attacco di avvelenamento della cache che sfrutta Risposta alla risposta HTTP .

Questo attacco funziona inviando due intestazioni Host HTTP: evil.com e yourhost.com , e sfruttando una mancata corrispondenza in come i diversi sottosistemi gestiscono più intestazioni.

Ad esempio, la cache di Varnish considererebbe vera la prima intestazione di Host, mentre il server Web di nginx userebbe l'ultima.

Suppongo che tu usi Apache, che concatena le intestazioni Host.

Una standardizzazione è stata stabilita in RFC7230 che si propone di proteggere da questi attacchi:

A server MUST respond with a 400 (Bad Request) status code to any HTTP/1.1 request message that lacks a Host header field and to any request message that contains more than one Host header field or a Host header field with an invalid field-value.

SCRIPT_NAME non indica un exploit PHP, è probabile che sia solo la porzione iniziale del percorso dell'applicazione nel tuo WSGI.

    
risposta data 09.12.2016 - 09:02
fonte

Leggi altre domande sui tag