1. 개념
- 주로 PHP 애플리케이션에서 발생하는 취약점 중 하나
- include() 함수로 다른 파일을 소스 코드에 직접 삽입할 수 있고, 일반 사용자가 웹 요청을 통해 include 할 파일을 직접 설정할 수 있는 경우 발생
- 동적으로 파일을 로드할 때 발생하며 삽입할 악성 스크립트 파일 위치에 따라 LFI(Local File Inclusion)와 RFI(Remote File Inclusion)로 나뉨
1-1. LFI(Local File Inclusion)
- 악의적인 공격자가 웹 응용 프로그램에서 로컬 파일을 로드하도록 유도하여 공격 방식
- 접근하려는 파일이 외부(공격자) 컴퓨터에 존재하며, 공격자는 악성 스크립트를 실행하기 위해 웹 서버에 있는 로컬 파일 시스템에 액세스 가능
1-2. RFI(Remote File Inclusion)
- 악의적인 공격자가 웹 응용 프로그램에서 외부 파일을 로드하도록 유도하여 공격 방식
- 접근하려는 파일이 희생자의 컴퓨터에 존재하며, 공격자는 응용 프로그램에서 사용하는 파일을 감염시켜 악성 코드를 실행하거나 웹 서버의 제어 탈취 가능성 존재
※ include() 함수
- 지정한 파일(페이지)를 현재 페이지에 포함해서 실행시켜주는 함수
- 지정한 파일의 파일(페이지)를 적절한 검증없이 입력 받는다면 악성 스크립트를 포함한 페이지가 include 가능
- 주로 php에서 발생하는데 include()함수로 다른 파일을 소스코드에 포함할 수 있어 이를 공격자가 자주 악용함
2. 실습
※ 본 실습은 DVWA Security Level을 Low로 설정해서 진행했습니다.
2-1. DVWA 페이지 File Inclusion 탭의 첫 번째 파일
2-2. 공격을 위한 간단한 PHP 파일 작성
2-3. Include로 앞서 작성한 PHP파일을 삽입
2-4. PHP의 system 명령어를 통해 cat /etc/passwd을 수행하도록 함
2-5. PHP파일 수정 후 공격이 성공된 모습
2-6. 로컬 시스템의 파일에 접근하는 방식
3. 대응방안
- 소스코드 상 include, require 등의 구문/함수가 존재하는지 사전 검증하고, 사용자 입력값을 통한 원격 파일 접근을 차단
- php.ini 파일에서, allow_url_fopen = off 및 allow_url_include = off 설정을 통해 외부 사이트의 악성 스크립트 파일을 URL 형태로 include 되지 않도록 구현
- 단순 접근 차단 외, 경로 변경에 대한 방지(경로 이동 문자열 필터링) 및 에러 구문 노출 방지를 적용
- php.ini에서 display_errors = off 설정 시, 에러구문 노출되지 않게 구현
'침해대응' 카테고리의 다른 글
[웹 모의해킹] File Upload 공격 (1) | 2024.11.19 |
---|---|
[웹 모의해킹] CSRF(Cross Site Request Forgery) 공격 (0) | 2024.11.16 |
[웹 모의해킹] Brute Force(무차별 대입) 공격 (0) | 2024.11.16 |
[웹 모의해킹] Command Injection 공격 (0) | 2024.11.16 |
DVWA 환경 구축 (칼리 리눅스 설치) (0) | 2024.03.18 |