¿Cómo puede inyectar un script bash a través del agente de usuario?

1

Estaba revisando el nuevo exploit de Bash y estaba mirando esta publicación en particular.

Escenarios de ataque de la nueva vulnerabilidad de Bash

Lo que no entiendo es cómo la inclusión de bash en la cadena de agente de usuario hace que se ejecute. Me parece extraño que el agente de usuario alguna vez se ejecute en el servidor. Sé que esta es una pregunta amplia, pero estoy buscando una comprensión general de cómo esto puede suceder si es posible.

EDITAR:

Haciendo un poco más de investigación, leí esto y me aclaré algunas cosas.

enlace

Lo que explica que CGI está configurando algunas variables de entorno y otra entrada a través de la entrada estándar. Por qué no hay ningún guardia para evitar que esto sea simplemente una cadena, o porque puedes pasar una función de bash en un encabezado.

    
pregunta mschuett 25.09.2014 - 19:36
fuente

1 respuesta

2

A lo que te refieres es al Shellshock Bug, consulta enlace

El problema de Shellshock ocurre específicamente cuando un atacante modifica la solicitud HTTP de origen para que contenga la cadena magic () { :; }; discutida anteriormente.

Supongamos que el atacante cambia el encabezado User-Agent arriba de 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 simplemente () { :; }; /bin/eject . Esto crea la siguiente variable dentro de un servidor web:

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

Si esa variable se pasa a bash por el servidor web, ocurre el problema de Shellshock. Esto se debe a que bash tiene reglas especiales para manejar una variable que comienza con () { :; }; . En lugar de tratar la variable HTTP_USER_AGENT como una secuencia de caracteres sin un significado especial, bash la interpretará como un comando que debe ejecutarse (omití las explicaciones muy técnicas de por qué () { :; }; hace que bash se comporte de esta manera por el bien de claridad en este ensayo.)

El problema es que HTTP_USER_AGENT proviene del encabezado User-Agent, que es algo que controla un atacante porque ingresa al servidor web en una solicitud HTTP. Y esa es una receta para el desastre porque un atacante puede hacer que un servidor vulnerable ejecute cualquier comando que desee (vea los ejemplos a continuación).

La solución es actualizar bash a una versión que no interpreta () { :; }; de una manera especial.

    
respondido por el rubo77 24.09.2016 - 13:54
fuente

Lea otras preguntas en las etiquetas