1. File Inclusion
- PHP로 구현된 웹 서버를 대상으로 PHP의 include 기능을 악용하는 방식
- PHP는 incude를 이용해 다른 PHP 파일을 현재 웹 페이지에 포함시킬 수(or 불러올 수) 있음
- 공격자는 악의적인 PHP 파일을 생성해 대상 웹 페이지에 include의 파라미터로 전송해 악성 파일을 실행시키거나, 시스템의 로컬 파일에 접근한다.
- 시스템의 로컬 파일에 접근하는 LFI(Local File Inclusion) 방식과, 외부 파일을 불러오는 RFI(Remote File Inclusion) 방식이 존재
2. DVWA 실습 - Low Level
2.1 RFI 방식
- file1.php, file2.php, file3.php에 접속 시 page 매개변수의 인자값만 변경됨
- 웹에서 접근이 가능하도록 /var/www/html에 악성 PHP 파일 생성
- 취약한 웹 페이지에서 page 매개변수로 악성 PHP 파일 경로를 전달하면, 해당 PHP이 삽입되어 실행됨
2.2 LFI
- 로컬 시스템의 파일에 접근 및 파일 내용 노출
3. DVWA 실습 - Medium
- 취약한 웹 페이지에서 RFI를 시도해 보았을 때 공격에 실패한 것을 확인
- page 매개변수로 전달 받은 값에서 http://, https://(File Inclusion 대응), ../, ..\(Directory Traversal 대응)를 공백으로 치환을 수행
- http:// 사이에 http://를 입력(hthttp://tp://) 시 필터링에 의해 http://가 공백으로 치환되어 최종적으로 http://가 완성됨.
4. DVWA 실습 - High Level
- page 매개변수를 통해 RFI를 시도하면 ERROR가 출력되며, 필터링을 우회하기 위해 hthttp://tp://를 전달하여도 ERROR가 출력됨.
- 파라미터의 명이 file로 시작하지 않거나, include.php가 아니면 에러를 반환하도록 필터링이 적용됨.
- 파라미터를 file로 시작하고, ../를 충분히 입력해 root 디렉터리로 이동 후 /etc/passwd에 접근 시 파일 내용을 확인할 수 있음
- [캡쳐 9]에 적용된 필터링으로는 Directory Traversal 공격에 대응하지 못함.
5. DVWA 실습 - Impossible Level
- 앞서 확인한 필터링을 우회하기 위한 다양한 방법을 시도해 보았지만 ERROR를 출력함
- 소스코드를 확인해 보면 꼭 필요한 파일만 include 될 수 있도록 파일을 지정함
6. 대응방안
6.1 RFI
1. 원격지 파일을 열지 못하도록 php.ini(php 환경설정 파일) 수정
- allow_url_fopen = OFF
- allow_url_include = OFF
6.2 공통
1. 입력값에 대한 필터링을 강화한다(시큐어 코딩 적용)
- hthttp://tp://, ../ 등 필터링을 우회하지 못하도록 필터링 적용
- 중요정보가 저장된 디렉터리나 파일(ex. /etc/passwd, /etc/shadow 등)에 대한 필터링
2. include 관련한 에러를 출력하지 않도록 php.ini 수정
- display_errors = OFF
3. 파일 존재 유무를 확인하는 코드 삽입
function check_validation($filename){
if (file_exists("$DOCUMENT_ROOT/common/$filename){
echo $filename;
}
else{
echo "접근경로가 올바르지 않습니다.";
exit;
}
4. 정기적 로그 분석 진행
5. 공격 IP를 탐지 및 차단할 수 있도록 Snort 정책 등 규칙 적용
'취약점 > File Up&Download, Inclusion' 카테고리의 다른 글
Apache Struts 파일 업로드 취약점 (CVE-2023-50164) (1) | 2023.12.18 |
---|---|
이니텍 INISAFE CrossWeb EX V3 파일 다운로드 취약점 (0) | 2023.03.31 |
VMware vCenter Server 파일 업로드 취약점 (CVE-2021-21972) (0) | 2023.01.15 |
File Upload 취약점_webshell 추가 (0) | 2022.10.12 |
File Upload 취약점_webshell (0) | 2022.10.10 |