침해사고분석팀ㅣ2022.07.05
보안 동향 ㅣ AstraLocker 랜섬웨어 종료 및 복호화 해제
침해사고분석팀ㅣ2022.07.05
침해사고분석팀ㅣ2022.07.04
침해사고분석팀ㅣ2022.07.04
침해사고분석팀ㅣ2022.07.01
취약점 정보[CVE-2018-12613] phpMyAdmin index.php target LFI | ||||
작성일 | 2021-02-10 | 조회 | 1732 | |
---|---|---|---|---|
phpMyAdmin에 LFI(Local File Inclusion) 취약점이 존재합니다.
phpMyAdmin은 MySQL을 월드 와이드 웹 상에서 관리할 목적으로 PHP로 작성한 오픈 소스 도구입니다. 데이터베이스, 테이블, 필드, 열의 작성, 수정, 삭제 또는 SQL 실행, 사용자 및 사용 권한 관리 등의 다양한 작업을 수행할 수 있습니다.
해당 취약점은 index.php 경로의 target 파라미터를 제대로 검증하지 않아 발생합니다. 원격의 공격자는 해당 매개변수에 서버 내 임의 파일의 경로를 전송하여 공격할 수 있습니다.
취약점 설명
NVD - CVE-2018-12613 CVSS v2.0 Severity and Metrics: Base Score: 6.5 MEDIUM
[그림1. NVD 내역]
취약점 분석
취약한 매개변수를 통해 전달된 값은 [그림 2] 구문을 통해 처리됩니다.
if문을 통해 target 인자가 공백인지, 문자열인지, index로 시작하는지, $target_blacklist 배열 안에 있는지를 검사한 후 Core.php의 checkPageValidity 함수에서 검증합니다.
$target_blacklist 배열은 [그림 3]과 같습니다.
[그림2. indexk.php의 target 처리 구문]
[그림 3. target_blacklist 배열]
Core.php는 libraries/classes 폴더에 존재하며 checkPageValidity 함수는 [그림 4]와 같습니다.
[그림 4. checkPageValidity 함수]
page 매개변수에는 target 매개변수의 입력값이 URL Decode 되어 전송되므로 db_dql[.]php%3f/[.][.]/~/etc/passwd 가 전달됩니다.
몇개의 if문을 거친 후 취약점은 [그림 5] 부분에서 발생하게 됩니다.
[그림 5. 취약점 발생 부분]
urldecode($page)가 실행되면서 $_page 변수에는 db_sql[.]php?/[.][.]/~/etc/passwd가 저장됩니다.
mb_substr 함수에 의해 ? 문자를 위치로 문자열이 분리되며, 결과적으로 471번 행에서 $_page 변수에는 db_sql[.]php 문자열이 남게되고 이는 [그림 6] $whitelist에 포함되기 때문에 해당 함수는 true를 반환하게 됩니다.
[그림 6. whitelist(중략)]
따라서 결과적으로 [그림 2]의 if 구문이 모두 참이 되며, include $_REQUEST['target'] 이 실행되어 LFI 취약점이 트리거됩니다.
공격 분석
CVE-2018-12613의 공격 패킷은 다음과 같습니다.
[그림7. 공격 패킷]
취약점 대응 방안
1. 최신 버전 사용
해당 벤더사에서 발표한 최신의 버전으로 업데이트한다.
2. WINS Sniper 제품군 대응 방안
[5351] phpMyAdmin index.php target LFI
|
||||
첨부파일 | 첨부파일이 없습니다. | |||
![]() ![]() ![]() |
||||
태그 | phpMyAdmin LFI CVE-2018-12613 |