
Un framework di webshell per penetration tester.
novahot è un framework webshell per penetration tester. Implementa un'API basata su JSON che può comunicare con trojan scritti in qualsiasi linguaggio. Di default, include trojan scritti in PHP, Ruby e Python.
Oltre all'esecuzione di comandi di sistema, novahot è in grado di emulare terminali interattivi, inclusi mysql, sqlite3 e psql. Implementa inoltre "comandi virtuali" che consentono di caricare, scaricare, modificare e visualizzare file remoti localmente usando le tue applicazioni preferite.
Installa l'eseguibile direttamente da npm:
[sudo] npm install -g novahot
Poi genera un file di configurazione:
novahot config > ~/.novahotrc
Visualizza i trojan disponibili con novahot trojan list.
Seleziona un trojan in un linguaggio appropriato per il tuo target, quindi copia il suo sorgente in un nuovo file. (Es: novahot trojan view basic.php > ~/my-trojan.php)
Cambia la password di controllo nel trojan appena creato.
Carica il trojan in una posizione accessibile via web sul target.
Configura le informazioni del target nella proprietà targets in ~/.novahotrc.
Esegui novahot shell <target> per aprire una shell.
Internamente, novahot utilizza "modalità" e "adattatori" per emulare vari client interattivi, attualmente inclusi i client mysql, psql (postgres) e sqlite3.
Per cambiare la modalità di novahot, utilizza il "dot command" appropriato:
.mysql { "username" : "mysql-user", "password" : "the-password", "database" : "the-database" }
(I parametri di connessione possono essere specificati in JSON durante il cambio di modalità, oppure salvati come dati di configurazione del target in ~/.novahotrc.)
Ad esempio, la modalità mysql consente di eseguire direttamente query come la seguente:
mysql> SELECT ID, user_login, user_email, user_pass FROM wp_users;
Esiste anche una modalità payload che può essere utilizzata per inviare dati arbitrari tramite POST al trojan. Consulta il wiki per maggiori informazioni.
novahot implementa quattro "comandi virtuali" che utilizzano payload integrati nei trojan per estendere le funzionalità della shell:
download <remote-filename> [<local-filename>]
Scarica <remote-filename> in --download-dir e, opzionalmente, lo rinomina in <local-filename> se specificato.
upload <local-filename> [<remote-filename>]
Carica <local-filename> nella cwd della shell e, opzionalmente, rinomina <local-filename> in <remote-filename> se specificato.
view <remote-filename> [<local-filename>]
Scarica <remote-filename> in --download-dir e, opzionalmente, lo rinomina in <local-filename>. Dopo il download, il file verrà aperto dall'applicazione di "visualizzazione" specificata nella configurazione.
edit <remote-filename>
Scarica <remote-filename> in un file temporaneo, quindi lo apre per la modifica utilizzando l'"editor" specificato nella configurazione. Successivamente, se le modifiche al file vengono salvate localmente, il file verrà automaticamente ricaricato sul server.
Questo repository contiene un ambiente di laboratorio basato su Vagrant, Docker e il Damn Vulnerable Web Application ("DVWA"). I passaggi per preparare l'ambiente variano a seconda delle capacità del tuo host fisico.
Se hai docker e docker-compose installati sul tuo host fisico, procedi semplicemente come segue:
cd in questo repositorydocker-compose upDopo l'avvio del container docker, il DVWA sarà accessibile all'indirizzo http://localhost:80.
Se docker non è installato sul tuo host fisico, puoi utilizzare Vagrant/Virtualbox per accedere a una macchina virtuale dotata di docker:
cd in questo repositoryvagrant upvagrant sshsudo su; cd /vagrant; docker-compose upIl DVWA sarà accessibile all'indirizzo http://localhost:8000.
Specifica le seguenti stringhe di connessione nel tuo file ~/.novahotrc per connettere il client novahot al trojan PHP integrato nel container DVWA:
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
Puoi quindi stabilire una webshell tramite:
novahot shell dvwa
Ulteriori informazioni sono disponibili nel wiki: