
Packer Fuzzer è uno scanner veloce ed efficiente per il rilevamento di sicurezza di siti web costruiti con bundler di moduli JavaScript come Webpack.
Qualsiasi conseguenza o perdita diretta o indiretta derivante dalla diffusione o dall'utilizzo delle funzionalità di rilevamento fornite da Packer Fuzzer (di seguito denominato 'lo strumento') è di esclusiva responsabilità dell'utente. Il team di sviluppo di Packer Fuzzer (di seguito 'il team') non si assume alcuna responsabilità per questo.
Lo strumento genererà automaticamente un report dei risultati di scansione in base ai risultati del rilevamento dell'utente. Il contenuto di questo report e qualsiasi altro derivato non rappresentano la posizione o il punto di vista del team.
Si prega di rispettare le leggi e i regolamenti locali del paese dell'utente e del sistema di destinazione durante l'utilizzo dello strumento. Qualsiasi test non autorizzato non è consentito. In caso di violazioni di legge, ci riserviamo il diritto di perseguire la vostra responsabilità legale e collaboreremo pienamente con le autorità competenti nelle indagini.
Con la crescente popolarità degli strumenti di bundling front-end, nei vostri test di penetrazione e servizi di sicurezza quotidiani, vi imbattete sempre più spesso in siti web rappresentati da Webpack bundler? Questi bundler raggruppano tutte le API e i parametri delle API del sito in un unico insieme per la chiamata centralizzata, facilitando la rapida individuazione delle funzionalità del sito e dell'elenco delle API. Tuttavia, spesso i file JS generati da questi bundler sono estremamente numerosi e la quantità totale di codice JS è enorme (fino a decine di migliaia di righe), causando notevoli disagi ai test manuali. È qui che entra in gioco Packer Fuzzer.
Lo strumento supporta l'estrazione automatica e fuzzy delle API del sito target e dei parametri corrispondenti, e supporta il rilevamento rapido ed efficiente di sette vulnerabilità: accesso non autorizzato, esposizione di informazioni sensibili, CORS, SQL injection, escalation orizzontale dei privilegi, password deboli e upload arbitrario di file. Al termine della scansione, lo strumento supporta anche la generazione automatica di report. È possibile scegliere tra versioni HTML facili da analizzare e versioni più formali come doc, pdf e txt.
E non dovete preoccuparvi dei problemi linguistici legati all'internazionalizzazione: lo strumento include cinque pacchetti linguistici principali (inclusi i modelli di report): cinese semplificato, francese, spagnolo, inglese, giapponese (ordinati per accuratezza della traduzione), tradotti dal nostro team poco professionale.
Nota: la prima versione dello strumento ha ottimizzato solo le regole per Webpack bundler, per gli altri bundler attendere versioni future.
Questo strumento è sviluppato in Python3. Prima di eseguirlo, assicurarsi di avere installato il software Python3.X e pip3. Se non si dispone dell'ambiente, seguire le istruzioni: https://www.runoob.com/python3/python3-install.html
Gli utenti MacOS possono installare rapidamente con il seguente comando:
brew install python3 # installerà automaticamente pip3
Gli utenti Ubuntu possono installare rapidamente con il seguente comando:
sudo apt-get install -y python3 && sudo apt install -y python3-pip
Gli utenti CentOS possono installare rapidamente con il seguente comando:
sudo yum -y install epel-release && sudo yum install python3 && yum install -y python3-setuptools && easy_install pip
Lo strumento eseguirà codice NodeJS nativo tramite node_vm2, pertanto si consiglia di installare l'ambiente NodeJS (altri ambienti JS non sono consigliati, potrebbero causare errori di parsing). Se non si dispone dell'ambiente, seguire le istruzioni: https://www.runoob.com/nodejs/nodejs-install-setup.html
Gli utenti MacOS possono installare rapidamente con il seguente comando:
brew install node
Gli utenti Ubuntu possono installare rapidamente con il seguente comando:
sudo apt-get install nodejs && sudo apt-get install npm
Gli utenti CentOS possono installare rapidamente con il seguente comando:
sudo yum -y install nodejs
Utilizzare il seguente comando per installare con un clic le librerie Python necessarie per lo strumento:
pip3 install -r requirements.txt
È possibile utilizzare il comando python3 PackerFuzzer.py [options] per eseguire lo strumento. Le opzioni sono descritte di seguito:
-h(--help) Comando di aiuto, nessun parametro aggiuntivo, visualizza tutti i parametri supportati dallo strumento e le relative descrizioni;
-u(--url)
Percorso URL del sito web da scansionare, obbligatorio, ad esempio: -u https://demo.poc-sir.com;
-c(--cookie)
Cookie aggiuntivi, opzionali, se specificati verranno passati globalmente, ad esempio: -c "POC=666;SIR=233";
-d(--head)
Intestazioni HTTP aggiuntive, opzionali, se specificate verranno passate globalmente, il predefinito è Cache-Control:no-cache, ad esempio: -d "Token:3VHJ32HF0";
-l(--lang)
Opzione lingua, se vuota seleziona automaticamente la lingua di sistema, se non esiste un pacchetto corrispondente passa all'inglese. Pacchetti disponibili: cinese semplificato (zh), francese (fr), spagnolo (es), inglese (en), giapponese (ja), ad esempio: -l zh;
-t(--type)
Suddiviso in modalità base e avanzata. Se vuoto, usa la modalità base per impostazione predefinita. La modalità avanzata esegue una nuova scansione di tutte le API, estrae in modo fuzzy i parametri delle API e rileva: SQL injection, escalation orizzontale dei privilegi, password deboli e upload arbitrario di file. Utilizzare l'opzione adv per la modalità avanzata, ad esempio: -t adv;
-p(--proxy)
Proxy globale, opzionale, se specificato utilizza un IP proxy globale, ad esempio: -p https://hack.cool:8080;
-j(--js)
File JS aggiuntivi, opzionale, se si ritiene che ci siano altri file JS da analizzare, utilizzare questa opzione, ad esempio: -j https://demo.poc-sir.com/js/index.js,https://demo.poc-sir.com/js/vue.js;
-b(--base)
Specifica la parte intermedia dell'API (ad esempio, se un'API è https://demo.poc-sir.com/v1_api/login, il basedir è v1_api). Opzionale, se si ritiene che il basedir estratto automaticamente non sia accurato, utilizzare questa opzione, ad esempio: -b v1_api;
-r(--report)
Specifica il formato del report generato. Se vuoto, genera report in formato HTML e DOC per impostazione predefinita. Formati disponibili: html, doc, pdf, txt, ad esempio: -r html,pdf;
-e(--ext)
Opzione per abilitare i plugin di estensione. Lo strumento supporta la scrittura di plugin personalizzati da salvare nella directory ext (per la scrittura, fare riferimento al file demo.py nella directory corrispondente). Disabilitato per impostazione predefinita. Quando l'utente utilizza il comando on, lo strumento eseguirà automaticamente i plugin nella directory corrispondente, ad esempio: -e on;
-f(--flag)
Opzione di sicurezza della connessione SSL. Se vuota, è disabilitata per impostazione predefinita, bloccando tutte le connessioni non sicure. Se si desidera ignorare lo stato SSL, utilizzare il comando 1 per abilitare, ignorando tutti gli errori di certificato, ad esempio: -f 1;
-s(--silent)
Opzione silenziosa. Una volta abilitata, tutte le richieste di conferma YES/NO verranno automaticamente impostate su YES e il contenuto dopo il parametro sarà il nome del report di scansione (nome personalizzato). Utilizzabile per modalità unattended, operazioni batch, chiamate plugin, ecc., ad esempio: -s Scan_Task_777.
--st(--sendtype) Opzione del metodo di richiesta. Attualmente supporta i parametri POST e GET. Una volta abilitata, verrà utilizzato il metodo corrispondente per scansionare tutte le API. Se disabilitato, verrà utilizzato un metodo intelligente basato sul codice di stato HTTP.
--ct(--contenttype) Opzione Content-Type. Consente di personalizzare il contenuto del parametro Content-Type nell'intestazione HTTP durante la scansione. Se non abilitato, verrà utilizzato il metodo intelligente basato sul codice di stato HTTP.
--pd(--postdata) Opzione dati POST. Consente di personalizzare il contenuto della richiesta POST durante la scansione (tutte le scansioni utilizzeranno questo contenuto, valido solo per scenari POST). Se non abilitato, verrà utilizzato il metodo intelligente basato sul codice di stato HTTP.
--ah(--apihost)
Opzione dominio API. Consente di personalizzare il dominio per tutte le richieste API durante la scansione. Ad esempio: la parte API (percorso API estratto dal JS) è /v1/info, l'URL di scansione (parametro -u) è http://exp.com/. Se il parametro apihost è https://pocsir.com:777/, l'API sarà https://pocsir.com:777/v1/info anziché http://exp.com/v1/info. Utilizzato per scenari in cui l'API ha un dominio o server diverso dal frontend.
--fe(--fileext)
Opzione estensione API. Consente di aggiungere un'estensione specifica a tutte le API per gestire i casi in cui l'estensione non viene estratta. Ad esempio: se l'API estratta è https://pocsir.com:777/v1/info, specificando --fe .json lo strumento convertirà automaticamente l'API in https://pocsir.com:777/v1/info.json per la scansione e il rilevamento.
Se si verifica un blocco apparente o la scansione viene interrotta a causa di un errore imprevisto, non preoccupatevi. È possibile trovare il file di database Sqlite con estensione .db nella cartella della cache corrispondente all'interno della directory tmp. Una volta aperto, si vedranno tutti i risultati in tempo reale del progetto salvati in questo database. È possibile analizzare i risultati della scansione direttamente dal database della cache;
Si consiglia di personalizzare baseurl per migliorare il successo della concatenazione delle API e ridurre il numero di richieste. Trovare il baseurl non è difficile: basta attivare una qualsiasi API nel sito di destinazione e osservare la parte mancante per individuarlo rapidamente;
Non si consiglia di utilizzare la modalità avanzata dello strumento su siti grandi e complessi, poiché in alcuni casi la modalità avanzata consumerà molto tempo per eseguire continuamente corrispondenze regex in background, portando lo strumento a uno stato di blocco apparente;
Se le API del sito A si trovano tutte sul sito B: è possibile utilizzare direttamente il comando --ah(--apihost) dello strumento per personalizzare l'indirizzo del server API;
Se in ambiente Windows non è possibile creare o leggere il database, fare clic con il pulsante destro del mouse su 'Esegui come amministratore'. Anche su Linux/Mac, prestare attenzione ai permessi; si consiglia di utilizzare il comando sudo.
È possibile inviare ISSUE direttamente nel repository Github: https://github.com/rtcatc/Packer-Fuzzer/issues
Se si ritiene che un obiettivo specifico non debba essere divulgato pubblicamente, è possibile inviarci un'email: admin[at]hackinn.com
Quando si invia, per aiutarci a identificare il problema, allegare il file di log corrispondente nella directory logs. Grazie per la collaborazione!
Nel frattempo, è possibile scansionare il codice QR del gruppo di chat in basso a sinistra per unirsi al nostro gruppo di discussione WeChat (temporaneamente non disponibile a causa delle limitazioni di WeChat), oppure scansionare il codice QR personale di '天下大木头(KpLi0rn)' a destra con la nota 'Packer Fuzzer' e lui vi aggiungerà al gruppo:
v1.0 2020/09/30
v1.1 2020/11/21
v1.2 2021/01/21
v1.3 2021/04/23
v1.4 2022/06/19