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
PoW-Shield — Projet dédié à la lutte contre les DDoS de couche 7 avec preuve de travail, avec un WAF et un contrôleur supplémentaires. Complété avec un ensemble complet de fonctionnalités et conteneurisé pour un déploiement rapide et léger. | Kitploit
Outils/GitHubGitHub/ruisiang/pow-shield
Sécurité Web
GitHubruisiang/pow-shield

PoW-Shield

Projet dédié à la lutte contre les DDoS de couche 7 avec preuve de travail, avec un WAF et un contrôleur supplémentaires. Complété avec un ensemble complet de fonctionnalités et conteneurisé pour un déploiement rapide et léger.

Voir le dépôtSite web
408749il y a 1 anVérifié par Kitploit

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

Description

PoW Shield offre une protection contre les DDoS sur la couche application OSI en agissant comme un proxy qui utilise une preuve de travail (proof of work) entre le service backend et l'utilisateur final. Ce projet vise à fournir une alternative aux méthodes générales anti-DDoS telles que le ReCaptcha de Google qui a toujours été pénible à résoudre. Accéder à un service web protégé par PoW Shield n'a jamais été aussi simple : il suffit d'aller sur l'URL, et votre navigateur effectuera automatiquement le reste de la vérification pour vous.

PoW Shield vise à fournir les services suivants regroupés dans une seule application web / image Docker :

  • authentification par preuve de travail
  • limitation de débit et liste noire IP
  • pare-feu d'application web

(Nouveau) Article sur LinkedIn

Présenté sur Pentester Academy TV

Article sur Medium

Fonctionnalités

  • Structure de service Web
  • Fonctionnalité de proxy
  • Implémentation de PoW
  • Dockerisation
  • Liste noire IP
  • Limitation de débit
  • Tests unitaires
  • Implémentation du WAF
  • Synchronisation multi-instance (Redis)
  • Support SSL

Pris en charge via le contrôleur PoW Phalanx :

  • Gestion multi-instance
  • Jetons en liste blanche
  • Synchronisation IP en liste noire
  • Contrôle dynamique de la difficulté
  • Tableau de bord

Implémentation alternative en Go PoW-Shield-Go (en cours) à des fins de tests de charge et pour une future version de production optimisée.

Comment ça marche

En gros, PoW Shield fonctionne comme un proxy placé devant l'application/service web réel. Il effectue une vérification via une preuve de travail et ne transmet que le trafic autorisé au serveur réel. Le proxy est facilement installable et capable de protéger des applications à faible sécurité avec un WAF.

Voici ce qui se passe en coulisse lorsqu'un utilisateur navigue sur un service web protégé par PoW Shield :

  1. Le serveur génère un « préfixe » aléatoire codé en hexadécimal et l'envoie avec la page PoW Shield au client.
  2. Le JavaScript du navigateur côté client tente ensuite de forcer brutalement un « nonce » qui, lorsqu'il est ajouté au préfixe, peut produire un hachage SHA256 avec un nombre de bits zéro en tête supérieur à la « difficulté » D spécifiée par le serveur. C'est-à-dire SHA256(préfixe + nonce)=0…0xxxx (binaire, avec plus de D zéros en tête).
  3. Le JavaScript côté client envoie ensuite le nonce calculé au serveur pour vérification. Si la vérification réussit, le serveur génère un cookie pour que le client puisse passer l'authentification.
  4. Le serveur commence à transmettre le trafic du client désormais authentifié au serveur avec le filtrage WAF activé.

Configuration

Vous pouvez configurer PoW Shield via les méthodes suivantes.

  • nodejs : .env (exemple : .env.example)
  • docker-compose : docker-compose.yaml (exemple : docker-compose.example.yaml)
  • docker run : paramètre -e

Variables d'environnement

VariableTypePar défautDescription
PORTGénéral3000port sur lequel PoW Shield écoute
SESSION_KEYGénéralclé secrète pour les signatures de cookies, utilisez-en une unique pour des raisons de sécurité, sinon n'importe qui peut falsifier vos cookies signés
BACKEND_URLGénéralemplacement vers lequel transmettre le trafic authentifié, IP et URL sont acceptés (accepte protocol://url(:port) ou protocol://ip(:port))
DATABASE_HOSTRedis127.0.0.1hôte du service redis
DATABASE_PORTRedis6379port du service redis
DATABASE_PASSWORDRedisnullmot de passe du service redis
POWPoWonactive/désactive la fonctionnalité PoW (si elle n'est pas temporairement désactivée, pourquoi utiliser ce projet ?)
NONCE_VALIDITYPoW60000spécifie le nombre maximum de secondes pendant lesquelles un nonce peut être soumis au serveur après sa génération (utilisé pour imposer un changement de difficulté et filtrer les nonces obsolètes)
DIFFICULTYPoW13difficulté du problème, nombre de bits zéro en tête dans le hachage produit (0 : extrêmement facile ~ 256 : impossible, 13 (défaut) prend environ 5 secondes pour que le navigateur calcule)
RATE_LIMITLimite de débitonactive/désactive la fonctionnalité de limitation de débit
RATE_LIMIT_SAMPLE_MINUTESLimite de débit60spécifie le nombre de minutes avant la réinitialisation des statistiques pour une session/IP
RATE_LIMIT_SESSION_THRESHOLDLimite de débit100nombre de requêtes qu'une session unique peut effectuer avant de déclencher la révocation du jeton
RATE_LIMIT_BAN_IPLimite de débitonactive/désactive la fonctionnalité de bannissement IP
RATE_LIMIT_IP_THRESHOLDLimite de débit500nombre de requêtes qu'une session unique peut effectuer avant de déclencher le bannissement IP
RATE_LIMIT_BAN_MINUTESLimite de débit15nombre de minutes pendant lesquelles le bannissement IP persiste

Utilisation

Nodejs

Prérequis

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

# Install dependencies
npm install

# Configure settings
cp -n .env.example .env
# Edit .env
nano .env

# Transpile
npm run build

#############################################
# Run with db (redis), recommended & faster #
# install redis first                       #
# sudo apt-get install redis-server         #
#############################################
npm start
#############################################

#############################################
#        Run without db (mock redis)        #
#############################################
npm run start:standalone # linux
npm run start:standalone-win # windows
#############################################

# Test functionalities(optional)
npm test

Docker (repo)

root@kitploit:~
####################################################
# Docker run with db (redis), recommended & faster #
####################################################
docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -d ruisiang/pow-shield
####################################################

####################################################
#        Docker run without db (mock redis)        #
####################################################
docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -e NODE_ENV="standalone" -d ruisiang/pow-shield
####################################################

####################################################
#                  Docker Compose                  #
####################################################
# Copy docker-compose.example.yaml
cp -n docker-compose.example.yaml docker-compose.yaml
# Edit docker-compose.yaml
nano docker-compose.yaml

# Start the container
docker-compose -f docker-compose.yaml up
####################################################

Test de charge

Remarque : Ceci ne fonctionne que sur la version non conteneurisée de PoW Shield, et votre système pourrait devenir instable lors de l'exécution du test.

root@kitploit:~
# Start the stress test
npm run stress

# If you changed the PORT variable in .env, you should also change the target variable in the stress test script
nano scripts/stress.sh

Les tests suivants sont effectués sur un seul thread d'un CPU i7-10870H avec une période de 60 secondes pour chaque paramètre de concurrence.

Mass GET

Connexions simultanéesLatence moyenneTaux d'erreurRequêtes/seconde
6415.3ms0.00004188
12830.2ms0.00004229
25660.4ms0.00004235
512122.6ms0.01424166
1024261.7ms0.17663894
20481966.5ms0.49791027
40964685ms0.7179838

Inondation de Nonce

Connexions simultanéesLatence moyenneTaux d'erreurRequêtes/seconde
6415.6msN/A4094
12831.5msN/A4058
25661.5msN/A4159
512129.5msN/A3945
1024264.4msN/A3858
2048592.1msN/A3407
40961212.6msN/A3322

D'après l'échantillon ci-dessus, on peut voir que la charge maximale appropriée estimée pour PoW Shield est d'environ 512 connexions simultanées. Les taux d'erreur et les latences se dégradent au-delà de l'acceptation normale par la suite. Par conséquent, dans un environnement équilibré en charge sur la machine (1 instance PoW Shield sur chacun de ses 8 cœurs), il devrait pouvoir gérer un maximum d'environ 4096 connexions simultanées (clients) avec un débit total d'environ 32 000 requêtes/seconde.

Références

  • Preuve de travail (Proof-of-work) par Fedor Indutny (fonctions utilitaires PoW)
  • Shadowd par Zesecure (règles WAF)

Licence

MIT

Télécharger l’outil
WAF
WAF
on
active/désactive la fonctionnalité WAF
WAF_URL_EXCLUDE_RULESWAFrègles à exclure lors de l'analyse de l'URL de la requête, utilisez ',' pour séparer les numéros de règles, utilisez '-' pour spécifier une plage (ex : 1,2-4,5,7-10)
WAF_HEADER_EXCLUDE_RULESWAF14,33,80,96,100règles à exclure lors de l'analyse de l'en-tête de la requête, utilisez ',' pour séparer les numéros de règles, utilisez '-' pour spécifier une plage (ex : 1,2-4,5,7-10)
WAF_BODY_EXCLUDE_RULESWAFrègles à exclure lors de l'analyse du corps de la requête, utilisez ',' pour séparer les numéros de règles, utilisez '-' pour spécifier une plage (ex : 1,2-4,5,7-10)
SSLSSLoffactive/désactive la fonctionnalité SSL
SSL_CERT_PATHSSLtests/ssl/mock-cert.pemchemin vers le certificat SSL
SSL_KEY_PATHSSLtests/ssl/mock-key.pemchemin vers la clé SSL
SOCKETSocketoffactive/désactive la fonctionnalité socket
SOCKET_URLSocketemplacement du contrôleur PoW Phalanx, IP et URL sont acceptés (accepte protocol://url:port ou protocol://ip:port)
SOCKET_TOKENSocketjeton d'abonnement pour le contrôleur PoW Phalanx