beafn28
  • 👩‍💻¡Bienvenidos a mi HackBook!
  • WRITEUPS
    • DockerLabs
      • BuscaLove
      • Amor
      • Injection
      • BorazuwarahCTF
      • Trust
      • Picadilly
      • Pinguinazo
      • AguaDeMayo
      • BreakMySSH
      • NodeClimb
      • Move
      • Los 40 ladrones
      • Vulnvault
      • Pntopntobarra
      • Library
      • Escolares
      • ConsoleLog
      • Vacaciones
      • Obsession
      • FirstHacking
      • SecretJenkins
      • HedgeHog
      • AnonymousPingu
      • ChocolateLovers
      • Dockerlabs
      • Pressenter
      • Candy
      • JenkHack
      • ShowTime
      • Upload
      • Verdejo
      • WalkingCMS
      • WhereIsMyWebShell
      • Whoiam
      • Winterfell
      • -Pn
      • Psycho
      • Mirame
      • Backend
      • Paradise
      • Balurero
      • Allien
      • Vendetta
      • FindYourStyle
      • Stellarjwt
      • File
      • Redirection (Por completar)
      • Extraviado
      • Patriaquerida
      • Tproot
      • Internship
      • Walking Dead
      • Bicho (Por completar)
      • BaluFood
    • TryHackMe
      • Brooklyn Nine Nine
      • Blue
    • HackTheBox
      • Nibbles
      • Starting Point
        • Meow
        • Fawn
        • Dancing
        • Redeemer
        • Appointment
        • Sequel
        • Crocodile
        • Responder
        • Three
        • Archetype
        • Oopsie
        • Vaccine
        • Unified
        • Explosion
        • Preignition
        • Mongod
        • Synced
        • Ignition
        • Bike
        • Funnel
        • Pennyworth
        • Tactics
        • Included
        • Markup
        • Base
      • BoardLight
      • Cap
      • TwoMillion
      • Lame
      • Legacy
      • Devel
      • Beep
      • Optimum
      • Arctic
      • Jerry
      • Sau
      • GoodGames
      • Challenges
        • Emdee five for life
        • MarketDump
      • Intro to Dante
      • Heist
      • OpenAdmin
      • Nest
      • Curling
    • Vulnhub
      • Wakanda
      • Election (Por terminar)
    • The Hacker Labs
      • Avengers
      • Can you hack me?
      • Fruits
      • Microchoft
      • TickTakRoot
      • Grillo
      • Mortadela
      • Zapas Guapas
      • Sal y Azúcar
      • Cyberpunk
      • Papafrita
      • PizzaHot
      • Decryptor
      • Academy
      • Cocido andaluz
      • Find Me
      • Quokka
      • Campana Feliz
      • Bocata de Calamares
      • Casa Paco
      • Torrijas
    • Vulnyx
      • Fuser
      • Blogguer
      • Lower
      • Exec
      • Diff3r3ntS3c
      • Hacking Station
      • Experience
      • Eternal
      • Agent
      • Infected
      • Admin
      • War
      • Hosting
    • OverTheWire
      • Natas
        • Nivel 0-5
        • Nivel 6-11
        • Nivel 12-17
        • Nivel 18-23
        • Nivel 24-29
        • Nivel 30-34
      • Leviathan
        • Nivel 0-7
      • Krypton
      • Bandit
        • Nivel 0-10
        • Nivel 11-20
        • Nivel 21-30
        • Nivel 31-34
    • Proving Ground Play
      • Monitoring
      • DriftingBlues6
  • APUNTES HACKING
    • Pentesting Basics
      • Web Enumeration
      • Public Exploits
      • Types of Shells
      • Privilege Escalation
      • Transfering Files
    • Network Enumeration with NMAP
      • Host Discovery
      • Host and Port Scanning
      • Saving the Results
      • Service Enumeration
      • Nmap Scripting Engine
      • Performance
      • Firewall and IDS/IPS Evasion
    • Footprinting
      • Domain Information
      • Cloud Resources
      • FTP
      • SMB
      • NFS
      • DNS
      • SMTP
      • IMAP/POP3
      • SNMP
      • MySQL
      • MSSQL
      • Oracle TNS
      • IPMI
      • Linux Remote Management Protocols
      • Windows Remote Management Protocols
    • Information Gathering - Web Edition
      • WHOIS
      • DNS
        • Digging DNS
      • Subdomains
        • Subdomain Bruteforcing
        • DNS Zone Transfers
        • Virtual Hosts
        • Certificate Transparency Logs
      • Fingerprinting
      • Crawling
        • robots.txt
        • Well-Known URIs
        • Creepy Crawlies
      • Search Engine Discovery
      • Web Archives
      • Automating Recon
    • Vulnerability Assessment
      • Vulnerability Assessment
      • Assessment Standards
      • Common Vulnerability Scoring System (CVSS)
      • Common Vulnerabilities and Exposures (CVE)
    • Nessus
      • Getting Started with Nessus
      • Nessus Scan
      • Advanced Settings
      • Working with Nessus Scan Output
      • Scanning Issues
    • OpenVAS
      • OpenVAS Scan
      • Exporting The Results
    • Reporting
    • File Transfers
      • Windows File Transfer Methods
      • Linux File Transfer Methods
      • Transferring Files with Code
      • Miscellaneous File Transfer Methods
      • Protected File Transfers
      • Catching Files over HTTP/S
      • Living off The Land
      • Detection
      • Evading Detection
    • Shells & Payloads
      • Anatomy of a Shell
      • Bind Shells
      • Reverse Shells
      • Payloads
        • Automating Payloads & Delivery with Metasploit
        • Crafting Payloads with MSFvenom
        • Infiltrating Windows
        • Infiltrating Unix/Linux
        • Spawning Interactive Shells
      • Introduction to Web Shells
        • Laudanum, One Webshell to Rule Them All
        • Antak Webshell
        • PHP Web Shells
      • Detection & Prevention
    • Metasploit
      • MSFConsole
      • Modules
      • Targets
      • Payloads
      • Encoders
      • Databases
      • Plugins
      • Sessions
      • Meterpreter
      • Writing and Importing Modules
      • Introduction to MSFVenom
      • Firewall and IDS/IPS Evasion
    • Password Attacks
      • John The Ripper
      • Network Services
      • Password Mutations
      • Password Reuse / Default Passwords
      • Attacking SAM
      • Attacking LSASS
      • Attacking Active Directory & NTDS.dit
      • Credential Hunting in Windows
      • Credential Hunting in Linux
      • Passwd, Shadow & Opasswd
      • Pass the Hash (PtH)
  • WEB SECURITY
    • Path Traversal
    • SQL Injection
    • Control de Acceso
  • Mis CTFs
    • Pequeñas Mentirosas
    • CryptoLabyrinth
    • Elevator
    • Facultad
  • PREPARAR EJPTv2
    • Máquinas
    • Curso de Mario
      • Presentación + Preparación de Laboratorios
      • Conceptos Básicos de Hacking
      • Explotación de Vulnerabilidades y Ataques de Fuerza Bruta
      • Explotación vulnerabilidades Web
      • Enumeración y Explotación del Protócolo SMB, SAMBA, SNMP, IIS y RDP
      • Hacking Entornos CMS
      • Escalada de Privilegios + Post Explotación
      • Pivoting con Metasploit
  • Preparar OSCP
    • Información
    • Máquinas
      • Linux
        • Fácil
        • Medio
        • Difícil
      • Windows
        • Fácil
        • Medio
        • Difícil
Powered by GitBook
On this page
  • Página de Inicio de Sesión en PHP
  • Trabajo Práctico con un Shell Web Basado en PHP
  • Configuración del Proxy
  • Evadiendo la Restricción de Tipo de Archivo
  • Solicitud POST
  • Proveedor Añadido
  • Éxito con el Shell Web
  • Consideraciones al Usar Web Shells

Was this helpful?

  1. APUNTES HACKING
  2. Shells & Payloads
  3. Introduction to Web Shells

PHP Web Shells

PreviousAntak WebshellNextDetection & Prevention

Last updated 7 months ago

Was this helpful?

PHP (Hypertext Preprocessor) es un lenguaje de scripting de propósito general, de código abierto, que se utiliza típicamente como parte de una pila web para impulsar un sitio web. Al momento de escribir esto (octubre de 2021), PHP es el lenguaje de programación del lado del servidor más popular. Según una encuesta reciente realizada por W3Techs, "PHP es utilizado por el 78.6% de todos los sitios web cuyo lenguaje de programación del lado del servidor conocemos".

Consideremos un ejemplo práctico de completar los campos de cuenta de usuario y contraseña en un formulario web de inicio de sesión.

Página de Inicio de Sesión en PHP

¿Recuerdas el servidor rConfig mencionado anteriormente en este módulo? Usa PHP. Podemos ver un archivo login.php. Entonces, cuando seleccionamos el botón de inicio de sesión después de completar los campos de Nombre de usuario y Contraseña, esa información se procesa en el servidor usando PHP. Saber que un servidor web utiliza PHP nos da, como pentesters, una pista de que podemos obtener un shell web basado en PHP en este sistema. Vamos a trabajar en este concepto de manera práctica.

Trabajo Práctico con un Shell Web Basado en PHP

Dado que PHP procesa código y comandos en el lado del servidor, podemos usar cargas útiles preescritas para obtener un shell a través del navegador o iniciar una sesión de shell inverso con nuestra máquina de ataque. En este caso, aprovecharemos una vulnerabilidad en rConfig 3.9.6 para cargar manualmente un shell web PHP e interactuar con el host Linux subyacente. Además de toda la funcionalidad mencionada anteriormente, rConfig permite a los administradores agregar dispositivos de red y categorizarlos por proveedor. Inicia sesión en rConfig con las credenciales predeterminadas (admin), luego navega a Devices > Vendors y haz clic en Add Vendor.

Pestaña de Proveedores

Utilizaremos el shell web PHP de WhiteWinterWolf. Podemos descargarlo o copiar y pegar el código fuente en un archivo .php. Ten en cuenta que el tipo de archivo es importante, como veremos pronto. Nuestro objetivo es cargar el shell web PHP a través del botón de exploración de logotipo de proveedor. Intentar hacer esto inicialmente fallará, ya que rConfig verifica el tipo de archivo y solo permitirá la carga de tipos de archivos de imagen (.png, .jpg, .gif, etc.). Sin embargo, podemos evitar esta restricción utilizando Burp Suite.

Inicia Burp Suite, navega al menú de configuración de red del navegador y completa los ajustes del proxy. La dirección IP 127.0.0.1 irá en el campo de dirección IP, y 8080 irá en el campo del puerto para asegurarnos de que todas las solicitudes pasen a través de Burp (recuerda que Burp actúa como proxy web).

Configuración del Proxy

Nuestro objetivo es cambiar el tipo de contenido para evitar la restricción del tipo de archivo al cargar archivos para que sean "presentados" como el logotipo del proveedor, de modo que podamos navegar a ese archivo y obtener nuestro shell web.

Evadiendo la Restricción de Tipo de Archivo

Con Burp Suite abierto y la configuración del proxy de nuestro navegador web correctamente configurada, ahora podemos subir el shell web en PHP. Haz clic en el botón Browse, navega hasta donde esté almacenado nuestro archivo .php en la máquina de ataque, selecciona Open y luego Save (es posible que tengamos que aceptar el certificado de PortSwigger). Parecerá que la página web se está colgando, pero eso es porque necesitamos decirle a Burp que reenvíe las solicitudes HTTP. Continúa reenviando las solicitudes hasta que veas la solicitud POST que contiene nuestro archivo subido. Se verá así:

Solicitud POST

Como se mencionó en una sección anterior, notarás que algunas cargas útiles tienen comentarios del autor que explican el uso, dan agradecimientos o enlaces a blogs personales. Esto puede delatarnos, por lo que no siempre es lo mejor dejar los comentarios. Cambiaremos el Content-type de application/x-php a image/gif. Esto "engañará" al servidor y permitirá que subamos el archivo .php, evitando la restricción de tipo de archivo. Una vez que hagamos esto, selecciona Forward dos veces y el archivo será enviado. Ahora podemos apagar el interceptador de Burp y volver al navegador para ver los resultados.

Proveedor Añadido

El mensaje: 'Added new vendor NetVen to Database' nos indica que la subida del archivo fue exitosa. También podemos ver la entrada del proveedor NetVen con un logotipo que muestra una hoja de papel rasgada. Esto significa que rConfig no reconoció el tipo de archivo como una imagen, por lo que utilizó esa imagen por defecto. Ahora podemos intentar usar nuestro shell web. Usando el navegador, navega a este directorio en el servidor rConfig:

/images/vendor/connect.php

Esto ejecutará la carga útil y nos proporcionará una sesión de shell no interactiva directamente en el navegador, permitiéndonos ejecutar comandos en el sistema operativo subyacente.

Éxito con el Shell Web

Consideraciones al Usar Web Shells

Al utilizar shells web, ten en cuenta los siguientes problemas que pueden surgir durante el proceso de pruebas de penetración:

  • Las aplicaciones web a veces eliminan archivos automáticamente después de un período predefinido.

  • Interactividad limitada con el sistema operativo, en términos de navegar por el sistema de archivos, descargar y subir archivos, o encadenar comandos (ej. whoami && hostname), lo que puede ralentizar el progreso, especialmente al realizar enumeraciones.

  • Potencial inestabilidad a través de un shell web no interactivo.

  • Mayor probabilidad de dejar pruebas de que tuvimos éxito en el ataque.

Dependiendo del tipo de prueba (por ejemplo, una evaluación de evasión tipo "caja negra"), es posible que necesitemos intentar pasar desapercibidos y cubrir nuestros rastros. A menudo estamos ayudando a nuestros clientes a probar sus capacidades para detectar una amenaza en vivo, por lo que debemos emular lo más posible los métodos que un atacante malicioso podría intentar, incluidos los esfuerzos para operar con sigilo. Esto ayudará a nuestros clientes y también nos protegerá a largo plazo para evitar que los archivos sean descubiertos después de que termine el período de la prueba. En la mayoría de los casos, al intentar obtener una sesión de shell con un objetivo, sería prudente establecer un shell inverso y luego eliminar la carga útil ejecutada. Además, debemos documentar cada método que intentemos, lo que funcionó y lo que no, e incluso los nombres de las cargas útiles y archivos que intentamos utilizar. Podríamos incluir un sha1sum o hash MD5 del nombre del archivo, las ubicaciones de carga en nuestros informes como prueba, y proporcionar atribución.