Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
mhr-cfw — Un Relay de Domain-Fronting que enruta el tráfico a través de GAS (Google Apps Script) y lo reenvía a Cloudflare Workers. Diseñado para evitar DPI. | Kitploit
Herramientas/GitHubGitHub/denuitt1/mhr-cfw
Proxies Web e InterceptaciónEvasión de IDS/IPSSeguridad en la NubeRed Teaming
GitHubdenuitt1/mhr-cfw

mhr-cfw

Un Relay de Domain-Fronting que enruta el tráfico a través de GAS (Google Apps Script) y lo reenvía a Cloudflare Workers. Diseñado para evitar DPI.

Ver Repositorio
4.4k4162hace 3 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

MHR-CFW

MITM Domain-Fronted HTTP Relay + Cloudflare Worker Exit

GitHub

InglésPersa

Cómo Funciona

1 - GAS + Cloudflare Worker Exit

root@kitploit:~
Client -> Local Relay -> Google/CDN Front -> GAS (Google Apps Script) Relay -> Cloudflare Worker -> Exit
            |
            +-> Shows www.google.com to network DPI filter

2 - GAS + Cloudflare Worker Middle + Self-Hosted Upstream Forwarder Relay Exit

root@kitploit:~
Client -> Local Relay -> Google/CDN Front -> GAS (Google Apps Script) Relay -> Cloudflare Worker -> Self-Hosted Upstream Forwarder -> Exit
            |
            +-> Shows www.google.com to network DPI filter

En uso normal, el navegador envía el tráfico al proxy que se ejecuta en tu computadora. El proxy envía ese tráfico a través de la infraestructura de Google para que la red solo vea un dominio permitido como www.google.com. Tu relay desplegado luego obtiene el sitio web real a través de Cloudflare Worker y envía la respuesta de vuelta por el mismo camino.

Esto significa que el filtro ve tráfico normal de Google, mientras que el destino real permanece oculto dentro de la solicitud del relay.


Cómo Usar

1 - Descargar proyecto y extraer

root@kitploit:~
git clone https://github.com/denuitt1/mhr-cfw.git
cd mhr-cfw
pip install -r requirements.txt

¿No puedes acceder a PyPI directamente? Usa este mirror en su lugar:

root@kitploit:~
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com

2 - Configurar el Cloudflare Worker (worker.js)

  1. Abre Cloudflare Dashboard e inicia sesión con tu cuenta de Cloudflare.
  2. Desde la barra lateral, navega a Compute > Workers & Pages.
  3. Haz clic en Create Application, elige Start with Hello World y haz clic en Implementar.
  4. Haz clic en Edit code y elimina todo el código predeterminado en el editor.
  5. Abre el archivo worker.js de este proyecto (bajo deploy/), copia todo y pégalo en el editor de Apps Script.
  6. Importante: Cambia el worker en esta línea por el worker que creaste:
    root@kitploit:~
    const WORKER_URL = "myworker.workers.dev";
    
  7. Haz clic en Implementar.

3 - Configurar el Relay de Google (Code.gs)

  1. Abre Google Apps Script e inicia sesión con tu cuenta de Google.
  2. Haz clic en Nuevo proyecto.
  3. Elimina todo el código predeterminado en el editor.
  4. Abre el archivo Code.gs de este proyecto (bajo deploy/), copia todo y pégalo en el editor de Apps Script.
  5. Importante: Cambia la contraseña en esta línea por algo que solo tú sepas y reemplaza la URL del worker con la de tu Cloudflare Worker:
    root@kitploit:~
    const AUTH_KEY = "tu-contraseña-secreta-aqui";
    const WORKER_URL = "https://myworker.workers.dev";
    
  6. Haz clic en Implementar → Nueva implementación.
  7. Elige Aplicación web como tipo.
  8. Establece:
    • Ejecutar como: Yo
    • Quién tiene acceso: Cualquiera
  9. Haz clic en Implementar.
  10. Copia el ID de implementación (se ve como una larga cadena aleatoria). Lo necesitarás en el siguiente paso.

⚠️ Recuerda la contraseña que configuraste en el paso 3. Usarás la misma contraseña en el archivo de configuración más abajo.

4 - Ejecutar

Haz clic en el archivo run.bat (en Windows) o run.sh (en Linux) para iniciar el relay.

Si es la primera vez que lo ejecutas, se iniciará un asistente de configuración donde deberás ingresar el AUTH_KEY y el ID de implementación de Google Apps Script. Deberías ver un mensaje indicando que el proxy HTTP se está ejecutando en 127.0.0.1:8085.

5 - Uso

Recomendamos usar el cliente v2rayN y configurar un proxy socks5.

También puedes usar la extensión de Chrome o extensión de Firefox de FoxyProxy para usar este proxy en tu navegador.

6 - Probar tu conexión

Abre ipleak.net en tu navegador; deberías ver tu dirección IP establecida como la de Cloudflare.

imagen

7 - Guías de Uso Adicionales

Usar el Proxy Dentro de una Máquina Virtual

Cuando ejecutas una máquina virtual (VM), opera en un entorno de red aislado separado del host. Por defecto, la VM no puede acceder directamente a los servicios que se ejecutan en localhost de la máquina host — incluido este proxy.

Para solucionarlo, necesitas encontrar la IP de puerta de enlace que tu hipervisor asigna al host, luego usarla en lugar de localhost al configurar el proxy dentro de la VM.

Ejemplo: VirtualBox (modo NAT)

El host siempre es accesible desde dentro de la VM en 10.0.2.2. Configura el proxy:

root@kitploit:~
export http_proxy="http://10.0.2.2:8085"
export https_proxy="http://10.0.2.2:8085"
export all_proxy="socks5://10.0.2.2:8085"

Para hacer esto permanente, agrega las líneas anteriores a ~/.bashrc y ejecuta source ~/.bashrc.

Dado que este proxy realiza inspección SSL, es posible que veas errores de certificado. Instala el ca.crt incluido para solucionarlos:

root@kitploit:~
sudo cp ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates

Compartir el Proxy a Través de una Red Local (p. ej. Dispositivos Móviles)

Puedes usar este proxy en tu teléfono o cualquier otro dispositivo en la misma red — sin necesidad de software adicional.

1. Encuentra la IP de tu host

root@kitploit:~
# Windows
ipconfig

# Linux / macOS
ip addr

Busca la IP del adaptador conectado a tu router (p. ej., 192.168.1.8).

2. Reenvía el puerto (solo Windows, si el servicio está vinculado a localhost)

Ejecuta CMD como Administrador:

root@kitploit:~
netsh interface portproxy add v4tov4 listenaddress=192.168.1.8 listenport=8085 connectaddress=127.0.0.1 connectport=8085
netsh advfirewall firewall add rule name="Proxy 8085" dir=in action=allow protocol=TCP localport=8085

3. Configura el proxy en tu teléfono

Conecta tu teléfono a la misma Wi-Fi, luego configura el proxy manualmente:

  • Host: la IP de tu host (p. ej., 192.168.1.8)
  • Puerto: 8085

En Android: Ajustes → Wi-Fi → Modificar → Proxy → Manual
En iPhone: Ajustes → Wi-Fi → (red) → Proxy HTTP → Manual

4. Instala el certificado CA

Transfiere ca.crt a tu teléfono, luego:

  • Android: Ajustes → Seguridad → Instalar un certificado → Certificado CA
  • iPhone: Abre el archivo → instalar perfil → Ajustes → General → Acerca de → Confianza de certificados → activarlo

Opcional: IP de Salida Estable a través de Upstream Forwarder

Los CAPTCHAs (Cloudflare Turnstile/desafío de bot, reCAPTCHA, hCaptcha) vinculan tokens a la IP que resolvió el desafío. Los Cloudflare Workers salen por diferentes IPs de borde por solicitud, por lo que la verificación en el sitio de destino falla incluso cuando resuelves el desafío. Este complemento opcional permite que el Worker envíe todas las llamadas fetch() a través de un pequeño servidor Node que ejecutas en un VPS con una IP estable — dando al sitio de destino una dirección de salida consistente.

Cuándo lo necesitas

  • Los sitios detrás del desafío de bots de Cloudflare te devuelven constantemente a la página de desafío.
  • Los formularios de inicio de sesión te rechazan después de resolver un reCAPTCHA/hCaptcha.
  • Necesitas continuidad de cookies entre solicitudes (p. ej., cf_clearance).

Si no te encuentras con esto, déjalo sin configurar — el Worker se comporta exactamente como antes.

Por qué se requiere un servidor separado

Los Cloudflare Workers no exponen una IP de salida estable — fetch() sale a través de un grupo rotatorio de IPs de borde de Cloudflare, que es precisamente lo que rompe los tokens CAPTCHA vinculados a IP. Las opciones de salida estática de Cloudflare (BYOIP, Egress Workers) son de nivel Enterprise, por lo que un VPS pequeño con una IP estática es la solución práctica. El forwarder es solo un proxy ligero que re-emite el fetch() desde una dirección estable.

1. Implementa el forwarder en un VPS

La implementación de referencia es deploy/upstream-forwarder/upstream_forwarder.js. Requiere Node 18+ y no tiene dependencias. Ejecútalo detrás de Caddy o nginx con TLS — el Worker rechaza URLs de forwarder que no sean HTTPS.

root@kitploit:~
# En tu VPS (ejemplo Ubuntu/Debian):
sudo apt install -y nodejs   # debe ser 18+
export AUTH_KEY="una-cadena-aleatoria-larga-de-al-menos-32-caracteres"
export PORT=8787
node deploy/upstream-forwarder/upstream_forwarder.js

Ponlo detrás de Caddy para TLS automático:

root@kitploit:~
forwarder.example.com {
    reverse_proxy 127.0.0.1:8787
}

Prueba rápida:

root@kitploit:~
curl -X POST https://forwarder.example.com/fwd \
  -H "x-upstream-auth: $AUTH_KEY" \
  -H "content-type: application/json" \
  -d '{"u":"https://httpbin.org/ip","m":"GET","h":{}}'

El cuerpo de la respuesta decodificada debería mostrar la IP del VPS.

2. Conecta el Worker al forwarder

En el panel de Cloudflare → tu Worker → Configuración → Variables y Secretos:

Guarda y vuelve a implementar el Worker.

3. Verifica

Navega a https://httpbin.org/ip a través del proxy — deberías ver la IP del VPS, no la de Cloudflare. Luego vuelve a un sitio protegido con CAPTCHA que no funcionaba — el desafío ahora debería validarse.

El forwarder debe requerir autenticación. Sin AUTH_KEY se niega a iniciar. Cualquier persona con la URL y la clave puede usarlo como relay, así que mantén ambos en secreto.

4. Limita el forwarder a hosts específicos (opcional)

Por defecto, cada solicitud que maneja el Worker se enruta a través del forwarder, por lo que el tráfico no relacionado también consume ancho de banda del VPS. Para enviar solo los sitios que necesitan una IP de salida estable a través del VPS, enuméralos en forwarder_hosts en config.json — misma sintaxis que bypass_hosts (nombre de host exacto o .sufijo). Cualquier cosa que no coincida vuelve al fetch() directo en el Worker.

root@kitploit:~
{
   ...
   "forwarder_hosts": [
       "example.com",
       ".cf-protected-suffix"
   ]
   ...
}

Deja la lista vacía (o elimina la clave) para mantener el comportamiento histórico de "reenviar todo".


Descargo de Responsabilidad

MHR-CFW se proporciona únicamente con fines educativos, de prueba e investigación.

  • Sin garantía: Este software se proporciona "TAL CUAL", sin garantía expresa o implícita, incluyendo comerciabilidad, idoneidad para un propósito particular y no infracción.
  • Limitación de responsabilidad: Los desarrolladores y colaboradores no son responsables de ningún daño directo, indirecto, incidental, consecuente o de otro tipo que resulte del uso de este proyecto o de la imposibilidad de usarlo.
  • Responsabilidad del usuario: Ejecutar este proyecto fuera de entornos de prueba controlados puede afectar redes, cuentas, proxies, certificados o sistemas conectados. Eres el único responsable de la instalación, configuración y uso.
  • Cumplimiento legal: Eres responsable de cumplir con todas las leyes y regulaciones locales, nacionales e internacionales antes de usar este software.
  • Cumplimiento de servicios de Google: Si usas Google Apps Script u otros servicios de Google con este proyecto, eres responsable de cumplir con los Términos de Servicio de Google, las reglas de uso aceptable, las cuotas y las políticas de la plataforma. El mal uso puede llevar a la suspensión o terminación de tu cuenta de Google o implementaciones.
  • Términos de licencia: El uso, copia, distribución y modificación de este software se rigen por la licencia del repositorio. Cualquier uso fuera de esos términos está prohibido.

Contribuyentes

  • Agradecimientos especiales a onlymaj

Fuentes

  • Este proyecto está basado en MasterHttpRelayVPN

Licencia

MIT

Descargar herramienta
NombreTipoValor
UPSTREAM_FORWARDER_URLSecretohttps://forwarder.example.com/fwd
UPSTREAM_AUTH_KEYSecretoel mismo AUTH_KEY que configuraste en el VPS
UPSTREAM_FAIL_MODEVariableclosed (predeterminado) — devuelve 502 si falla el forwarder. Usa open para recurrir a fetch directo.
UPSTREAM_TIMEOUT_MSVariable (opcional)predeterminado 25000