🇰🇷 한글 설명
BoidCMS 2.1.3 이전 버전의 tpl 파라미터에서 경로 검증 없이 require_once()를 사용하여 로컬 파일 포함(LFI) 취약점이 발생합니다. 파일 업로드 기능과 결합하면 인증된 관리자가 악의적 PHP 파일을 포함시켜 임의 코드 실행(RCE)이 가능합니다.
💡 쉬운 설명
BoidCMS 웹사이트 제작 도구에서 관리자가 특수한 경로를 입력하여 서버의 다른 파일들을 읽고 실행할 수 있는 보안 문제입니다. 먼저 악성 파일을 업로드한 후 이 취약점으로 실행시킬 수 있습니다.
🇺🇸 원문 (English)
BoidCMS is an open-source, PHP-based flat-file CMS for building simple websites and blogs, using JSON as its database. Versions prior to 2.1.3 are vulnerable to a critical Local File Inclusion (LFI) attack via the tpl parameter, which can lead to Remote Code Execution (RCE).The application fails to sanitize the tpl (template) parameter during page creation and updates. This parameter is passed directly to a require_once() statement without path validation. An authenticated administrator can exploit this by injecting path traversal sequences (../) into the tpl value to escape the intended theme directory and include arbitrary files — specifically, files from the server's media/ directory. When combined with the file upload functionality, this becomes a full RCE chain: an attacker can first upload a file with embedded PHP code (e.g., disguised as image data), then use the path traversal vulnerability to include that file via require_once(), executing the embedded code with web server privileges. This issue has been fixed in version 2.1.3.
📍 영향받는 시스템
BoidCMS 버전 2.1.3 미만 모든 버전 (2.0.x, 2.1.0-2.1.2)
⚔️ 공격 벡터
인증된 관리자가 tpl 파라미터에 ../ 경로 순회 시퀀스를 주입하여 미디어 디렉토리의 업로드된 PHP 파일을 require_once()로 포함시켜 실행
🛡️ 대응 방법
BoidCMS를 2.1.3 이상으로 즉시 업그레이드하고 tpl 파라미터에 대한 입력 검증 및 상대 경로 제한 적용
🔧 검증 코드
2.0.x, 2.1.0, 2.1.1, 2.1.2 버전이 검출되면 취약함; 2.1.3 이상이 표시되거나 버전 정보가 없으면 안전
grep -r "version" . 2>/dev/null | grep -E "2\.[0-2]" | head -1