| 점검 대상 | 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 |
<?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 해올 수 있는 상태가 됨.
자세한 내용은 아래 공격 시나리오에서 설명하겠음.
