¿Qué vulnerabilidad podría estar intentando aprovechar este valor no válido de HTTP_HOST?

2

Acabo de recibir un correo electrónico de error del servidor web de mi casa (es un sitio de poco tráfico y, dado que está ejecutando una aplicación Django, me he escrito a mí mismo cuando recibo un correo electrónico sobre errores me ayuda a encontrar errores).

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.

La URL solicitada era /?author=1 (la página / es una página de noticias simple, y no usa parámetros de consulta, por lo que esto no podría haberse originado desde un enlace en la página).

El resto de los detalles de la solicitud se proporcionan a continuación. ¿Alguien tiene alguna idea de qué intentaba hacer esta solicitud / qué vulnerabilidad podría haber intentado explotar?

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',

(Supongo que la presencia de SCRIPT_NAME sugiere que se trata de un intento de explotar PHP, no creo que Django use ese valor).

    
pregunta Adam Luchjenbroers 09.12.2016 - 07:54
fuente

1 respuesta

3

Parece un poco como ataque de envenenamiento de caché que aprovecha División de respuesta HTTP .

Este ataque funciona enviando dos encabezados de host HTTP: evil.com y yourhost.com , y explotando una discrepancia en la forma en que los diferentes subsistemas tratan con múltiples encabezados.

Por ejemplo, el caché de Varnish trataría el primer encabezado de Host como verdadero, mientras que el servidor web nginx usaría el último.

Supongo que usas Apache, que concatena los encabezados del Host.

Se estableció una estandarización en RFC7230 que pretende proteger contra estos ataques:

  

Un servidor DEBE responder con un código de estado 400 (Solicitud errónea) a cualquier mensaje de solicitud HTTP / 1.1 que carezca de un campo de encabezado de Host y a cualquier mensaje de solicitud que contenga más de un campo de encabezado de Host o un campo de encabezado de Host con un inválido valor-campo.

SCRIPT_NAME no indica un exploit de PHP, es probable que solo sea la parte inicial de la ruta de la aplicación en su WSGI.

    
respondido por el Jedi 09.12.2016 - 09:02
fuente

Lea otras preguntas en las etiquetas