CriticoBackdoor

.htaccess con FilesMatch e lista di file consentiti

Un blocco FilesMatch che nomina file sconosciuti e li accompagna con Allow from all è l'inverso di una regola di sicurezza: invece di proteggere, garantisce che quelle webshell restino raggiungibili anche quando il resto della directory è chiuso. Nei casi trattati da WPsec.it lo stesso file è stato trovato replicato in migliaia di directory dello stesso sito.

Famiglia: Router backdoor multi-directory · Aggiornato il 30 agosto 2026

Le stringhe esatte

Se hai trovato una di queste stringhe sul tuo sito, sei nella pagina giusta.

  • <FilesMatch "lock360.php|wp-l0gin.php|jp.php|ext.php">
  • Allow from all

Dove si trova

  • Nella radice del sito e, soprattutto, replicato in centinaia o migliaia di sottodirectory
  • In wp-content/uploads/, dove un .htaccess legittimo di solito blocca l'esecuzione di PHP invece di consentirla
  • Accanto ai file che la regola stessa nomina

Cosa fa

  • Crea un'eccezione esplicita per un elenco di file: qualunque restrizione generale della directory smette di valere per quei nomi.
  • Rende l'accesso indipendente dalla configurazione del server: la regola viaggia con la cartella, quindi sopravvive a spostamenti e ripristini parziali.
  • Distribuisce la persistenza: replicato ovunque, basta che una sola copia sfugga alla pulizia perché la backdoor resti pubblica.

Come verificare

Comandi di sola lettura: non modificano nulla. Sostituisci ESEMPIO.it con il tuo dominio ed esegui dalla radice del sito.

  1. Trova ogni .htaccess che apre file specifici invece di chiuderli

    grep -rl --include='.htaccess' -E 'FilesMatch.*\.(php|phtml)' . | xargs grep -l 'Allow from all'
  2. Conta quante copie dello stesso .htaccess esistono sul sito

    find . -name '.htaccess' -exec md5sum {} + | awk '{print $1}' | sort | uniq -c | sort -rn | head
  3. Verifica se la directory di upload esegue PHP

    grep -r 'php_flag engine\|SetHandler\|RemoveHandler' wp-content/uploads/ 2>/dev/null

Cosa non basta fare

  • Ripulire il .htaccess nella radice. Le copie nelle sottodirectory continuano a funzionare da sole.
  • Rigenerare i permalink dalla dashboard: riscrive solo il blocco WordPress della radice, non tocca le altre copie.

Cosa fare

  • Conta le copie prima di toccarle: il numero dice se sei davanti a un incidente locale o a una persistenza distribuita.
  • Confronta ogni .htaccess con quello atteso per quella directory; in wp-content/uploads/ una regola sana blocca l'esecuzione di PHP, non la consente.
  • Rimuovi le regole e i file nominati nella stessa passata, poi verifica dall'esterno che gli URL non rispondano più.

FAQ

Domande frequenti

  • Guarda il verbo. Le regole legittime negano l'accesso a file sensibili, per esempio wp-config.php o xmlrpc.php, e usano Require all denied oppure Deny from all. Una regola che nomina file che non riconosci e li accompagna con Allow from all sta aprendo, non chiudendo.

Se il sito è compromesso

Trovare la firma è il primo passo, chiudere la via di ingresso è quello che conta

Rimuovere l'artefatto senza chiudere il punto da cui è entrato porta alla reinfezione. La scansione gratuita è il modo più rapido per capire cosa è osservabile dall'esterno del tuo sito.

Questa pagina pubblica firme di rilevamento, non codice sfruttabile. I casi citati sono descritti in forma anonima.