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
web_exploit_detector — Web Exploit Detector è un'applicazione Node.js utilizzata per rilevare possibili infezioni, codice malevolo e file sospetti in ambienti di web hosting. | Kitploit
Strumenti/GitHubGitHub/polaris64/web_exploit_detector
Scanner di VulnerabilitàAnalisi del CodiceSicurezza WebAnalisi Malware
GitHubpolaris64/web_exploit_detector

web_exploit_detector

Web Exploit Detector è un'applicazione Node.js utilizzata per rilevare possibili infezioni, codice malevolo e file sospetti in ambienti di web hosting.

Vedi Repository

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
Sito web
86369 anni faRevisionato da Kitploit

Rilevatore di Exploit Web

Logo di Web Exploit Detector

Introduzione

Il Rilevatore di Exploit Web è un'applicazione Node.js (e modulo NPM) utilizzata per rilevare possibili infezioni, codice malevolo e file sospetti in ambienti di hosting web. Questa applicazione è pensata per essere eseguita su server web che ospitano uno o più siti. Eseguendo l'applicazione si genera un elenco di file potenzialmente infetti, insieme a una descrizione dell'infezione e riferimenti a risorse online correlate.

A partire dalla versione 1.1.0, l'applicazione include anche utilità per generare e confrontare snapshot di una struttura di directory, consentendo agli utenti di vedere se alcuni file sono stati modificati, aggiunti o rimossi.

L'applicazione è ospitata qui su GitHub in modo che altri possano trarne beneficio, oltre a permettere ad altri di contribuire con le proprie regole di rilevamento.

Collegamenti

  • Il mio sito web: https://www.polaris64.net/
  • Il mio blog sulla cybersecurity, che contiene articoli che descrivono alcuni di questi exploit e come rimuoverli: https://www.polaris64.net/blog/cyber-security
  • Contattami
  • Modulo NPM

Installazione

Utenti normali

Il modo più semplice per installare Web Exploit Detector è come modulo NPM globale: -

npm install -g web_exploit_detector

Se stai utilizzando Linux o un altro sistema operativo basato su Unix, potresti dover eseguire questo comando come root (ad esempio sudo npm install -g web_exploit_detector).

Aggiornamento

Il modulo dovrebbe essere aggiornato regolarmente per assicurarsi che tutte le ultime regole di rilevamento siano presenti. Eseguendo il comando sopra si scaricherà sempre l'ultima versione stabile (testata). Per aggiornare una versione già installata, basta eseguire il seguente comando: -

npm update -g web_exploit_detector

Ancora, potresti dover usare il comando sudo come sopra.

Utenti tecnici

Puoi anche clonare il repository Git ed eseguire lo script direttamente in questo modo: -

  1. git clone https://github.com/polaris64/web_exploit_detector
  2. cd web_exploit_detector
  3. npm install

Esecuzione

Dal modulo NPM

Se hai installato Web Exploit Detector come modulo NPM (vedi sopra), eseguire lo scanner è semplice come eseguire il seguente comando, passando il percorso della tua webroot (posizione dei file del tuo sito): -

wed-scanner --webroot=/var/www/html

Sono disponibili altre opzioni da riga di comando; basta eseguire wed-scanner --help per vedere un messaggio di aiuto che le descrive.

Eseguire lo script in questo modo produrrà output leggibile dall'uomo sulla console. Questo è molto utile quando si esegue lo script con cron, ad esempio, poiché l'output può essere inviato come email ogni volta che lo script viene eseguito.

Lo script supporta anche la scrittura dei risultati in un formato JSON più adatto ai computer per un'elaborazione successiva. Per attivare questo output, vedere l'argomento da riga di comando --output.

Dal repository Git clonato

Basta chiamare lo script tramite node e passare il percorso della tua webroot come segue: -

node index.js --webroot=/var/www/html

Snapshot ricorsivi di directory

Web Exploit Detector include anche due utilità per aiutare a identificare file che potrebbero essere cambiati inaspettatamente. Un attacco riuscito a un sito di solito comporta l'eliminazione di file, l'aggiunta di nuovi file o la modifica di file esistenti in qualche modo.

Snapshot

Uno snapshot (come usato da queste utilità) è un file JSON che elenca tutti i file insieme a una descrizione del loro contenuto nel momento in cui lo snapshot è stato creato. Se uno snapshot è stato generato lunedì, ad esempio, e poi il sito è stato attaccato martedì, eseguire un confronto tra questo snapshot e i file attuali del sito mostrerà che uno o più file sono stati aggiunti, eliminati o modificati. L'obiettivo di queste utilità è quindi quello di permettere la creazione di questi snapshot e l'esecuzione dei confronti quando necessario.

Lo snapshot memorizza ogni percorso file insieme a un hash SHA-256 del contenuto del file. Un hash, o digest, è un piccolo riepilogo di un messaggio, che in questo caso è il contenuto del file. Se il contenuto del file cambia, anche in modo molto piccolo, l'hash diventerà completamente diverso. Ciò fornisce un buon modo per rilevare qualsiasi modifica al contenuto dei file.

Utilizzo

Le seguenti due utilità sono anch'esse installate come parte di Web Exploit Detector: -

  • wed-generate-snapshot: questa utilità permette di generare uno snapshot per tutti i file (ricorsivamente) in una directory specificata tramite "--webroot". Lo snapshot verrà salvato in un file specificato nell'opzione "--output".
  • wed-compare-snapshot: una volta generato uno snapshot, può essere confrontato con il contenuto corrente della stessa directory. Lo snapshot da controllare viene specificato tramite l'opzione "--snapshot". La directory di base da confrontare è memorizzata all'interno dello snapshot, ma se la directory di base è cambiata da quando lo snapshot è stato generato, è possibile usare l'opzione --webroot.

Flusso di lavoro

Gli snapshot possono essere generati con la frequenza desiderata, ma come regola generale dovrebbero essere generati ogni volta che un sito è in uno stato pulito (non infetto) e ogni volta che è stata apportata una modifica legittima. Per i siti basati su CMS come WordPress, gli snapshot dovrebbero essere creati regolarmente poiché nuovi caricamenti faranno sì che il nuovo stato differisca dallo snapshot memorizzato. Per i siti i cui file non dovrebbero mai cambiare, è possibile generare un singolo snapshot e poi usarlo a tempo indeterminato per assicurarsi che nulla cambi effettivamente.

Utilizzo come modulo

Lo script src/web-exploit-detector.js è un modulo ES6 che esporta l'insieme di regole come rules oltre a una serie di funzioni: -

  • executeTests(settings): esegue il controllo degli exploit basandosi sull'oggetto settings passato. Per l'utilizzo, consultare lo script index.js.
  • formatResult(result): prende un singolo result di test dall'array restituito da executeTests() e genera una stringa di risultati pronta per l'output per quel test.
  • getFileList(path): restituisce un array di file dal path di base usando readDirRecursive().
  • processRulesOnFile(file, rules): processa tutte le regole dell'array rules su un singolo file (percorso stringa).
  • readDirRecursive(path): funzione ricorsiva che restituisce una Promise che verrà risolta con un array di tutti i file in e sottodirectory.

Lo script src/cli.js è una semplice interfaccia a riga di comando (CLI) per questo modulo, utilizzata dallo script wed-scanner, quindi leggere questo script mostra un modo in cui questo modulo può essere utilizzato.

Il progetto utilizza Babel per compilare i moduli ES6 in "src" in moduli JavaScript semplici in "lib". Se stai utilizzando una versione obsoleta di Node.js, i moduli possono essere require()'d dalla directory "lib" invece.

Compilazione

Il pacchetto contiene Babel come dev-dependency e gli script "build" e "watch:build". Quando si esegue lo script "build" (npm run build), i moduli ES6 in "./src" verranno compilati e salvati in "./lib", dove vengono inclusi dagli script CLI.

La directory "./lib" è inclusa nel repository in modo che qualsiasi utente possa clonare il repository ed eseguire l'applicazione direttamente senza dover installare dev-dependency e compilare l'applicazione.

Esclusione dei risultati per regola

A volte le regole, specialmente quelle etichettate con suspicion, identificheranno un file pulito come potenziale exploit. Per questo motivo, è incluso anche un sistema per consentire l'esclusione di file da controllare per una regola.

Lo script wed-results-to-exceptions prende un file di output dallo script principale di rilevamento (vedi l'opzione --output) e ti dà la possibilità di escludere ogni file a turno per ogni regola specifica. Tutti i file esclusi vengono memorizzati in un file chiamato wed-exceptions.json (nella home directory dell'utente) che viene letto dallo script principale prima di eseguire la scansione. Se un file è elencato in questo file, tutte le regole allegate (per ID) verranno saltate quando si controlla questo file.

Per istruzioni sull'utilizzo, basta eseguire wed-results-to-exceptions. Dovrai prima avere un JSON di output valido da un'esecuzione precedente del rilevatore principale utilizzando l'opzione --output.

Per gli utenti che lavorano direttamente con il repository Git, esegui node results_to_exceptions.js nella directory principale del progetto.

Motore delle regole

L'applicazione opera utilizzando una collezione di "regole" che vengono caricate quando l'applicazione viene eseguita. Ogni regola consiste in un ID, nome, descrizione, elenco di URL, tag, flag di obsolescenza e, soprattutto, un insieme di test.

Ogni singolo test deve essere uno dei seguenti: -

  • Un'espressione regolare: il tipo più semplice di test, qualsiasi valore che corrisponde alla regex supera il test.
  • Un callback booleano: la funzione callback deve restituire un valore booleano che indica se il valore supera il test. Il callback è libero di eseguire qualsiasi operazione sincrona.
  • Un callback Promise: la funzione callback deve restituire una Promise che viene risolta con un valore booleano che indica se il valore supera il test. Questo tipo di callback è libero di eseguire qualsiasi operazione asincrona.

Sono supportati i seguenti tipi di test: -

  • "path": utilizzato per controllare il percorso del file. Questo test deve esistere e dovrebbe restituire true se il percorso del file è considerato corrispondente alla regola.
  • "content": utilizzato per controllare il contenuto di un file. Questo test è opzionale e il contenuto del file verrà letto e inviato solo alle regole che implementano questo tipo di test. Quando questo test è una funzione, il contenuto (stringa) verrà passato come primo argomento e il percorso del file come secondo argomento, consentendo al test di eseguire ulteriori operazioni sul file.

Espandere le regole

Poiché gli exploit basati sul web sono in continua evoluzione e vengono creati nuovi exploit, anche l'insieme di regole deve essere aggiornato. Poiché ospito diversi siti web, osservo costantemente nuovi tipi di exploit, quindi aggiungerò all'insieme di regole ogni volta che posso. Eseguo questo strumento sui miei server, quindi ovviamente voglio che sia il più funzionale possibile!

Questo mi porta alle ragioni per cui ho reso questa applicazione disponibile come progetto open-source: primo, affinché tu e altri possiate trarne beneficio, e secondo, affinché possiamo tutti collaborare per contribuire con regole di rilevamento in modo che l'applicazione sia sempre aggiornata.

Contribuire con regole

Se hai scoperto un exploit che non viene rilevato da questo strumento, per favore contattami per farmelo sapere o, ancora meglio, scrivi la tua regola e aggiungila all'insieme di regole di terze parti (rules/third-party/index.js), quindi inviami una pull request.

Non preoccuparti se non sai come scrivere le tue regole; la cosa più importante è che la regola venga aggiunta, quindi sentiti libero di inviarmi quante più informazioni possibile sull'exploit e cercherò di creare una mia regola.

Le regole sono categorizzate, ma il modo più semplice per aggiungere la tua regola è aggiungerla all'insieme di regole di terze parti menzionato sopra. Gli ID delle regole sono scritti nel seguente formato: "autore:tipo:sotto-tipo(i):id-regola". Ad esempio, una delle mie regole è "P64:php:cms:wordpress:wso_webshell". "P64" sono io (l'autore), "php:cms:wordpress" è il raggruppamento (una regola specifica per PHP, per il Sistema di Gestione dei Contenuti (CMS) chiamato WordPress) e "wso_webshell" è l'ID specifico della regola. Quando scrivi le tue regole, cerca di seguire questo formato e sostituisci "P64" con il tuo nome utente GitHub o un altro identificativo univoco.

Test unitari e linting

Il progetto contiene un insieme di test Jasmine che possono essere eseguiti usando npm test. Contiene anche una configurazione ESLint, ed ESLint può essere eseguito usando npm run lint.

Durante lo sviluppo, i test possono anche essere eseguiti quando un file sorgente cambia eseguendo npm run watch:test. Per eseguire test ed ESLint, si può usare lo script npm run watch:all.

Tieni presente che, a meno che tu non abbia già Jasmine e/o nodemon installati, dovresti eseguire npm install in modalità non di produzione per garantire che le dev-dependency siano installate.

Crediti

Grazie all'utente Reddit mayupvoterandomly per aver suggerito la funzionalità di snapshot delle directory aggiunta nella versione 1.1.0 e per aver suggerito nuove regole che verranno aggiunte presto.

Licenza

Licenza ISC

Copyright (c) 2017, Simon Pugnet

Con la presente viene concessa l'autorizzazione, a titolo gratuito, a chiunque ottenga una copia di questo software e dei relativi file di documentazione (il "Software"), di utilizzare il Software senza restrizioni, inclusi, senza limitazione, i diritti di utilizzo, copia, modifica, fusione, pubblicazione, distribuzione, sottolicenza e/o vendita di copie del Software, e di consentire alle persone a cui il Software è fornito di fare altrettanto, alle seguenti condizioni:

Il suddetto avviso di copyright e questo avviso di autorizzazione devono essere inclusi in tutte le copie o parti sostanziali del Software.

IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSE, MA NON LIMITATE A, LE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE E NON VIOLAZIONE. IN NESSUN CASO L'AUTORE SARÀ RESPONSABILE PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, DERIVANTE DA O IN CONNESSIONE CON IL SOFTWARE O L'USO O ALTRE OPERAZIONI NEL SOFTWARE.

Scarica lo strumento
path