Nick Security Log

securityを始めとしたNickのブログです

tomcat CVE-2020-1938 検証

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

脆弱性説明

www.ipa.go.jp

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

poc実行

デフォルトの設定のままtomcatを起動。
pocはググって出たものを使った。
/WEB-INF/web.xmlの内容が表示された。
f:id:NickShadows:20200229110902p:plain

nmap結果。
AJPの8009ポートが空いている。
f:id:NickShadows:20200229110750p:plain

緩和策実行

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

conf/server.xmlの設定内容
f:id:NickShadows:20200229111103p:plain f:id:NickShadows:20200229111120p:plain

nmap実行
8009ポートが表示されなくなった。
f:id:NickShadows:20200229111330p:plain

poc実行
拒否された。
f:id:NickShadows:20200229111428p:plain

潜在的なRCE

システムコマンドを実行するjspを何らかの方法でアップロードする。
f:id:NickShadows:20200229152900p:plain 脆弱性を使用してアップロードしたファイルを読み込むとjspとして実行される。
その際、拡張子は無視される。
f:id:NickShadows:20200229153143p:plain

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

実行結果

タイムアウト。
デフォルト設定ではAJPが有効になっていない。
f:id:NickShadows:20200229145704p:plain

有効にした。
f:id:NickShadows:20200229211248p:plain

nmap結果。
ポートは開いている。
f:id:NickShadows:20200229145835p:plain

poc実行。
403でブロックされた。
f:id:NickShadows:20200229211407p:plain

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

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

対策

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

www.ipa.go.jp

www.jpcert.or.jp

感想

デフォルトでAJPが有効で、検証も簡単だったので割と悪用されそうだという気がする。
最新版にアップデートしても、AJP周りがまぁまぁ変わっていたので、AJPを使っているシステムは検討が必要…
どうあっても工数がかかってしまいそうで、開発泣かせな脆弱性。