Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1310 CNY

100%

CVE-2018-15133 PoC — Laravel Framework 安全漏洞

Source
Associated Vulnerability
Title:Laravel Framework 安全漏洞 (CVE-2018-15133)
Description:In Laravel Framework through 5.5.40 and 5.6.x through 5.6.29, remote code execution might occur as a result of an unserialize call on a potentially untrusted X-XSRF-TOKEN value. This involves the decrypt method in Illuminate/Encryption/Encrypter.php and PendingBroadcast in gadgetchains/Laravel/RCE/3/chain.php in phpggc. The attacker must know the application key, which normally would never occur, but could happen if the attacker previously had privileged access or successfully accomplished a previous attack.
Readme
# 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.
```






File Snapshot

Log in to view the POC file snapshot cached by Shenlong Bot

Log in to view
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →