🇰🇷 한글 설명
dit.cms 1.3에서 register_globals가 활성화된 PHP 환경에서 path, sitemap, relPath 등의 파라미터에 대한 입력값 검증 부재로 인해 디렉토리 트래버설 공격이 가능합니다. 공격자는 ../ 경로를 이용해 임의의 로컬 파일을 포함하고 실행할 수 있으며, 일부 경로에서는 원격 파일 포함(RFI)도 가능합니다.
💡 쉬운 설명
dit.cms 웹사이트 프로그램이 경로 입력값을 제대로 검증하지 않아서, 공격자가 ../ 같은 경로 문자를 이용해 서버의 원래 접근하면 안 되는 파일들을 열거나 실행할 수 있는 취약점입니다. PHP의 register_globals 설정이 켜져있을 때만 악용 가능합니다.
🇺🇸 원문 (English)
Multiple directory traversal vulnerabilities in dit.cms 1.3, when register_globals is enabled, allow remote attackers to include and execute arbitrary local files via a .. (dot dot) in the path parameter to index.php in (1) install/, (2) menus/left_rightslideopen/, (3) menus/side_pullout/, (4) menus/side_slideopen/, (5) menus/simple/, (6) menus/top_dropdown/, and (7) menus/topside/; the sitemap parameter to index.php in (8) menus/left_rightslideopen/, (9) menus/side_pullout/, (10) menus/side_slideopen/, (11) menus/top_dropdown/, and (12) menus/topside/; and the (13) relPath parameter to index/index.php. NOTE: PHP remote file inclusion vulnerabilities reportedly also exist for some of these vectors.
📍 영향받는 시스템
dit.cms 1.3 (PHP register_globals 활성화 환경)
⚔️ 공격 벡터
index.php의 path/sitemap/relPath 파라미터에 ../ 포함하여 디렉토리 트래버설 후 로컬/원격 파일 포함 실행
🛡️ 대응 방법
dit.cms를 최신 버전으로 업그레이드하고, PHP에서 register_globals 비활성화 설정 적용 및 모든 경로 입력값 검증 강화
🔧 검증 코드
register_globals가 1/On이면 취약한 환경이고, Off/Not set이면 PHP 측은 안전하나 dit.cms 자체의 패치 여부를 별도로 확인해야 함
php -r "echo 'register_globals: ' . (ini_get('register_globals') ?: 'Off/Not set') . PHP_EOL;" 2>/dev/null || echo 'PHP not available'