
Анализирует CVE-2025-60423 — обход аутентификации в JEECG версиях 7.2.8 и 7.2.9, описывая методы обхода пути (path traversal) и URL-кодирования для обхода фильтров и доступа к защищённым конечным точкам.
Этот обход аутентификации аналогичен обходу прав в Shiro.
В методе dofilterInternal класса sessionfilter параметр dofilter по умолчанию равен true, и только когда он равен false, аутентификация не выполняется.
Перейдя к методу matches, видно, что этот код сопоставляет URL с 134 строками пути из patterns, и при успешном совпадении возвращает true, что позволяет установить dofilter в true.
Затем продолжаем отладку, пока цикл не дойдёт до условия, где pattern равен /static.*?

Таким образом, достаточно добавить /static/.. перед любым путём фонового каталога, чтобы обойти аутентификацию. На самом деле здесь подходит не только /static/.. — в patterns любой одноуровневый путь с последующим .*? может быть использован для обхода. Пример:
/error/.*?
/adminseal.zz/.*?
/dwr/.*?
...
Я не нашёл все варианты, но всё, что соответствует этому правилу, подходит.
В новой версии 7.2.9 добавлен дополнительный шаг проверки URL.

Перейдя в checkErrorUrl, видно, что он проверяет наличие ..

По-прежнему комбинируя идеи обхода из тех CVE в Shiro, выполняем однократное URL-кодирование .. и успешно обходим проверку.
Payload:
POST /static/%2e%2e/je/sysConfig/sysConfig/loadSysVariables HTTP/1.1 1
Утечка незашифрованных паролей на веб-стороне.
