Apache Tomcatの脆弱性(CVE-2020-1938)を検証

概要

Apache Tomcatにおける脆弱性(CVE-2020-1938)を悪用されると、外部から意図しないファイル読み込みが実行される可能性があります。すでにGithub上にいくつかPoC(概念実証コード)が公開されているので、そのうちの一つを実際に試しました。

環境

  • 攻撃用マシン(192.168.0.2)
    • Ubuntu18LTS
    • Python 2.7.17
  • 被攻撃用マシン(192.168.0.3)
    • CentOS8
    • Apache Tomcat 9.0.30

VirtualBox上に上記2つの仮想マシンを準備しました。お互いに内部ネットワークでアクセスできます。なお、今回利用するPoCの実行にはPython2系が必要です。(Python3では動きませんでした)

必要なファイルのダウンロード

今回は以下の2つを利用させていただきました。

PoC

YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
Tomcat-Ajp协议文件读取漏洞. Contribute to YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi development by creating an account on GitHub.

Apache Tomcat(Docker)

vulhub/vulhub
Pre-Built Vulnerable Environments Based on Docker-Compose - vulhub/vulhub

検証

被攻撃マシンの準備

Dockerを起動し、docker-composeでサーバを準備します。

脆弱性の存在するサーバを起動できました。一応、攻撃用マシン側からアクセスできるか確認してみます。

アクセスできてますね。(最初ファイアウォールの設定でアクセス拒否されてたので、設定変更しています。)

攻撃

では、実際に攻撃してみます。今回は、web.xmlを読み込んでみます。

PoCファイルが格納されたディレクトリに移動し、以下のコマンドを実行します。

python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.0.3 -p 8009 -f WEB-INF/web.xml

以下が、実行結果です。

xmlファイルの中身が取得できてるので、攻撃成功です。

今回はweb.xmlファイルを読み込んでみましたが、ルートディレクトリにある任意のファイルが読み取られる可能性もあります。サーバへのファイルアップロードを許可している場合は、特に注意が必要です。

まとめ

今回検証した脆弱性については、IPAからも注意喚起が出されています。もし脆弱性が存在するバージョンのApache Tomcatを利用されている場合は、早急に修正済みのバージョンへアップデートすることをおすすめします。

参考リンク

Apache Tomcat における脆弱性(CVE-2020-1938)について:IPA 独立行政法人 情報処理推進機構
情報セキュリティ関連情報のユーザー、管理者、技術者に向けた発信、その前提となる情報収集、調査分析、研究開発、技術評価等の実施

コメント

タイトルとURLをコピーしました