* 파일 삽입 취약점 : 공격자가 악성 서버 스크립트를 서버에 전달, 해당 페이지를 통해 악성 코드가 실행 되도록 하는 취약점
- 악성 스크립트가 삽입되는 위치에 따라, LFI(Local File Inclusion), RFI(Remote File Inclusion)으로 분류
- 경로 제한 또는, 파라미터 변조 등에 대한 필터링의 부재로 경로 접근, 파일 실행, 외부 파일 다운로드 등의 다양한 공격으로 활용 가능
* RFI (Remote File Inclusion) : 공격자가 외부 서버(공격자 서버 등)에 있는 원격 파일을 URL 파라미터에 포함, 전달하여 실행
- ex) 원격지 웹쉘 경로) http://192.168.10.5/hacker/webshell.php
- 공격할 대상 페이지 URL의 파라미터에 원격지 웹쉘 경로 삽입
* LFI (Local File Inclusion) : 공격자가 공격 대상 서버에 업로드 되어 있는(위치한) 파일을 실행, 공격에 활용하는 취약점
- ex) include, require 등의 외부 파일을 URL 형식으로 읽어올 수 있도록 하는 함수가 활성화된 페이지 확인
- ex) GET으로 특정 파라미터를 이용하여 include 될 수 있는 페이지 코드 일부(취약한 대상) 유추 및 공격 수행
~~~
if(isset($_GET['submit'])){
$target=$_REQUEST['fname'];
~~~
// 외부로부터 입력 받은 $target 파라미터를 이용, include 수행
include($target);
~~~
}
~~~
- 이후 경로 유추, 추가 정보 획득 등을 통해 실제 file에 대한 URL로 파라미터를 이용한 include 수행
- 혹은, 프록시 툴 등을 이용하여, User-Agent 헤더 필드에 "<?php passthru('명령어'); ?" 같은 명령어 수행 구문 삽입, Submit 등 수행
* 외부 경로 파일을 URL상 삽입해서 공격을 한다(RFI)는 와닿지만, LFI는 공격 대상에 파일을 삽입...? 개념이 모호한 느낌이다. 사실 악성 파일을 서버 관리자가 로컬에 자의로 올려놓진 않기 때문이다.
- 하지만, 위치만 다를 뿐 공격 대상 서버(로컬)에 파일을 사전에 위치 시키는 방법은 다양하다.
- 사전에 File Inclusion이 성립할 조건만 확인 된다면, FTP, wget, curl 등을 이용해 악성 파일을 위치 시키는 등... 성립만 되면 Local File Inclusion이 되는 것이다.
* 대응책
1) 관리자는 소스코드 상 include, require 등의 구문/함수가 존재하는지 사전 검증, 사용자 입력값을 통한 원격 파일 접근을 차단해야함.
- php.ini 파일에서, allow_url_fopen = Off 및 allow_url_include = Off 설정을 통해 외부 사이트의 악성 스크립트 파일을 URL 형태로 include 되지 않도록 함
include : 오류 발생 시 에러 메세지를 출력 후, 스크립트를 계속해서 실행
require : 오류 발생 시 에러 메세지를 출력 후, 스크립트 실행 중지
2) 단순 접근 차단 외, 경로 변경에 대한 방지(경로 이동 문자열 필터링) 및 에러 구문 노출 방지(추가 정보 습득에 대한 방지)를 적용하여, 보안을 강화함
- php.ini에서 display_errors = Off 설정 시, 에러구문 노출되지 않음
// PHP 상 문자 필터링(이스케이프 처리)
str_replace(".", "", $path);
str_replace("/","", $filename):
- httpd.conf에서 사용자 정의 에러 페이지 설정 (정보 노출 없는 에러페이지 출력)
- 지정 디렉터리 외부로 이동할 필요가 없으므로, 경로 변경 등에대한 문자가 전달 되었을 경우, 이스케이프 처리
'Information Security > Hacking' 카테고리의 다른 글
HTTP 응답 분할 취약점 (HTTP Response Splitting Vulnerability) (0) | 2021.02.17 |
---|---|
불충분한 세션 관리 취약점 (Insufficient Session Management Vulnerability) (0) | 2021.02.15 |
파일 다운로드 취약점 (File Download Vulnerability) (0) | 2021.02.15 |
파일 업로드 취약점 (File Upload Vulnerability) (0) | 2021.02.15 |
웹 상 운영체제 명령어 실행 (OS Command Execution on Web) (0) | 2021.02.14 |