File Inclusion ?
- 주로 PHP 애플리케이션에서 발생하는 취약점 중 하나로 include() 함수로 다른 파일을 소스 코드에 직접 삽입할 수 있고, 일반 사용자가 웹 요청을 통해 include 할 파일을 직접 설정할 수 있는 경우 발생되는 취약점
- 동적으로 파일을 로드할 때 발생하는 취약점으로 로드하는 파일의 위치에 따라 LFI(Local File Inclusion)과 RFI(Remote File Inclusion)으로 구분된다.
LFI ( Local File Inclusion ) ?
- 공격자가 공격 대상 서버에 위치한 파일을 include 하여 공격
- 즉, 로드하는 파일의 위치가 공격 대상에 위치한다.
RFI (Remote File Inclusion ) ?
- 원격으로 외부 서버에 있는 파일을 include 하여 공격
- 즉, 로드하는 파일의 위치가 공격 대상 서버가 아닌 외부 서버에 위치한다.
DVWA 환경에서 File Inclusion 공격 실습
- 우선 본 실습에 앞서 실습 환경의 경우 리눅스 환경에서 DVWA 환경을 구축한 후 가장 취약한 환경인 Low 레벨 환경에서 실습을 진행하였습니다.
- File Inclusion 공격 실습을 위해 해당 탭에 들어온 모습
- URL을 확인하면 include.php 라는 파일을 include 하여 해당 페이지를 출력하는 것을 확인할 수 있다.
- 다른 페이지도 확인하기 위해 하이퍼링크가 설정된 file1.php를 클릭하여 이동
- file1.php 를 클릭하여 온 모습
- 이 때 URL을 확인해보면 file1.php 파일을 include 하여 출력한다는 것을 확인할 수 있다.
- 즉, 해당 include 되는 파일명을 파라미터로 입력받아 해당 파일을 include 하여 출력한다는 것을 알 수 있었기에 해당 파일명을 임의로 설정하여 다른 파일도 include 할 수 있을 것으로 예상되었다.
- 예상된 내용을 기반으로 page 파라미터에 시스템 정보가 들어있는 파일 중 하나인 /etc/passwd 경로에 파일을 입력하여 include 를 시도한 결과
- LFI 공격에 성공하여 해당 시스템 정보 파일이 include 되어 출력되는 모습을 위 사진에서 확인할 수 있다.
- 또한, 해당 page 파라미터에 google URL을 입력하여 RFI 공격을 시도해본 결과 google 웹 페이지가 include 되어 해당 페이지서 출력되어 지는 모습도 확인할 수 있었다.
File Inclusion 대응 방안
- file inclusion 공격이 많이 발생되는 애플리케이션인 php를 기준으로 php.ini 파일에서 allow_url_fopen, allow_url_include, display_errors 설정을 모두 Off 로 설정하여 RFI 공격이 불가능 하도록 설정한다.
- 파일 이름을 입력 받아 include 하는 경우 입력값을 검증할 수 있는 로직(White List 방식 또는 Black List 방식)을 구현하여 반드시 필요한 파일만 include 할 수 있도록 구현한다.
'CERT > 웹 모의해킹 실습' 카테고리의 다른 글
[웹 해킹] Insecure CAPTCHA / DVWA 환경 실습 / 대응 방안 ( 캡챠 우회 공격 ) (0) | 2023.06.03 |
---|---|
[웹 해킹] File Upload 공격 / DVWA 환경 실습 / 대응 방안 (0) | 2023.06.03 |
[웹 해킹] CSRF(Cross-Site Request Forgery) 공격/DVWA환경 실습/대응 방안 (0) | 2023.05.27 |
[웹 해킹] 무차별 대입 (Brute Force)공격/DVWA 환경 실습/대응 방안 (0) | 2023.05.21 |
[웹 해킹]Command Injection 공격/DVWA 환경 실습/대응 방안 (0) | 2023.05.21 |