1. 취약점 개요

점검 대상 Wizmall(위즈몰) v6.6.8
취약점 제목 위즈몰 원격 코드 실행 취약점
취약점 요약 경로 조작을 통한 LFI가 가능해 발생하는 원격 명령 실행 취약점
취약점 유형 LFI(Local File Inclusion)
CVSS CRITICAL 9.8
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Effect 원격 명령 실행
파급력 본 취약점은 별도의 사용자 또는 관리자 권한이 불필요하며, 사용자와의 상호작용 또한 불필요하다.
운영체제 명령어를 실행할 수 있기 때문에 서버 내 중요 자산 탈취/조작/파괴 모두 가능하다. 때문에 기밀성, 무결성, 가용성 모두에 심각하게 침해할 수 있는 취약점이다.
취약한 파일 ./util/error.php

2. 취약점 세부 사항

<?php
//문장 에러 발생 확인
//util/error.php?file=board/online.php
$file_name = $_GET["file"];
include_once "../lib/inc.depth1.php";
include $DOCUMENT_ROOT."/".$file_name;

GET 메서드로 file 파라미터를 입력 받아 $file_name 변수에 대입하고 있음. 이 때 $file_name 변수는 include $DOCUMENT_ROOT."/".$file_name; 에서 별도의 필터링 없이 include 되고 있음.

이 때 만약 $file_name 변수에 ../../../../../../etc/passwd 와 같은 문자열이 들어오는 경우 Path Traversal 취약점이 발생해 상위 경로에 접근 가능해지고, passwd 파일을 include 하게 됨으로써 서버 내부 중요 파일을 읽어 들일 수 있게 됨.

해당 LFI(Local File Inclusion) 취약점은 특히 만약 공격자가 임의 코드를 작성한 파일을 include 할 수 있게 된다면, 원격 코드 실행 취약점으로 취약점의 파급력이 올라갈 수 있음.

특히나 현재 $file_name 변수에는 어떤 확장자도 올 수 있는 상황이기 때문에 더더욱 공격자가 이미지 파일을 올리던, 텍스트 파일을 올리던, PHP 파일을 올리던 상관 없이 모두 include 해올 수 있는 상태가 됨.

자세한 내용은 아래 공격 시나리오에서 설명하겠음.

3. 공격 시나리오

중요 파일 다운로드 시나리오

Untitled

원격 코드 실행 시나리오