🇰🇷 한글 설명
FOSSBilling 0.1.0부터 0.8.7 버전까지 unauthenticated 상태의 api/guest/system/template_exists 엔드포인트에서 경로 탐색(Path Traversal) 취약점이 발견되었습니다. 공격자가 파일 파라미터에 '..' 시퀀스를 삽입하여 서버 내 임의의 파일이나 디렉토리 존재 여부를 확인할 수 있습니다. 이 취약점은 0.8.7 버전에서 수정되었습니다.
💡 쉬운 설명
해커가 특수한 명령어를 입력하여 서버 안에 어떤 파일이 있는지 몰래 알아낼 수 있는 보안 약점입니다. 파일의 내용을 직접 훔쳐볼 수는 없지만, 서버의 구조를 파악하는 데 악용될 수 있습니다.
🇺🇸 원문 (English)
FOSSBilling is an open source billing and client-management platform. From 0.1.0 until 0.8.7, the unauthenticated api/guest/system/template_exists endpoint permits path traversal because templateExists uses Path::join on the attacker-controlled file parameter without rejecting .. sequences or verifying that the resolved path remains inside the active theme directory. The trigger is an unauthenticated request to guest/system/template_exists containing traversal sequences in the file parameter. An attacker can submit traversal sequences in the file parameter and observe the returned boolean to determine whether arbitrary files or directories exist on the server. The oracle does not disclose file contents. This issue is fixed in version 0.8.7.
📍 영향받는 시스템
FOSSBilling versions 0.1.0 to 0.8.6
⚔️ 공격 벡터
인증되지 않은 사용자가 api/guest/system/template_exists 엔드포인트의 file 파라미터에 경로 탐색 문자열(..)을 포함하여 요청을 보냄
🛡️ 대응 방법
FOSSBilling을 최신 버전인 0.8.7 이상으로 업데이트하십시오.
🔧 검증 코드
명령어 실행 결과가 true를 반환하거나 특정 파일 존재 여부에 따라 응답이 달라지면 취약한 상태입니다.
curl -s -X GET 'http://<target>/api/guest/system/template_exists?file=../../../../etc/passwd' | grep -q 'true'