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
| Option | Objectif |
|---|---|
--lite, -l | Réduit les faux positifs courants tout en conservant une détection large |
--only-signatures, -s | Analyse uniquement les signatures de malware |
--only-exploits, -e | Analyse uniquement les motifs d'exploitation |
--only-functions, -f | Analyse 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, --all | Inspecte les fichiers quel que soit l'extension |
--scan-archives | Inspecte les entrées ZIP dans des limites de sécurité |
--scan-wordpress-db | Exé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
| Option | Objectif |
|---|---|
--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é |
--resume | Continue une analyse à partir d'un point de contrôle lorsque ses fichiers et paramètres correspondent encore |
--disable-cache, --no-cache | Ignore les résultats de scan en cache |
php scanner /var/www/example --lite --report \
--ignore-paths="*/cache/*,*/logs/*" \
--max-filesize=5MB
Rapports et sorties
| Option | Objectif | Valeur par défaut |
|---|---|---|
--report, -r | Désactive les actions interactives et écrit un rapport | Off |
--report-format=<format> | Sélectionne html, txt, json ou sarif | html |
--path-report=<path> | Définit le chemin du fichier de rapport | ./scanner-report.html |
--log=<path> | Écrit un journal de scan | Off |
--path-logs=<path> | Définit le chemin du journal du scanner | ./scanner.log |
--silent | Masque la sortie du terminal et les invites | Off dans CLI |
--disable-report, --no-report | Empêche la génération de rapport | Off dans CLI |
--disable-colors, --no-colors, --no-color | Supprime les couleurs ANSI | Off |
--debug | Affiche toutes les erreurs et avertissements PHP | Off |
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
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.
| Option | Objectif |
|---|---|
--backup, -b | Sauvegarde chaque fichier modifié par le scanner |
--auto-clean | Supprime le code correspondant sans confirmation |
--auto-clean-line | Supprime la ligne correspondante sans confirmation |
--auto-delete | Supprime les fichiers détectés sans confirmation |
--auto-quarantine | Déplace les fichiers détectés vers la quarantaine |
--auto-skip | Laisse chaque détection inchangée |
--auto-whitelist | Ajoute chaque détection à la liste blanche |
--auto-prompt=<action> | Applique une réponse de prompt à chaque détection |
--whitelist-only-path | Correspond 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 :
| Option | Objectif |
|---|---|
--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
| Option | Objectif |
|---|---|
--disable-checksum, --no-checksum, --no-verify | Ignore 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-update | Utilise le dernier cache vérifié de Maltrail sans demande de mise à jour |
--defs | Affiche les définitions d'exploit et de fonction |
--defs-exploits | Affiche les définitions d'exploit |
--defs-functions | Affiche les définitions des fonctions dangereuses |
--defs-functions-encoded | Affiche 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
| Option | Objectif |
|---|---|
--ftp-user=<username> | Définit le nom d'utilisateur FTP, ou utilisez AMWSCAN_FTP_USER |
--update, -u | Met à jour le fichier autonome du scanner |
--version, -v | Affiche 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.