
Ein Webshell-Framework für Penetrationstester.
novahot ist ein Webshell-Framework für Penetrationstester. Es implementiert eine JSON-basierte API, die mit Trojanern kommunizieren kann, die in jeder Sprache geschrieben sind. Standardmäßig wird es mit Trojanern in PHP, Ruby und Python ausgeliefert.
Über die Ausführung von Systembefehlen hinaus kann novahot interaktive Terminals emulieren, einschließlich mysql, sqlite3 und psql. Außerdem implementiert es „virtuelle Befehle“, mit denen entfernte Dateien lokal hochgeladen, heruntergeladen, bearbeitet und mit Ihren bevorzugten Anwendungen angezeigt werden können.
Installieren Sie die ausführbare Datei direkt von npm:
[sudo] npm install -g novahot
Erstellen Sie dann eine Konfigurationsdatei:
novahot config > ~/.novahotrc
Zeigen Sie die verfügbaren Trojaner mit novahot trojan list an.
Wählen Sie einen Trojaner in einer Sprache, die für Ihr Ziel geeignet ist, und kopieren Sie dessen Quellcode in eine neue Datei. (Bsp.: novahot trojan view basic.php > ~/my-trojan.php)
Ändern Sie das Steuerkennwort im neu erstellten Trojaner.
Laden Sie den Trojaner an einen webzugänglichen Ort auf dem Ziel hoch.
Konfigurieren Sie die Zielinformationen in der Eigenschaft targets in ~/.novahotrc.
Führen Sie novahot shell <target> aus, um eine Shell zu öffnen.
Intern verwendet novahot „Modi“ und „Adapter“, um verschiedene interaktive Clients zu emulieren, darunter die Clients mysql, psql (Postgres) und sqlite3.
Um den Modus von novahot zu wechseln, geben Sie den entsprechenden „Punktbefehl“ ein:
.mysql { "username" : "mysql-user", "password" : "the-password", "database" : "the-database" }
(Verbindungsparameter können beim Wechseln des Modus als JSON angegeben oder alternativ als Zielkonfigurationsdaten in ~/.novahotrc gespeichert werden.)
Zum Beispiel ermöglicht der mysql-Modus die direkte Ausführung von Abfragen wie der folgenden:
mysql> SELECT ID, user_login, user_email, user_pass FROM wp_users;
Es gibt außerdem einen payload-Modus, der verwendet werden kann, um beliebige Daten per POST an den Trojaner zu senden. Weitere Informationen finden Sie im Wiki.
novahot implementiert vier „virtuelle Befehle“, die in die Trojaner integrierte Nutzdaten verwenden, um die Funktionalität der Shell zu erweitern:
download <remote-filename> [<local-filename>]
Lädt <remote-filename> in das --download-dir herunter und benennt es optional in <local-filename> um, falls angegeben.
upload <local-filename> [<remote-filename>]
Lädt <local-filename> in das aktuelle Arbeitsverzeichnis der Shell hoch und benennt <local-filename> optional in <remote-filename> um, falls angegeben.
view <remote-filename> [<local-filename>]
Lädt <remote-filename> in das --download-dir herunter und benennt es optional in <local-filename> um. Nach dem Herunterladen wird die Datei mit der in der Konfiguration angegebenen „Anzeige“-Anwendung geöffnet.
edit <remote-filename>
Lädt <remote-filename> in eine temporäre Datei herunter und öffnet diese dann zur Bearbeitung mit dem in der Konfiguration angegebenen Editor. Wenn die Datei lokal geändert und gespeichert wird, wird sie automatisch wieder auf den Server hochgeladen.
Dieses Repository enthält eine Laborumgebung, die auf Vagrant, Docker und der Damn Vulnerable Web Application („DVWA“) basiert. Die Schritte zur Bereitstellung der Umgebung variieren je nach den Fähigkeiten Ihres physischen Hosts.
Wenn docker und docker-compose auf Ihrem physischen Host installiert sind, gehen Sie einfach wie folgt vor:
cd hineindocker-compose upNach dem Start des Docker-Containers ist die DVWA unter http://localhost:80 erreichbar.
Wenn docker nicht auf Ihrem physischen Host installiert ist, können Sie Vagrant/Virtualbox verwenden, um eine Docker-fähige virtuelle Maschine zu erstellen:
cd hineinvagrant upvagrant sshsudo su; cd /vagrant; docker-compose upDie DVWA ist unter http://localhost:8000 erreichbar.
Geben Sie die folgenden Verbindungszeichenfolgen in Ihrer ~/.novahotrc-Datei an, um den novahot-Client mit dem im DVWA-Container eingebetteten PHP-Trojaner zu verbinden:
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
Sie können dann eine Webshell herstellen mit:
novahot shell dvwa
Weitere Informationen finden Sie im Wiki: