
Un framework de webshell pour les testeurs d'intrusion.
novahot est un framework de webshell pour les testeurs d'intrusion. Il implémente une
API basée sur JSON qui peut communiquer avec des trojans écrits dans n'importe quel langage. Par
défaut, il est livré avec des trojans écrits en PHP, Ruby et Python.
Au-delà de l'exécution de commandes système, novahot peut émuler des terminaux interactifs,
y compris mysql, sqlite3 et psql. Il implémente également des "commandes virtuelles"
qui permettent de télécharger, téléverser, éditer et visualiser des fichiers distants localement
en utilisant vos applications préférées.
Installez l'exécutable directement depuis npm :
[sudo] npm install -g novahot
Ensuite, générez un fichier de configuration :
novahot config > ~/.novahotrc
Affichez les trojans disponibles avec novahot trojan list.
Sélectionnez un trojan dans un langage approprié pour votre cible, puis copiez
son code source dans un nouveau fichier. (Ex : novahot trojan view basic.php > ~/my-trojan.php)
Modifiez le mot de passe de contrôle dans le trojan nouvellement créé.
Téléversez le trojan vers un emplacement accessible via le web sur la cible.
Configurez les informations de la cible dans la propriété targets de ~/.novahotrc.
Exécutez novahot shell <target> pour ouvrir un shell.
En interne, novahot utilise des "modes" et des "adaptateurs" pour émuler divers
clients interactifs, y compris actuellement les clients mysql, psql (postgres) et
sqlite3.
Pour changer le mode de novahot, utilisez la "commande point" appropriée :
.mysql { "username" : "mysql-user", "password" : "the-password", "database" : "the-database" }
(Les paramètres de connexion peuvent être spécifiés en JSON lors du changement de mode, ou
alternativement sauvegardés comme données de configuration de cible dans ~/.novahotrc.)
Par exemple, le mode mysql permet d'exécuter directement des requêtes comme
la suivante :
mysql> SELECT ID, user_login, user_email, user_pass FROM wp_users;
Il existe également un mode payload qui peut être utilisé pour POSTer des données
arbitraires vers le trojan. Voir le wiki pour plus d'informations.
novahot implémente quatre "commandes virtuelles" qui utilisent des charges utiles (payloads)
intégrées dans les trojans pour étendre les fonctionnalités du shell :
download <remote-filename> [<local-filename>]
Télécharge <remote-filename> vers --download-dir, et le renomme éventuellement en
<local-filename> si spécifié.
upload <local-filename> [<remote-filename>]
Téléverse <local-filename> vers le répertoire de travail actuel du shell (cwd), et renomme éventuellement
<local-filename> en <remote-filename> si spécifié.
view <remote-filename> [<local-filename>]
Télécharge <remote-filename> vers --download-dir, et le renomme éventuellement en
<local-filename>. Après le téléchargement, le fichier sera ouvert par l'application de "visualisation"
spécifiée dans les configurations.
edit <remote-filename>
Télécharge <remote-filename> vers un fichier temporaire, puis ouvre ce fichier pour
édition en utilisant l'"éditeur" spécifié dans les configs.
Ensuite, si les modifications du fichier sont sauvegardées localement, le fichier sera
automatiquement retéléversé vers le serveur.
Ce dépôt contient un environnement de laboratoire basé sur Vagrant, Docker et Damn Vulnerable Web Application ("DVWA"). Les étapes pour provisionner l'environnement varient selon les capacités de votre hôte physique.
Si vous avez docker et docker-compose installés sur votre hôte physique, vous
pouvez simplement faire ce qui suit :
cd.docker-compose upAprès le démarrage du conteneur docker, la DVWA sera accessible à l'adresse http://localhost:80.
Si docker n'est pas installé sur votre hôte physique, vous pouvez utiliser
Vagrant/Virtualbox pour accéder à une machine virtuelle capable d'exécuter Docker :
cd.vagrant upvagrant sshsudo su; cd /vagrant; docker-compose upLa DVWA sera accessible à l'adresse http://localhost:8000.
Spécifiez les chaînes de connexion suivantes dans votre fichier ~/.novahotrc pour connecter
le client novahot au trojan PHP intégré dans le conteneur DVWA :
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
Vous pouvez ensuite établir un webshell via :
novahot shell dvwa
Des informations supplémentaires peuvent être trouvées dans le wiki :