특징
- PHP 애플리케이션에서 발생하는 취약점
- include() 함수로 다른 파일을 소스 코드에 직접 삽입할 수 있고, 일반 사용자가 웹 요청을 통해 include 할 파일을 직접 설정할 수 있는 경우 발생
- 로드하는 파일의 위치에 따라 LFI과 RFI로 구분
- include 함수: 지정한 파일(페이지)를 현재 페이지에 포함시켜 실행시켜주는 함수
LFI ( Local File Inclusion)
- 공격자가 공격 대상 서버에 위치한 파일을 include 하여 공격
- 로드하는 파일의 위치가 공격 대상에 위치
- 일반적으로 경로조작 기법을 이용하여 공격
RFI (Remote File Inclusion)
- 원격으로 외부 서버에 있는 파일을 include 하여 공격
- 로드하는 파일의 위치가 공격 대상 서버가 아닌 외부 서버에 위치
- 외부의 악성 프로그램을 실행시켜 공격
DVWA 실습
- DVWA 파일삽입 취약점 탭에 접근
- URL을 확인하면 php include 함수 사용한것을 확인할수 있음
- 다른 파일로 접근하면 include를 통해 file1으로 접근한것을 확인할 수 있음
LFI 공격시도
- 웹페이지의 파라미터를 활용하여 경로 조작 기법으로 시스템 정보를 로드하는 /etc/passwd 입력하여 include 시도
- LFI 공격에 성공하여 시스템 정보가 출력이 되는 것을 확인
RFI 공격시도
- 파라미터를 활용하여 외부 웹페이지가 로드 되는지 테스트
- google.com 이 로드된것 확인
- 외부 악성코드 로드도 이러한 방식으로 시도
소스코드 분석
<?php
// The page we wish to display
$file = $_GET['page'];
?>
- $_GET['page'] 변수는 사용자로부터 입력받은 값을 그대로 $file 변수에 저장하기 때문에 공격자는 서버에서 의도하지 않은 파일을 불러올 수 있음
대응방안
- 허용된 파일만 포함하기
특정 경로에 있는 파일만 포함하도록 제한하거나, 허용된 파일 목록을 유지 관리 - 경로 조작 방지
사용자가 경로 조작을 하지 못하도록 파일 경로에서 경로 이동 문자열 필터링 - 원격 파일 포함 방지
php.ini에서 설정을 통해 allow_url_include Off 상태로 변경하여 RFI를 방지
'CERT' 카테고리의 다른 글
웹 모의해킹: Insecure CAPTCHA (0) | 2024.10.05 |
---|---|
웹 모의해킹: File Upload (2) | 2024.10.05 |
웹 모의해킹: CSRF (2) | 2024.10.05 |
웹 모의해킹: Brute Force (0) | 2024.10.05 |
웹 모의 해킹: Command Injection (0) | 2024.10.05 |