Riferimento comandi CLI
Esegui php scanner --help per vedere le opzioni supportate dalla tua versione installata.
php scanner [path] [options]
path accetta un file, una directory, un wildcard, oppure un URL FTP o FTPS. Se omesso, lo scanner usa la directory corrente.
Rilevamento
| Opzione | Scopo |
|---|---|
--lite, -l | Riduce i falsi positivi comuni mantenendo un rilevamento ampio |
--only-signatures, -s | Scansiona solo per firme di malware |
--only-exploits, -e | Scansiona solo per pattern di exploit |
--only-functions, -f | Scansiona solo per funzioni PHP pericolose |
--exploits=<names> | Include definizioni exploit selezionate, separate da virgole |
--ignore-exploits=<names> | Esclude definizioni exploit selezionate, separate da virgole |
--functions=<names> | Scansiona funzioni PHP selezionate, separate da virgole |
--scan-all, --all | Ispeziona i file indipendentemente dall'estensione |
--scan-archives | Ispeziona le voci ZIP entro limiti di sicurezza |
--scan-wordpress-db | Esegue controlli in sola lettura contro un database WordPress locale |
--max-filesize=<size> | Salta i file più grandi della dimensione indicata |
Ambito e avanzamento
| Opzione | Scopo |
|---|---|
--ignore-paths=<patterns> | Esclude percorsi o wildcard separati da virgole |
--filter-paths=<patterns> | Include solo percorsi o wildcard corrispondenti |
--offset=<number> | Inizia da una posizione nell'elenco dei file candidati |
--limit=<number> | Limita il numero di file mappati |
--checkpoint=<path> | Salva lo stato di scansione in un file JSON privato |
--resume | Continua da un checkpoint quando file e impostazioni continuano a corrispondere |
--disable-cache, --no-cache | Ignora i risultati della cache di scansione |
php scanner /var/www/example --lite --report \
--ignore-paths="*/cache/*,*/logs/*" \
--max-filesize=5MB
Report e output
| Opzione | Scopo | Predefinito |
|---|---|---|
--report, -r | Disattiva le azioni interattive e scrive un report | Off |
--report-format=<format> | Seleziona html, txt, json o sarif | html |
--path-report=<path> | Imposta il percorso del file di report | ./scanner-report.html |
--log=<path> | Scrive un log di scansione | Off |
--path-logs=<path> | Imposta il percorso del log dello scanner | ./scanner.log |
--silent | Nasconde l'output e le richieste nel terminale | Off nella CLI |
--disable-report, --no-report | Previene la generazione del report | Off nella CLI |
--disable-colors, --no-colors, --no-color | Rimuove i colori ANSI | Off |
--debug | Mostra tutti gli errori e gli avvisi PHP | Off |
I report di testo includono totali di scansione, conteggi di verifica, totali di severità, metadati dei file infetti e dettagli dei rilevamenti trovati. JSON e SARIF sono adatti all'elaborazione automatica.
Azioni sui file
Usa la pulizia o l'eliminazione automatica solo con backup aggiornati e un piano di recupero verificato. Inizia sempre con --report su ogni nuovo progetto.
| Opzione | Scopo |
|---|---|
--backup, -b | Esegue il backup di ogni file modificato dallo scanner |
--auto-clean | Rimuove il codice rilevato senza conferma |
--auto-clean-line | Rimuove la riga rilevata senza conferma |
--auto-delete | Elimina i file rilevati senza conferma |
--auto-quarantine | Sposta i file rilevati in quarantena |
--auto-skip | Lascia invariati tutti i rilevamenti |
--auto-whitelist | Aggiunge tutti i rilevamenti alla whitelist |
--auto-prompt=<action> | Applica una risposta alle richieste a ogni rilevamento |
--whitelist-only-path | Confronta le voci della whitelist solo per percorso senza leggere la riga |
Memorizza backup, quarantena, report e dati della whitelist fuori dalla document root pubblica:
| Opzione | Scopo |
|---|---|
--path-backups=<path> | Imposta la directory dei backup |
--path-quarantine=<path> | Imposta la directory di quarantena |
--path-whitelist=<path> | Imposta il file JSON della whitelist |
--findings-store=<path> | Imposta il file JSON canonico del ciclo di vita dei rilevamenti |
--path-deobfuscate=<path> | Imposta la directory per i file deofuscati |
Integrità e definizioni
| Opzione | Scopo |
|---|---|
--disable-checksum, --no-checksum, --no-verify | Salta la verifica dei checksum di piattaforma e pacchetti |
--path-definitions=<path> | Imposta la cache privata delle definizioni Maltrail |
--disable-definitions-update | Usa l'ultimo cache verificato di Maltrail senza richiedere aggiornamenti |
--defs | Stampa le definizioni di exploit e funzioni |
--defs-exploits | Stampa le definizioni di exploit |
--defs-functions | Stampa le definizioni delle funzioni pericolose |
--defs-functions-encoded | Stampa le definizioni delle funzioni codificate |
Le signature integrate rimangono disponibili offline. Le verifiche dei checksum della piattaforma e gli aggiornamenti delle definizioni Maltrail possono richiedere HTTPS in uscita al primo avvio di scansione.
Opzioni di utilità
| Opzione | Scopo |
|---|---|
--ftp-user=<username> | Imposta il nome utente FTP, oppure usa AMWSCAN_FTP_USER |
--update, -u | Aggiorna il file standalone dello scanner |
--version, -v | Stampa la versione installata |
--help, -h, -? | Stampa la guida dei comandi |
Sorgenti FTP
Passa un URL ftp://host/path o ftps://host/path come percorso di scansione. PHP richiede l'estensione FTP e FTPS richiede ftp_ssl_connect.
Non inserire credenziali nell'URL. Imposta l'utente con --ftp-user oppure AMWSCAN_FTP_USER. Imposta la password con AMWSCAN_FTP_PASSWORD. Preferisci FTPS perché FTP invia credenziali e contenuti dei file senza crittografia.
AMWSCAN_FTP_USER=scanner \
AMWSCAN_FTP_PASSWORD=secret \
php scanner ftps://files.example.com/public_html --report
Le scansioni FTP usano un mirror locale temporaneo, forzano la modalità report e rimuovono il mirror al termine. Una scansione accetta una sola sorgente FTP con limiti di 10.000 file, 64 MiB per file e 512 MiB totali. Le sorgenti FTP non possono usare --scan-wordpress-db.
Verifica dei checksum della piattaforma
La verifica dei checksum supporta WordPress, alcuni plugin WordPress, Drupal, Joomla, Magento Open Source e pacchetti Composer pubblici. Lo scanner salta solo i file che corrispondono ai byte del rilascio affidabile. Scansiona file modificati, generati e sconosciuti.
Una prima verifica della versione di una piattaforma può richiedere HTTPS in uscita. I manifest riusciti rimangono in una cache locale. Usa --disable-checksum quando la scansione non deve fare richieste di checksum.
Copertura e ripresa
I report separano file scoperti, idonei, scansionati, memorizzati in cache, verificati e saltati. Le cause del salto includono filtri di percorso, estensioni, dimensioni di file, file illeggibili e limiti di archivio.
--checkpoint=<private-path> salva lo stato dopo ogni candidato. --resume continua solo quando l'elenco dei candidati e le impostazioni di scansione corrispondono ancora.
La scansione ZIP richiede ext-zip. Lo scanner limita percorsi delle voci, collegamenti simbolici, numero di voci, dimensione dei file, dimensione espansa, rapporto di compressione e profondità di annidamento. I report indicano come incompleta la copertura del contenuto oltre quei limiti.
Scansione del database WordPress
--scan-wordpress-db esegue una fase opzionale in sola lettura contro installazioni WordPress rilevate localmente. Controlla trigger del database, elenca gli amministratori principali del sito, segnala più amministratori per revisione e riporta post orfani. Non modifica il contenuto del database.
L'opzione richiede ext-mysqli. AMWScan legge le impostazioni del database da wp-config.php senza eseguirlo. Impostazioni dinamiche o ambigue producono un risultato di copertura incompleta.
Uscita e guida all'automazione
Usa JSON quando un altro programma deve elaborare i rilevamenti dettagliati. Usa SARIF per strumenti che supportano lo standard. Mantieni i report come artefatti di build, proteggi i percorsi locali o gli estratti di codice che contengono e testa il comportamento di uscita dello scanner nel tuo job di continuous integration prima di farlo diventare un gate di rilascio.