
CVE-2025-60423を分析し、JEECGバージョン7.2.8および7.2.9における認証バイパスについて、フィルタを回避して保護されたエンドポイントにアクセスするためのパストラバーサルおよびURLエンコーディング技術を詳述しています。
この認証バイパスはShiroの権限バイパスと類似しています。
sessionfilterクラスのdofilterInternalメソッドでは、デフォルトのdofilterパラメータはtrueであり、falseの場合のみ認証を回避できます。
matchesメソッドを追跡すると、このコードはurlとpatterns内の134個のパス文字列を照合し、マッチが成功するとtrueを返してdofilterをtrueにできることがわかります。
その後、ループが判定に入るまでデバッグを続けると、このときpatternは/static.*?になります。

したがって、任意のバックエンドディレクトリパスの前に/static/..を追加するだけで認証をバイパスできます。 実はここでは/static/..だけでなく、patterns内で単一階層パスであり、その後に.*?が付くものはすべてバイパス可能です。 例:
/error/.*?
/adminseal.zz/.*?
/dwr/.*?
...
すべてを特定したわけではありませんが、このルールに該当するものはすべてバイパス可能です。
新しいバージョン7.2.9では、urlをチェックするステップが追加されました。

checkErrorUrlを追跡すると、..が存在するかどうかをチェックしていることがわかります。

引き続きShiroのいくつかのCVEバイパス手法を組み合わせて、..を一度URLエンコードすることでバイパスに成功しました。
Payload:
POST /static/%2e%2e/je/sysConfig/sysConfig/loadSysVariables HTTP/1.1 1
Web側の暗号化されていないパスワードが漏洩します。
