※勉強目的のみ。悪用厳禁。
Apache Tomcat における脆弱性(CVE-2020-1938)について
デフォルトの設定のままtomcatを起動。
pocはググって出たものを使った。
/WEB-INF/web.xmlの内容が表示された。
nmap結果。
AJPの8009ポートが空いている。
JPCERTの緩和策を実行した。
Apache Tomcat の脆弱性 (CVE-2020-1938) に関する注意喚起
conf/server.xmlの設定内容
nmap実行
8009ポートが表示されなくなった。
poc実行
拒否された。
システムコマンドを実行するjspを何らかの方法でアップロードする。
脆弱性を使用してアップロードしたファイルを読み込むとjspとして実行される。
その際、拡張子は無視される。
タイムアウト。
デフォルト設定では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を使っているシステムは検討が必要…
どうあっても工数がかかってしまいそうで、開発泣かせな脆弱性。