Share
## https://sploitus.com/exploit?id=9679A8E8-CCDA-596A-8099-795D772CAE1F
# CVE-2018-15133-PoC

Este script Python implementa un exploit de ejecuci贸n remota de c贸digo (RCE) para aplicaciones Laravel vulnerables mediante deserializaci贸n insegura, bas谩ndose en la vulnerabilidad CVE-2018-15133.

El exploit aprovecha una vulnerabilidad en Laravel (versiones 5.5.40 y anteriores, y 5.6.0 a 5.6.29) donde las sesiones cifradas son autom谩ticamente deserializadas sin validaci贸n adecuada. Con acceso a la clave APP_KEY de Laravel, un atacante puede cifrar payloads maliciosos que ser谩n deserializados y ejecutados en el servidor.

# Funcionamiento del Sistema de Sesiones Laravel
Laravel utiliza un mecanismo de cifrado sim茅trico para las sesiones con tres componentes:

- IV (Initialization Vector): Vector de inicializaci贸n aleatorio generado para cada sesi贸n

- Value: Valor cifrado usando AES-128-CBC o AES-256-CBC

- MAC: C贸digo de autenticaci贸n de mensaje (HMAC-SHA256) calculado sobre IV + value + APP_KEY

## Proceso:

- Recibe tres par谩metros de entrada: la clave APP_KEY de Laravel en base64, el comando a ejecutar y el dominio objetivo

- Invoca la herramienta PHPGGC con el gadget chain Laravel/RCE5 para generar una cadena de objetos PHP maliciosos

- Construye el comando del sistema operativo que se ejecutar谩 en el servidor v铆ctima (ejemplo: system('whoami');)

- Genera el payload serializado PHP que contiene los gadgets encadenados

- Decodifica el payload de base64 a formato binario

- Procesa la clave APP_KEY eliminando el prefijo "base64:" si existe

- Completa el padding necesario para que la clave sea base64 v谩lido

- Decodifica la clave de base64 a bytes

- Genera un vector de inicializaci贸n (IV) aleatorio de 16 bytes

- Cifra el payload usando AES en modo CBC con la clave y el IV

- Aplica padding PKCS7 al payload antes del cifrado

- Codifica el IV en base64

- Codifica el ciphertext (payload cifrado) en base64

- Concatena IV y value en base64 como mensaje para el HMAC

- Calcula el MAC usando HMAC-SHA256 sobre el mensaje concatenado con la clave como secreto

- Construye un objeto JSON con tres campos: iv, value y mac

- Codifica el JSON completo en base64

- Construye una petici贸n HTTP usando curl con el payload en la cookie laravel_session

- Env铆a la petici贸n al dominio objetivo

- El servidor Laravel recibe la cookie y decodifica el base64

- Laravel verifica la integridad del MAC contra el IV y value recibidos

- Laravel descifra el contenido usando AES-CBC con su APP_KEY

- Laravel deserializa autom谩ticamente el contenido descifrado

- PHP invoca las funciones m谩gicas __destruct() o __wakeup() de los objetos deserializados

- Se desencadena la cadena de gadgets que culmina en call_user_func() o eval()

- El comando del sistema operativo se ejecuta en el servidor

El exploit utiliza cadenas de gadgets que encadenan llamadas a funciones m谩gicas de PHP:

Durante la deserializaci贸n, PHP invoca autom谩ticamente `__destruct()` o `__wakeup()`, iniciando la cadena que culmina en `eval()` ejecutando c贸digo arbitrario.

Requisitos Previos
Para que el exploit funcione, el atacante necesita:

- La clave APP_KEY de Laravel (obtenida mediante filtraci贸n de variables de entorno, buckets S3 expuestos, c贸digo fuente, etc.)

- Versi贸n vulnerable de Laravel con deserializaci贸n habilitada por defecto

- PHPGGC instalado en el directorio ./phpggc/ https://github.com/ambionics/phpggc

Ejemplo de Uso

``` bash
python exploit.py "base64:dGhpc2lzYXNlY3JldGtleQ==" "whoami" "http://target.htb"
Este comando generar谩 un payload serializado que ejecutar谩 whoami cuando Laravel deserialice la sesi贸n.
```