
Un framework de webshell para testers de penetración.
novahot es un framework de webshell para testers de penetración. Implementa una API basada en JSON que puede comunicarse con troyanos escritos en cualquier lenguaje. Por defecto, incluye troyanos escritos en PHP, Ruby y Python.
Además de ejecutar comandos del sistema, novahot puede emular terminales interactivas, incluyendo mysql, sqlite3 y psql. También implementa "comandos virtuales" que permiten subir, descargar, editar y ver archivos remotos localmente usando tus aplicaciones preferidas.
Instala el ejecutable directamente desde npm:
[sudo] npm install -g novahot
Luego genera un archivo de configuración:
novahot config > ~/.novahotrc
Mira los troyanos disponibles con novahot trojan list.
Selecciona un troyano en un lenguaje apropiado para tu objetivo, luego copia su código fuente a un nuevo archivo. (Ej: novahot trojan view basic.php > ~/my-trojan.php)
Cambia la contraseña de control en el troyano recién creado.
Sube el troyano a una ubicación accesible por web en el objetivo.
Configura la información del objetivo en la propiedad targets en ~/.novahotrc.
Ejecuta novahot shell <target> para abrir un shell.
Internamente, novahot utiliza 'modos' y 'adaptadores' para emular varios clientes interactivos, incluyendo actualmente los clientes mysql, psql (postgres) y sqlite3.
Para cambiar el modo de novahot, ejecuta el 'comando punto' apropiado:
.mysql { "username" : "mysql-user", "password" : "the-password", "database" : "the-database" }
(Los parámetros de conexión pueden ser especificados como JSON al cambiar de modo, o alternativamente guardados como datos de configuración del objetivo en ~/.novahotrc.)
Por ejemplo, el modo mysql permite ejecutar directamente consultas como las siguientes:
mysql> SELECT ID, user_login, user_email, user_pass FROM wp_users;
Además existe un modo payload que se puede usar para hacer POST de datos arbitrarios al troyano. Consulta la wiki para más información.
novahot implementa cuatro 'comandos virtuales' que utilizan payloads integrados en los troyanos para extender la funcionalidad del shell:
download <remote-filename> [<local-filename>]
Descarga <remote-filename> en --download-dir, y opcionalmente lo renombra a <local-filename> si se especifica.
upload <local-filename> [<remote-filename>]
Sube <local-filename> al directorio de trabajo del shell (cwd), y opcionalmente renombra <local-filename> a <remote-filename> si se especifica.
view <remote-filename> [<local-filename>]
Descarga <remote-filename> en --download-dir, y opcionalmente lo renombra a <local-filename>. Después de la descarga, el archivo será abierto por la aplicación 'visor' especificada en las configuraciones.
edit <remote-filename>
Descarga <remote-filename> a un archivo temporal, y luego lo abre para edición usando el 'editor' especificado en las configuraciones. Después, si los cambios al archivo se guardan localmente, el archivo se volverá a subir al servidor automáticamente.
Este repositorio contiene un entorno de laboratorio construido sobre Vagrant, Docker y la Aplicación Web Damn Vulnerable ('DVWA'). Los pasos para aprovisionar el entorno varían según las capacidades de tu host físico.
Si tienes docker y docker-compose instalados en tu host físico, simplemente puedes hacer lo siguiente:
cd a este repositoriodocker-compose upDespués de que el contenedor docker se inicie, la DVWA será accesible en http://localhost:80.
Si docker no está instalado en tu host físico, puedes usar Vagrant/Virtualbox para acceder a una máquina virtual con capacidad docker:
cd a este repositoriovagrant upvagrant sshsudo su; cd /vagrant; docker-compose upLa DVWA será accesible en http://localhost:8000.
Especifica las siguientes cadenas de conexión en tu archivo ~/.novahotrc para conectar el cliente novahot al troyano PHP incrustado en el contenedor DVWA:
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
Luego puedes establecer un webshell mediante:
novahot shell dvwa
Puedes encontrar información adicional en la wiki: