php.bkdr.upld: l'uploader che carica file sul tuo sito
php.bkdr.upld, con la variante php.bkdr.upldr, è la firma di un uploader: una pagina PHP minimale con un modulo che carica sul server qualunque file le venga inviato, senza controlli. È lo strumento con cui l'attaccante porta sul sito il resto dell'arsenale. Nel corpus di misura di WPsec.it dell'agosto 2026 compare su 11 domini e 6 server, con il 93% dei file fuori dalle cartelle di WordPress e il 61% con nome casuale.
Famiglia: Uploader · Anche noto come: upld, upldr, uploader · Aggiornato il 1 settembre 2026
Le stringhe esatte
Se hai trovato una di queste stringhe sul tuo sito, sei nella pagina giusta.
php.bkdr.upldphp.bkdr.upldrSMW-BLKH-SA-CLOUDAV-php.bkdr.upldphp.tool.upldr
Dove si trova
- Fuori dalle cartelle di WordPress nel 93% dei casi: cartelle di servizio, copie vecchie, wp-content/uploads solo nel 4%
- Con nome casuale nel 61% dei rilevamenti, altrimenti con nomi come up.php, upload.php, file.php
- Con estensione .php nel 93% dei casi: a differenza di dropper e shell, l'uploader deve essere raggiungibile da un browser
Cosa fa
- Espone un modulo di upload senza autenticazione: chi conosce l'URL carica file con i permessi del sito.
- È il primo strumento che l'attaccante installa dopo l'ingresso: da lì arrivano webshell, dropper, pagine di phishing e spam.
- Resta utile anche dopo la bonifica se non viene trovato: è il modo più economico per reinfettare.
Come verificare
Comandi di sola lettura: non modificano nulla. Sostituisci ESEMPIO.it con il tuo dominio ed esegui dalla radice del sito.
Cerca i file che gestiscono upload fuori dal core e dai plugin noti
grep -rn --include='*.php' -E 'move_uploaded_file\s*\(|\$_FILES\[' . | grep -vE 'wp-(admin|includes)/|plugins/(woocommerce|contact-form-7|wpforms|gravityforms|elementor)/' | head -30Cerca moduli HTML di upload dentro file PHP
grep -rln --include='*.php' -iE 'enctype=["\x27]?multipart/form-data' . | grep -vE 'wp-(admin|includes)/|plugins/' | head -20Cerca nei log di accesso le richieste POST verso file PHP sconosciuti
grep -hE '"POST /[^ ]+\.php' ~/access-logs/* ~/logs/*.log 2>/dev/null | grep -vE 'wp-(admin|login|cron|comments-post)|xmlrpc' | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
Cosa non basta fare
- Rimuovere ciò che è stato caricato e lasciare l'uploader: è il canale, e il canale va chiuso per primo.
- Cercare solo in wp-content/uploads: nel corpus l'uploader sta lì solo nel 4% dei casi.
- Rinominare il file per metterlo fuori uso: resta sul disco e si rimette in funzione con un rename.
Cosa fare
- Rimuovi l'uploader e cerca nei log di accesso tutte le richieste POST verso il suo percorso: le date e gli IP ricostruiscono cosa è stato caricato e quando.
- Elenca i file comparsi dopo la prima richiesta all'uploader: sono il materiale caricato da lì.
- Chiudi il vettore di ingresso originale: l'uploader è quasi sempre il secondo passo, non il primo.
- Se l'hosting lo consente, blocca l'esecuzione di PHP nelle cartelle che non devono eseguirlo, uploads in testa.