Apuntes Ciberseguridad (Cibaism)
HTBGitHubLinkedInNotion (Writeups)
  • Welcome to My Digital Garden
  • About me
  • Hacking notes (Personal)
    • Tratamiento TTY
    • Hacking Web Tecniques
      • File Inclusion
    • Linux Privilage Escalation
    • Arreglar bloodhound
  • Hacking Notes (Learning Path)
    • (HTB) Penetration Tester
      • Getting Started
        • Common Terms
          • Tipos de Shell
          • Puertos importantes
          • OWASP Top 10
        • Service Scanning
          • Nmap
          • Attacking Network Services
            • Captura de banners
            • FTP
            • SMB
            • SNMP
        • Web Enumeration
        • Public exploits
          • Encontrar exploits públicos
          • Introducción a Metasploit
        • Types of Shells
          • Reverse Shell
          • Bind Shell
          • Web Shell
        • Privilage escalation
        • Transferring Files
      • Footprinting
        • Infrastructura Based Enumeration
          • Domain Information
          • Cloud Resources
          • Staff
        • Host Based Enumeration
          • FTP
          • SMB
          • NFS
          • DNS
          • SMTP
          • IMAP / POP3
          • SNMP
          • MySQL
          • MSSQL
          • Oracle TNS
          • IPMI
          • Protocolos de administración remota de Linux
          • Protocolos de administración remota de Windows
      • Introduction to Active Directory Enumeration & Attacks
        • Tools of the Trade
        • Initial enumeration
          • External Recon and Enumeration Principles
          • Initial Enumeration of the Domain
        • Sniffing out a Foothold
          • LLMNR/NBT-NS Poisoning - from Linux
          • LLMNR/NBT-NS Poisoning - from Windows
        • Sighting In, Hunting For A User
          • Password Spraying Overview
          • Enumerating & Retrieving Password Policies
          • Password Spraying - Making a Target User List
        • Spray Responsibly
          • Internal Password Spraying - from Linux
      • File Inclusion
        • File Disclousure
          • Local File Inclusion (LFI)
          • Basic Bypasses
          • PHP Filters
        • Remote Code Execution
          • PHP Wrappers
    • (CRTA) Red Team Analyst
      • (CRTA) Red Team Analyst - Lab
    • (eJPT) Junior Penetration Tester
      • Assessment Methodologies
        • Assessment Methodologies: Footprinting & Scanning
          • Windows Recon: Nmap Host Discovery
          • Scan the Server 1
          • Windows Recon: SMB Nmap Scripts
        • Assessment Methodologies: Enumeration
          • Importing Nmap Scan Results Into MSF
          • T1046 : Network Service Scanning
          • FTP Enumeration
          • Samba Recon: Basics
          • Apache Enumeration
          • MySQL Enumeration
          • SSH Login
          • Postfix Recon: Basics
        • Assessment Methodologies: Vulnerability Assessment
          • Windows: IIS Server DAVTest
          • Shellshock
          • Web App Vulnerability Scanning With WMAP
      • Host & Network Penetration Testing
        • Host & Network Penetration Testing: System/Host Based Attacks
          • Windows
            • Windows: IIS Server: WebDav Metasploit
            • Windows: SMB Server PSexec
            • Windows: Insecure RDP Service
            • WinRM: Exploitation with Metasploit
            • UAC Bypass: UACMe
            • Privilege Escalation: Impersonate
            • Unattended Installation
            • Windows: Meterpreter: Kiwi Extension
          • Linux
            • ProFTP Recon: Basics
            • Samba Recon: Dictionary Attack
            • Cron Jobs Gone Wild II
            • Exploiting Setuid Programs
            • Password Cracker: Linux
        • Host & Network Penetration Testing: Network-Based Attacks
          • NetBIOS Hacking
          • SNMP Analysis
          • DNS & SMB Relay Attack
        • Host & Network Penetration Testing: The Metasploit Framework (MSF)
          • Windows: Java Web Server
          • Windows: HTTP File Server
          • Vulnerable FTP Server
          • Vulnerable File Sharing Service
          • Vulnerable SSH server
          • Vulnerable SMTP Server
          • Meterpreter Basics
          • Upgrading Command Shells To Meterpreter Shells
          • Windows Post Exploitation Modules
          • UAC Bypass: Memory Injection (Metasploit)
          • Exploiting SMB With PsExec
          • Windows: Enabling Remote Desktop
          • Clearing Windows Event Logs
          • Pivoting
  • Blue team notes
    • Digital Forensics
      • Malware Analysis with VirusTotal
      • Wireshark
    • (Falcon) CrowdStrike
      • FALCON 104: Getting Started with the Endpoint Security Module
      • FALCON 106: Customizing Dashboards in Falcon
      • FALCON 180: Falcon Forensics Fundamentals
  • Programming
    • Powershell
Powered by GitBook
On this page
  • Filtros de entrada
  • Fuzzing para archivos PHP
  • Inclusión estándar de PHP
  • Divulgación del código fuente
  1. Hacking Notes (Learning Path)
  2. (HTB) Penetration Tester
  3. File Inclusion
  4. File Disclousure

PHP Filters

PreviousBasic BypassesNextRemote Code Execution

Last updated 1 month ago

Muchas aplicaciones web populares se desarrollan en PHP, junto con varias aplicaciones web personalizadas creadas con diferentes frameworks PHP, como Laravel o Symfony. Si identificamos una vulnerabilidad LFI en aplicaciones web PHP, podemos utilizar diferentes para extender nuestra explotación de LFI e incluso, potencialmente, lograr la ejecución remota de código.

Los wrappers de PHP nos permiten acceder a diferentes flujos de E/S a nivel de aplicación, como la entrada/salida estándar, los descriptores de archivo y los flujos de memoria. Esto tiene muchos usos para los desarrolladores de PHP. Sin embargo, como evaluadores de penetración web, podemos utilizar estos wrappers para ampliar nuestros ataques de explotación y poder leer archivos de código fuente PHP o incluso ejecutar comandos del sistema. Esto no solo es beneficioso con ataques LFI, sino también con otros ataques web como XXE, como se explica en el módulo

En esta sección, veremos cómo se utilizan los filtros básicos de PHP para leer el código fuente de PHP y, en la siguiente sección, veremos cómo diferentes envoltorios de PHP pueden ayudarnos a lograr la ejecución remota de código a través de vulnerabilidades LFI.

Filtros de entrada

son un tipo de contenedor PHP que permite pasar diferentes tipos de entrada y filtrarlos con el filtro especificado. Para usar flujos de contenedor PHP, podemos usar el php://esquema en nuestra cadena y acceder al contenedor de filtro PHP con php://filter/.

El filtercontenedor tiene varios parámetros, pero los principales que necesitamos para nuestro ataque son resourcey read. Este resourceparámetro es necesario para los contenedores de filtros, y con él podemos especificar el flujo al que queremos aplicar el filtro (por ejemplo, un archivo local). Además, este readparámetro puede aplicar diferentes filtros al recurso de entrada, por lo que podemos usarlo para especificar qué filtro queremos aplicar a nuestro recurso.

Hay cuatro tipos de filtros disponibles: , , y . Puede obtener más información sobre cada filtro en su enlace correspondiente, pero el filtro útil para ataques LFI es el que se encuentra convert.base64-encodeen [enlace faltante] Conversion Filters.

Fuzzing para archivos PHP

El primer paso sería buscar diferentes páginas PHP disponibles con una herramienta como ffufo gobuster, como se explica en el módulo :

ffuf -w /opt/useful/seclists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://<SERVER_IP>:<PORT>/FUZZ.php

Incluso después de leer el código fuente de cualquier archivo identificado, podemos scan them for other referenced PHP filesleerlo también hasta capturar la mayor parte del código fuente de la aplicación web o tener una idea precisa de su función. También es posible comenzar leyéndola index.phpy escaneándola en busca de más referencias, etc., pero el fuzzing de archivos PHP puede revelar algunos archivos que de otro modo no se encontrarían de esa manera.

Inclusión estándar de PHP

En secciones anteriores, si intentaste incluir archivos PHP mediante LFI, habrás notado que el archivo PHP incluido se ejecuta y, finalmente, se renderiza como una página HTML normal. Por ejemplo, intentemos incluir la config.phppágina ( .phpextensión añadida por la aplicación web):

http://<SERVER_IP>:<PORT>/index.php?language=config

Como podemos ver, obtenemos un resultado vacío en lugar de nuestra cadena LFI, ya que lo config.phpmás probable es que solo configure la aplicación web y no muestre ninguna salida HTML.

Esto puede ser útil en ciertos casos, como acceder a páginas PHP locales a las que no tenemos acceso (por ejemplo, SSRF). Sin embargo, en la mayoría de los casos, nos interesaría más leer el código fuente PHP mediante LFI, ya que suele revelar información importante sobre la aplicación web. Aquí es donde el base64filtro PHP resulta útil, ya que podemos usarlo para codificar en base64 el archivo PHP y, de esta manera, obtener el código fuente codificado en lugar de ejecutarlo y renderizarlo. Esto es especialmente útil en casos donde trabajamos con LFI con extensiones PHP añadidas, ya que podríamos estar restringidos a incluir solo archivos PHP, como se explicó en la sección anterior.

Divulgación del código fuente

Una vez que tengamos una lista de posibles archivos PHP que queramos leer, podemos empezar a revelar sus fuentes con el base64filtro PHP. Intentemos leer el código fuente del config.phpfiltro base64, especificando convert.base64-encodepara el readparámetro y configpara el resourceparámetro, como se muestra a continuación:

php://filter/read=convert.base64-encode/resource=config
http://<SERVER_IP>:<PORT>/index.php?language=php://filter/read=convert.base64-encode/resource=config

Como podemos ver, a diferencia de nuestro intento con LFI normal, el uso del filtro base64 devolvió una cadena codificada en lugar del resultado vacío que vimos anteriormente. Ahora podemos decodificar esta cadena para obtener el contenido del código fuente de config.php, como se indica a continuación:

echo 'PD9waHAK...SNIP...KICB9Ciov' | base64 -d

...SNIP...

if ($_SERVER['REQUEST_METHOD'] == 'GET' && realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) {
  header('HTTP/1.0 403 Forbidden', TRUE, 403);
  die(header('location: /index.php'));
}

...SNIP...

PHP Wrappers
Ataques Web .
Los filtros PHP
filtros de cadena
filtros de conversión
filtros de compresión
filtros de cifrado
Atacar aplicaciones web con Ffuf