Aller au contenu principal
Version: v0.20

Référence des commandes CLI

Exécutez php scanner --help pour voir les options prises en charge par votre version installée.

php scanner [path] [options]

path accepte un fichier, un répertoire, un wildcard, ou une URL FTP ou FTPS. Lorsqu'il est omis, le scanner utilise le répertoire actuel.

Détection

OptionObjectif
--lite, -lRéduit les faux positifs courants tout en conservant une détection large
--only-signatures, -sAnalyse uniquement les signatures de malware
--only-exploits, -eAnalyse uniquement les motifs d'exploitation
--only-functions, -fAnalyse uniquement les fonctions PHP dangereuses
--exploits=<names>Inclut des définitions d'exploitation sélectionnées, séparées par des virgules
--ignore-exploits=<names>Exclut des définitions d'exploitation sélectionnées, séparées par des virgules
--functions=<names>Analyse des fonctions PHP sélectionnées, séparées par des virgules
--scan-all, --allInspecte les fichiers quel que soit l'extension
--scan-archivesInspecte les entrées ZIP dans des limites de sécurité
--scan-wordpress-dbExécute des vérifications en lecture seule sur une base de données WordPress locale
--max-filesize=<size>Ignore les fichiers plus grands que la taille indiquée

Portée et progression

OptionObjectif
--ignore-paths=<patterns>Exclut des chemins ou des wildcards séparés par des virgules
--filter-paths=<patterns>N'inclut que les chemins ou wildcards correspondants
--offset=<number>Commence à une position dans la liste des fichiers candidats
--limit=<number>Limite le nombre de fichiers mappés
--checkpoint=<path>Enregistre la progression réversible dans un fichier JSON privé
--resumeContinue une analyse à partir d'un point de contrôle lorsque ses fichiers et paramètres correspondent encore
--disable-cache, --no-cacheIgnore les résultats de scan en cache
php scanner /var/www/example --lite --report \
--ignore-paths="*/cache/*,*/logs/*" \
--max-filesize=5MB

Rapports et sorties

OptionObjectifValeur par défaut
--report, -rDésactive les actions interactives et écrit un rapportOff
--report-format=<format>Sélectionne html, txt, json ou sarifhtml
--path-report=<path>Définit le chemin du fichier de rapport./scanner-report.html
--log=<path>Écrit un journal de scanOff
--path-logs=<path>Définit le chemin du journal du scanner./scanner.log
--silentMasque la sortie du terminal et les invitesOff dans CLI
--disable-report, --no-reportEmpêche la génération de rapportOff dans CLI
--disable-colors, --no-colors, --no-colorSupprime les couleurs ANSIOff
--debugAffiche toutes les erreurs et avertissements PHPOff

Les rapports texte incluent les totaux de scan, les comptes de vérification, les totaux par gravité, les métadonnées des fichiers infectés et les détails des détections correspondantes. JSON et SARIF conviennent au traitement automatisé.

Actions sur les fichiers

Les actions automatisées peuvent détruire des données

Utilisez le nettoyage automatique ou la suppression uniquement avec des sauvegardes à jour et un plan de récupération testé. Commencez par --report sur chaque nouveau projet.

OptionObjectif
--backup, -bSauvegarde chaque fichier modifié par le scanner
--auto-cleanSupprime le code correspondant sans confirmation
--auto-clean-lineSupprime la ligne correspondante sans confirmation
--auto-deleteSupprime les fichiers détectés sans confirmation
--auto-quarantineDéplace les fichiers détectés vers la quarantaine
--auto-skipLaisse chaque détection inchangée
--auto-whitelistAjoute chaque détection à la liste blanche
--auto-prompt=<action>Applique une réponse de prompt à chaque détection
--whitelist-only-pathCorrespond aux entrées de la liste blanche par chemin sans correspondance de ligne

Conservez les sauvegardes, la quarantaine, les rapports et les données de liste blanche hors de la racine du document public :

OptionObjectif
--path-backups=<path>Définit le répertoire de sauvegarde
--path-quarantine=<path>Définit le répertoire de quarantaine
--path-whitelist=<path>Définit le fichier JSON de liste blanche
--findings-store=<path>Définit le fichier JSON canonique du cycle de vie des détections
--path-deobfuscate=<path>Définit le répertoire des fichiers déobfusqués

Intégrité et définitions

OptionObjectif
--disable-checksum, --no-checksum, --no-verifyIgnore la vérification des sommes de contrôle des plateformes et des paquets
--path-definitions=<path>Définit le cache privé des définitions Maltrail
--disable-definitions-updateUtilise le dernier cache vérifié de Maltrail sans demande de mise à jour
--defsAffiche les définitions d'exploit et de fonction
--defs-exploitsAffiche les définitions d'exploit
--defs-functionsAffiche les définitions des fonctions dangereuses
--defs-functions-encodedAffiche les définitions codées des fonctions

Les signatures intégrées restent disponibles hors ligne. Les sommes de contrôle des plateformes et les mises à jour des définitions Maltrail peuvent nécessiter un HTTPS sortant lors du premier scan.

Options utilitaires

OptionObjectif
--ftp-user=<username>Définit le nom d'utilisateur FTP, ou utilisez AMWSCAN_FTP_USER
--update, -uMet à jour le fichier autonome du scanner
--version, -vAffiche la version installée
--help, -h, -?Affiche l'aide de la commande

Sources FTP

Passez une URL ftp://host/path ou ftps://host/path comme chemin de scan. PHP a besoin de l'extension FTP, et FTPS a besoin de ftp_ssl_connect.

Ne placez pas les identifiants dans l'URL. Définissez le nom d'utilisateur avec --ftp-user ou AMWSCAN_FTP_USER. Définissez le mot de passe avec AMWSCAN_FTP_PASSWORD. Préférez FTPS, car FTP envoie les identifiants et le contenu des fichiers sans chiffrement.

AMWSCAN_FTP_USER=scanner \
AMWSCAN_FTP_PASSWORD=secret \
php scanner ftps://files.example.com/public_html --report

Les scans FTP utilisent un miroir local temporaire, forcent le mode rapport et suppriment le miroir à la fin. Un scan accepte une seule source FTP avec des limites de 10 000 fichiers, 64 Mio par fichier et 512 Mio au total. Les sources FTP ne peuvent pas utiliser --scan-wordpress-db.

Vérification des sommes de contrôle de plateforme

La vérification des sommes de contrôle prend en charge WordPress, plusieurs plugins WordPress sélectionnés, Drupal, Joomla, Magento Open Source et les paquets Composer publics. Le scanner ignore uniquement les fichiers dont les octets correspondent à une version fiable. Il analyse les fichiers modifiés, générés et inconnus.

Une première vérification d'une version de plateforme peut nécessiter un HTTPS sortant. Les manifestes réussis restent dans un cache local. Utilisez --disable-checksum lorsque le scan ne doit effectuer aucune requête de somme de contrôle.

Couverture et reprise

Les rapports distinguent les fichiers découverts, éligibles, analysés, mis en cache, vérifiés et ignorés. Les motifs d'ignorance incluent les filtres de chemin, les extensions, la taille du fichier, les fichiers illisibles et les limites d'archive.

--checkpoint=<private-path> enregistre la progression après chaque candidat. --resume continue uniquement lorsque la liste des candidats et les paramètres de scan correspondent encore.

Le scan ZIP exige ext-zip. Le scanner limite les chemins d'entrée, les liens symboliques, le nombre d'entrées, la taille des fichiers, la taille décompressée, le ratio de compression et la profondeur d'imbrication. Les rapports marquent le contenu au-delà de ces limites comme couverture incomplète.

Analyse de la base de données WordPress

--scan-wordpress-db exécute une phase optionnelle en lecture seule sur les installations WordPress localement découvertes. Elle vérifie les déclencheurs de base de données, recense les administrateurs du site principal, signale plusieurs administrateurs pour revue et rapporte les publications orphelines. Elle ne modifie pas le contenu de la base de données.

L'option exige ext-mysqli. AMWScan lit les paramètres de base de données littéraux depuis wp-config.php sans exécuter le fichier. Les paramètres dynamiques ou ambigus produisent un résultat de couverture incomplète.

Conseils pour la sortie et l'automatisation

Utilisez JSON lorsqu'un autre programme traitera des détections détaillées. Utilisez SARIF pour les outils qui comprennent ce format standard. Conservez les rapports comme artefacts de build, protégez tous les chemins locaux ou extraits de code qu'ils contiennent, et testez le comportement de sortie du scanner dans votre propre pipeline d'intégration continue avant d'en faire un seuil de publication.