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
PoW-Shield — Proyecto dedicado a combatir DDoS de capa 7 con prueba de trabajo, con un WAF y controlador adicionales. Completado con un conjunto completo de características y contenerizado para un despliegue rápido y ligero. | Kitploit
Herramientas/GitHubGitHub/ruisiang/pow-shield
Seguridad Web
GitHubruisiang/pow-shield

PoW-Shield

Proyecto dedicado a combatir DDoS de capa 7 con prueba de trabajo, con un WAF y controlador adicionales. Completado con un conjunto completo de características y contenerizado para un despliegue rápido y ligero.

Ver RepositorioSitio web
40874hace 1 añoRevisado 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
PoW Shield

Descripción

PoW Shield proporciona protección DDoS en la capa de aplicación OSI actuando como un proxy que utiliza prueba de trabajo (proof of work) entre el servicio backend y el usuario final. Este proyecto busca ofrecer una alternativa a los métodos generales anti-DDoS como el ReCaptcha de Google, que siempre ha sido un problema de resolver. Acceder a un servicio web protegido por PoW Shield nunca ha sido más fácil: simplemente vaya a la URL y su navegador hará el resto de la verificación automáticamente.

PoW Shield tiene como objetivo proporcionar los siguientes servicios empaquetados en una sola aplicación web / imagen Docker:

  • autenticación mediante prueba de trabajo
  • limitación de velocidad y lista negra de IP
  • firewall de aplicaciones web (WAF)

(Nuevo) Artículo en LinkedIn

Presentado en Pentester Academy TV

Historia en Medium

Características

  • Estructura de servicio web
  • Funcionalidad de proxy
  • Implementación de PoW
  • Dockerización
  • Lista negra de IP
  • Limitación de velocidad
  • Pruebas unitarias
  • Implementación de WAF
  • Sincronización multi-instancia (Redis)
  • Soporte SSL

Compatible con el controlador PoW Phalanx:

  • Gestión multi-instancia
  • Tokens de lista blanca
  • Sincronización de lista negra de IP
  • Control dinámico de dificultad
  • Panel de control

Implementación alternativa en Go PoW-Shield-Go (WIP) para pruebas de estrés y futura versión optimizada de producción.

Cómo funciona

Básicamente, PoW Shield funciona como un proxy delante de la aplicación/servicio web real. Realiza la verificación mediante prueba de trabajo y solo permite el tráfico autorizado hacia el servidor real. El proxy es fácil de instalar y es capaz de proteger aplicaciones de baja seguridad con un WAF.

Esto es lo que sucede detrás de escena cuando un usuario navega por un servicio web protegido por PoW Shield:

  1. El servidor genera un "prefijo" hexadecimal aleatorio y lo envía junto con la página de PoW Shield al cliente.
  2. El JavaScript del navegador del cliente intenta entonces encontrar por fuerza bruta un "nonce" que, al añadirse al prefijo, pueda producir un hash SHA256 con un número de bits cero iniciales mayor que la "dificultad" D especificada por el servidor. Es decir, SHA256(prefix + nonce)=0…0xxxx (binario, con más de D ceros iniciales).
  3. El JavaScript del cliente envía el nonce calculado al servidor para su verificación; si la verificación es exitosa, el servidor genera una cookie para que el cliente pase la autenticación.
  4. El servidor comienza a redirigir el tráfico del cliente ahora autenticado al servidor con el filtrado WAF activado.

Configuración

Puede configurar PoW Shield mediante los siguientes métodos.

  • nodejs: .env (ejemplo: .env.example)
  • docker-compose: docker-compose.yaml (ejemplo: docker-compose.example.yaml)
  • docker run: parámetro -e

Variables de entorno

Uso

Nodejs

Prerrequisitos

  • Docker ^19.0.0
  • Nodejs ^14.0.0
root@kitploit:~
# Clonar el repositorio
git clone https://github.com/RuiSiang/PoW-Shield.git

# Instalar dependencias
npm install

# Configurar ajustes
cp -n .env.example .env
# Editar .env
nano .env

# Transpilar
npm run build

#############################################
# Ejecutar con base de datos (redis), recomendado y más rápido #
# instalar redis primero                       #
# sudo apt-get install redis-server         #
#############################################
npm start
#############################################

#############################################
#        Ejecutar sin base de datos (redis simulado)        #
#############################################
npm run start:standalone # linux
npm run start:standalone-win # windows
#############################################

# Probar funcionalidades (opcional)
npm test

Docker (repositorio)

root@kitploit:~
####################################################
# Docker ejecutar con base de datos (redis), recomendado y más rápido #
####################################################
docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -d ruisiang/pow-shield
####################################################

####################################################
#        Docker ejecutar sin base de datos (redis simulado)        #
####################################################
docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -e NODE_ENV="standalone" -d ruisiang/pow-shield
####################################################

####################################################
#                  Docker Compose                  #
####################################################
# Copiar docker-compose.example.yaml
cp -n docker-compose.example.yaml docker-compose.yaml
# Editar docker-compose.yaml
nano docker-compose.yaml

# Iniciar el contenedor
docker-compose -f docker-compose.yaml up
####################################################

Prueba de estrés

Nota: Esto solo funciona en la versión no contenedorizada de PoW Shield, y su sistema podría experimentar inestabilidad al ejecutar la prueba.

root@kitploit:~
# Iniciar la prueba de estrés
npm run stress

# Si cambió la variable PORT en .env, también debe cambiar la variable target en el script de prueba de estrés
nano scripts/stress.sh

Las siguientes pruebas se realizan en un solo hilo de una CPU i7-10870H con un período de 60 segundos para cada parámetro concurrente.

GET masivo

Inundación de nonces

A partir de la muestra anterior, podemos ver que la carga máxima estimada adecuada para PoW Shield es de alrededor de 512 conexiones concurrentes. Las tasas de error y las latencias se deterioran más allá de la aceptación normal a partir de ahí. Por lo tanto, en un entorno balanceado de carga en la máquina (1 instancia de PoW Shield en cada uno de sus 8 núcleos), debería poder manejar un máximo de aproximadamente 4096 conexiones concurrentes (clientes) con una tasa total de solicitudes de 32k solicitudes/segundo.

Referencias

  • Proof-of-work por Fedor Indutny (funciones de utilidad PoW)
  • Shadowd por Zesecure (reglas WAF)

Licencia

MIT

Descargar herramienta
VariableTipoValor por defectoDescripción
PORTGeneral3000puerto en el que PoW Shield escucha
SESSION_KEYGeneralclave secreta para firmar cookies, use una única por razones de seguridad, de lo contrario cualquiera podría falsificar sus cookies firmadas
BACKEND_URLGeneralubicación a donde redirigir el tráfico autenticado, se aceptan IP y URL (acepta protocolo://url(:puerto) o protocolo://ip(:puerto))
DATABASE_HOSTRedis127.0.0.1host del servicio redis
DATABASE_PORTRedis6379puerto del servicio redis
DATABASE_PASSWORDRedisnullcontraseña del servicio redis
POWPoWonactiva/desactiva la funcionalidad PoW (si no se desactiva temporalmente, ¿para qué usar este proyecto?)
NONCE_VALIDITYPoW60000especifica el tiempo máximo en segundos que un nonce puede ser enviado al servidor después de su generación (se usa para forzar cambios de dificultad y filtrar nonces obsoletos)
DIFFICULTYPoW13dificultad del problema, número de bits cero iniciales en el hash producido (0: extremadamente fácil ~ 256: imposible, 13 (predeterminado) tarda unos 5 segundos en calcularse en el navegador)
RATE_LIMITRate Limitonactiva/desactiva la funcionalidad de limitación de velocidad
RATE_LIMIT_SAMPLE_MINUTESRate Limit60especifica cuántos minutos hasta que se reinicien las estadísticas de sesión/IP
RATE_LIMIT_SESSION_THRESHOLDRate Limit100número de solicitudes que una sola sesión puede realizar hasta que se active la revocación del token
RATE_LIMIT_BAN_IPRate Limitonactiva/desactiva la funcionalidad de baneo de IP
RATE_LIMIT_IP_THRESHOLDRate Limit500número de solicitudes que una sola sesión puede realizar hasta que se active el baneo de IP
RATE_LIMIT_BAN_MINUTESRate Limit15número de minutos que dura el baneo de IP
WAFWAFonactiva/desactiva la funcionalidad WAF
WAF_URL_EXCLUDE_RULESWAFreglas a excluir al escanear la URL de la solicitud. Use ',' para separar números de regla, use '-' para especificar un rango (ej: 1,2-4,5,7-10)
WAF_HEADER_EXCLUDE_RULESWAF14,33,80,96,100reglas a excluir al escanear el encabezado de la solicitud. Use ',' para separar números de regla, use '-' para especificar un rango (ej: 1,2-4,5,7-10)
WAF_BODY_EXCLUDE_RULESWAFreglas a excluir al escanear el cuerpo de la solicitud. Use ',' para separar números de regla, use '-' para especificar un rango (ej: 1,2-4,5,7-10)
SSLSSLoffactiva/desactiva la funcionalidad SSL
SSL_CERT_PATHSSLtests/ssl/mock-cert.pemruta al certificado SSL
SSL_KEY_PATHSSLtests/ssl/mock-key.pemruta a la clave SSL
SOCKETSocketoffactiva/desactiva la funcionalidad de socket
SOCKET_URLSocketubicación del controlador PoW Phalanx, se aceptan IP y URL (acepta protocolo://url:puerto o protocolo://ip:puerto)
SOCKET_TOKENSockettoken de suscripción para el controlador PoW Phalanx
Conexiones concurrentesLatencia mediaTasa de errorSolicitudes/segundo
6415.3ms0.00004188
12830.2ms0.00004229
25660.4ms0.00004235
512122.6ms0.01424166
1024261.7ms0.17663894
20481966.5ms0.49791027
40964685ms0.7179838
Conexiones concurrentesLatencia mediaTasa de errorSolicitudes/segundo
6415.6msN/A4094
12831.5msN/A4058
25661.5msN/A4159
512129.5msN/A3945
1024264.4msN/A3858
2048592.1msN/A3407
40961212.6msN/A3322