Implicaciones de seguridad de los contenidos de / proc / self / environ en ataques LFI

2

Durante las pruebas de penetración en un sitio web, las pruebas encontraron una vulnerabilidad de inclusión de archivos locales en un antiguo complemento de wordpress que se instaló. Un atacante puede explotar la vulnerabilidad de LFI para incluir / etc / passwd y también la página de índice, sin embargo, al incluir / proc / self / environ, todo lo que ve el atacante es esto:

CONTEXT_DOCUMENT_ROOT=/home/[website]/public_htmlCONTEXT_DOCUMENT_ROOT=/home/[website]/public_html

¿No se supone que / proc / self / environ muestra otra información? ¿Como su agente de usuario? Si es así, ¿por qué es que para este sitio web, todo lo que muestra es CONTEXT_DOCUMENT_ROOT?

Sé que cuando un atacante incluye / proc / self / environ y muestra su agente de usuario, puede usar datos de manipulación indebida, por ejemplo, para cambiar su agente de usuario a código PHP y cargar un shell por ejemplo o abrir conexiones TCP salientes etc.

Entonces, básicamente ya que esto es todo lo que muestra / proc / self / environ, ¿significa que / proc / self / environ está básicamente a salvo de los atacantes? ¿O pueden manipular esto de alguna manera para mostrar su agente de usuario y ejecutar código PHP? (Perdóneme si esta es una pregunta estúpida, soy algo nuevo en seguridad. Además, ignore el elefante en la habitación: el LFI vuln real será arreglado para que no sea vulnerable en absoluto, pero sigo sintiendo curiosidad por mi / pregunta de proc / self / environ.)

    
pregunta Jason Rigley 05.12.2015 - 20:14
fuente

1 respuesta

1

/proc/self/environ contiene el entorno del proceso. En este caso, solo el CONTEXT_DOCUMENT_ROOT parece estar presente (habría un \ 0 entre las dos copias).

Esto sería posible. Si su aplicación php no se ejecuta como CGI, no es necesario que las variables HTTP_ aparezcan allí. Los otros SAPI (como FastCGI o un módulo de apache) los reciben de una manera diferente.

Sin embargo, incluso si solo estamos viendo el entorno del servidor y no se utiliza para pasar parámetros a la aplicación, parece peculiar que las variables típicas como PATH o HOME no aparezcan allí. Y que la misma variable aparezca dos veces tampoco tiene mucho sentido.

¿Por qué no subes un archivo php básico para imprimir el contenido de /proc/self/environ ?

  

Sé que cuando un atacante incluye / proc / self / environ y muestra su agente de usuario, puede usar datos de manipulación indebida, por ejemplo, para cambiar su agente de usuario a código PHP y cargar un shell por ejemplo o abrir conexiones TCP salientes etc.

En absoluto. Para ejecutar el código, el servidor necesitaría evaluar () el Agente de Usuario incluido, lo que sería bastante tonto.

Sin embargo, los contenidos del entorno pueden ser útiles para obtener más información sobre el servidor (como las rutas) para futuros ataques.

    
respondido por el Ángel 05.12.2015 - 23:34
fuente

Lea otras preguntas en las etiquetas