Apache Tomcatの脆弱性 CVE-2020-1938(LFI) 再現した

IT

※勉強目的のみ。悪用厳禁。

脆弱性説明

Apache Tomcat における脆弱性(CVE-2020-1938)について

脆弱性バージョン(8.5.50)検証

poc実行

デフォルトの設定のままtomcatを起動。
pocはググって出たものを使った。


/WEB-INF/web.xmlの内容が表示された。

nmap結果。
AJPの8009ポートが空いている。

緩和策実行

JPCERTの緩和策を実行した。
Apache Tomcat の脆弱性 (CVE-2020-1938) に関する注意喚起

conf/server.xmlの設定内容



nmap実行
8009ポートが表示されなくなった。

poc実行
拒否された。

潜在的なRCE

システムコマンドを実行するjspを何らかの方法でアップロードする。


脆弱性を使用してアップロードしたファイルを読み込むとjspとして実行される。
その際、拡張子は無視される。

修正バージョン(8.5.51)検証

実行結果

タイムアウト。
デフォルト設定ではAJPが有効になっていない。

有効にした。

nmap結果。
ポートは開いている。

poc実行。
403でブロックされた。

以下の修正を見ると、設定されたsecretがリクエストに含まれなければならず、かつ属性が決められたレギュラーでないと403になるとのこと。

Rename requiredSecret to secret and add secretRequired · apache/tomcat@b962835 · GitHub
Add new AJP attribute allowedArbitraryRequestAttributes · apache/tomcat@5a5494f · GitHub

対策

最新版へアップデートする。
アップデートが無理であれば、緩和策を実施する。

Apache Tomcat における脆弱性(CVE-2020-1938)について

Apache Tomcat の脆弱性 (CVE-2020-1938) に関する注意喚起

感想

デフォルトでAJPが有効で、検証も簡単だったので割と悪用されそうだという気がする。


最新版にアップデートしても、AJP周りがまぁまぁ変わっていたので、AJPを使っているシステムは検討が必要…
どうあっても工数がかかってしまいそうで、開発泣かせな脆弱性。

コメント

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