
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
웹端의 암호화되지 않은 비밀번호가 노출됩니다.
