
ペネトレーションテスター向けウェブシェルフレームワーク。
novahotはペネトレーションテスター向けのウェブシェルフレームワークです。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>を実行してシェルを開きます。
内部では、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;
さらに、トロイの木馬に任意のデータをPOSTするために使用できるpayloadモードもあります。詳細はWikiを参照してください。
novahotは、トロイの木馬に組み込まれたペイロードを利用してシェルの機能を拡張する4つの「仮想コマンド」を実装しています。
download <remote-filename> [<local-filename>]
<remote-filename>を--download-dirにダウンロードし、指定された場合はオプションで<local-filename>にリネームします。
upload <local-filename> [<remote-filename>]
<local-filename>をシェルの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 upを実行するDockerコンテナが起動すると、DVWAはhttp://localhost:80でアクセス可能になります。
物理ホストにdockerがインストールされていない場合は、Vagrant/Virtualboxを使用してDocker対応の仮想マシンにアクセスできます。
cdするvagrant upvagrant sshsudo su; cd /vagrant; docker-compose upDVWAはhttp://localhost:8000でアクセス可能になります。
DVWAコンテナに埋め込まれたPHPトロイの木馬にnovahotクライアントを接続するために、~/.novahotrcファイルに以下の接続文字列を指定します。
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
その後、以下のコマンドでウェブシェルを確立できます。
novahot shell dvwa
追加情報はWikiで確認できます。