Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PoW-Shield — Progetto dedicato alla lotta contro gli attacchi DDoS di Layer 7 con proof of work, con un WAF e controller aggiuntivi. Completato con un set completo di funzionalità e containerizzato per una distribuzione rapida e leggera. | Kitploit
Strumenti/GitHubGitHub/ruisiang/pow-shield
Sicurezza Web
GitHubruisiang/pow-shield

PoW-Shield

Progetto dedicato alla lotta contro gli attacchi DDoS di Layer 7 con proof of work, con un WAF e controller aggiuntivi. Completato con un set completo di funzionalità e containerizzato per una distribuzione rapida e leggera.

Vedi RepositorySito web
4087491 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
PoW Shield

Descrizione

PoW Shield fornisce protezione DDoS a livello applicativo OSI agendo come proxy che utilizza la proof of work tra il servizio backend e l'utente finale. Questo progetto mira a fornire un'alternativa ai metodi anti-DDoS generali come Google ReCaptcha, che è sempre stato fastidioso da risolvere. Accedere a un servizio web protetto da PoW Shield non è mai stato così semplice: basta andare all'URL e il browser eseguirà automaticamente la verifica per te.

PoW Shield mira a fornire i seguenti servizi in un'unica webapp / immagine docker:

  • autenticazione proof of work
  • limitazione di velocità e blacklist IP
  • firewall per applicazioni web

(Nuovo) Articolo su LinkedIn

Presentato su Pentester Academy TV

Storia su Medium

Caratteristiche

  • Struttura del Servizio Web
  • Funzionalità Proxy
  • Implementazione PoW
  • Dockerizzazione
  • Blacklist IP
  • Limitazione di Velocità
  • Test Unitari
  • Implementazione WAF
  • Sincronizzazione Multi-Istanza (Redis)
  • Supporto SSL

Supportato tramite il controller PoW Phalanx:

  • Gestione Multi-Istanza
  • Token Whitelist
  • Sincronizzazione Blacklist IP
  • Controllo Dinamico della Difficoltà
  • Dashboard

Implementazione alternativa in Go PoW-Shield-Go (WIP) per scopi di stress test e futura versione ottimizzata di produzione.

Come Funziona

In pratica, PoW Shield funge da proxy davanti all'effettiva web app/servizio. Esegue la verifica tramite proof of work e inoltra solo il traffico autorizzato al server reale. Il proxy è facilmente installabile ed è in grado di proteggere applicazioni a bassa sicurezza con un WAF.

Ecco cosa succede dietro le quinte quando un utente naviga su un servizio web protetto da PoW Shield:

  1. Il server genera un "prefisso" casuale codificato in esadecimale e lo invia insieme alla pagina PoW Shield al client.
  2. Il JavaScript del browser lato client tenta quindi di forzare bruscamente un "nonce" che, aggiunto al prefisso, possa produrre un hash SHA256 con un numero di bit zero iniziali maggiore della "difficoltà" D specificata dal server. Cioè SHA256(prefisso + nonce)=0...0xxxx (binario, con più di D zero iniziali)
  3. Il JavaScript lato client invia quindi il nonce calcolato al server per la verifica; se la verifica ha successo, il server genera un cookie per consentire al client di superare l'autenticazione.
  4. Il server inizia a inoltrare il traffico del client ormai autenticato al server con il filtraggio WAF abilitato.

Configurazione

Puoi configurare PoW Shield tramite i seguenti metodi.

  • nodejs: .env (esempio: .env.example)
  • docker-compose: docker-compose.yaml (esempio: docker-compose.example.yaml)
  • docker run: parametro -e

Variabili d'Ambiente

VariabileTipoDefaultDescrizione
PORTGenerale3000porta su cui PoW Shield ascolta
SESSION_KEYGeneralechiave segreta per le firme dei cookie, usane una unica per motivi di sicurezza, altrimenti chiunque può falsificare i tuoi cookie firmati
BACKEND_URLGeneraleposizione verso cui inoltrare il traffico autenticato, sono accettati sia IP che URL (accetta protocol://url(:port) o protocol://ip(:port))
DATABASE_HOSTRedis127.0.0.1host del servizio redis
DATABASE_PORTRedis6379porta del servizio redis
DATABASE_PASSWORDRedisnullpassword del servizio redis
POWPoWonattiva/disattiva la funzionalità PoW (se non disattivata temporaneamente, perché usare questo progetto?)
NONCE_VALIDITYPoW60000specifica il massimo di secondi entro cui un nonce deve essere inviato al server dopo la generazione (usato per imporre il cambio di difficoltà e filtrare nonce obsoleti)
DIFFICULTYPoW13difficoltà del problema, numero di bit zero iniziali nell'hash prodotto (0:estremamente facile ~ 256:impossibile, 13(default) richiede circa 5 secondi al browser per il calcolo)
RATE_LIMITRate Limitonattiva/disattiva la funzionalità di limitazione di velocità
RATE_LIMIT_SAMPLE_MINUTESRate Limit60specifica quanti minuti fino al reset delle statistiche per sessione/IP
RATE_LIMIT_SESSION_THRESHOLDRate Limit100numero di richieste che una singola sessione può effettuare prima di innescare la revoca del token
RATE_LIMIT_BAN_IPRate Limitonattiva/disattiva la funzionalità di ban IP
RATE_LIMIT_IP_THRESHOLDRate Limit500numero di richieste che una singola sessione può effettuare prima di innescare il ban IP
RATE_LIMIT_BAN_MINUTESRate Limit15numero di minuti per cui persiste il ban IP
WAFWAFonattiva/disattiva la funzionalità WAF

Utilizzo

Nodejs

Prerequisiti

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

Stress Test

Nota: Funziona solo sulla versione non containerizzata di PoW Shield e il sistema potrebbe diventare instabile durante l'esecuzione del 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

I seguenti test sono condotti su un singolo thread di una CPU i7-10870H con un periodo di 60 secondi per ogni parametro di concorrenza.

Mass GET

Connessioni ConcorrentiLatenza MediaTasso di ErroreRichieste/Secondo
6415.3ms0.00004188
12830.2ms0.00004229
25660.4ms0.00004235
512122.6ms0.01424166
1024261.7ms0.17663894
20481966.5ms0.49791027
40964685ms0.7179838

Nonce Flood

Connessioni ConcorrentiLatenza MediaTasso di ErroreRichieste/Secondo
6415.6msN/A4094
12831.5msN/A4058
25661.5msN/A4159
512129.5msN/A3945
1024264.4msN/A3858
2048592.1msN/A3407
40961212.6msN/A3322

Dal campione sopra, possiamo vedere che il carico massimo appropriato stimato per PoW Shield è di circa 512 connessioni concorrenti. I tassi di errore e le latenze peggiorano oltre l'accettazione normale successivamente. Quindi, in un ambiente bilanciato del carico sulla macchina (1 istanza PoW Shield su ciascuno degli 8 core), dovrebbe essere in grado di gestire un massimo di circa 4096 connessioni concorrenti (client) con un tasso totale di richieste di 32k richieste/secondo.

Riferimenti

  • Proof-of-work di Fedor Indutny (funzioni di utilità PoW)
  • Shadowd di Zesecure (regole WAF)

Licenza

MIT

Scarica lo strumento
WAF_URL_EXCLUDE_RULES
WAF
regole da escludere durante la scansione dell'URL della richiesta, usa ',' per separare i numeri delle regole, usa '-' per specificare un intervallo (es: 1,2-4,5,7-10)
WAF_HEADER_EXCLUDE_RULESWAF14,33,80,96,100regole da escludere durante la scansione dell'header della richiesta, usa ',' per separare i numeri delle regole, usa '-' per specificare un intervallo (es: 1,2-4,5,7-10)
WAF_BODY_EXCLUDE_RULESWAFregole da escludere durante la scansione del corpo della richiesta, usa ',' per separare i numeri delle regole, usa '-' per specificare un intervallo (es: 1,2-4,5,7-10)
SSLSSLoffattiva/disattiva la funzionalità SSL
SSL_CERT_PATHSSLtests/ssl/mock-cert.pempercorso verso la password del certificato SSL
SSL_KEY_PATHSSLtests/ssl/mock-key.pempercorso verso la chiave SSL
SOCKETSocketoffattiva/disattiva la funzionalità socket
SOCKET_URLSocketposizione del controller PoW Phalanx, sono accettati sia IP che URL (accetta protocol://url:port o protocol://ip:port)
SOCKET_TOKENSockettoken di sottoscrizione per il controller PoW Phalanx