파일 삽입 취약점
File Inclusion
① 개념
- 공격자가 악성 서버 스크립트를 서버에 전달하여 해당 페이지를 통해 악성코드가 실행되도록 하는 취약점
- LFI(Local File Inclusion) : 삽입할 악성 서버 스크립트 파일의 위치가 로컬 서버에 위치
- RFI(Remote File Inclusion) : 삽입할 악성 서버 스크립트 파일의 위치가 원격지에 위치
② 공격 절차
- include 함수를 이용한 페이지 확인
if(..) {
$target =$_REQUEST[fname];
...
include($target) //외부로부터 입력받은 target파라미터를 이용해 include 수행
} - RFI를 이용한 웹쉘 실행
- include가 실행되는 파라미터(ex. 입력한 페이지가 현재 페이지에 뜨는 페이지의 입력값)에 webshell의 원격지 경로(ex. http://example.com/hacker/webshell.php)를 입력하면 원격지의 페이지가 include 되어 현재 페이지에서 실행되는 것을 확인 가능.
③ 대응책
- 관리자는 소스코드에 include,require 등의 구문/함수가 존재하는지 검증하고, 만약 사용자의 입력값을 통해 파일명이 결정된다면 외부의 악의적인 파일이 되어 실행되지 않도록 PHP 파일인 php.ini 파일에서 allow_url_fopen을 Off 설정한다.
#php.ini 파일
...
allow_url_fopen = Off- include 함수 : 오류 발생 시 에러 메시지를 출력한 후 스크립트 계속 실행
- require 함수 : 오류 발생 시 에러 메시지를 출력한 후 스크립트 실행 중지
- 에러 메시지를 출력하지 않기 위해 php.ini파일의 display_errors=Off 설정한다.
#php.ini 파일
...
allow_url_fopen = Off
display_errors = Off - 대규모 홈페이지 변조는 PHP의 외부 사이트 소스 실행 기능(allow_url_fopen)을 이용해 악의적인 스크립트를 로컬 서버에서 실행시킴으로써 발생하고 있으므로 주의가 필요하다.
'정보보안 > 애플리케이션 보안' 카테고리의 다른 글
[웹 애플리케이션 취약점] 기타 취약점 (0) | 2024.11.17 |
---|---|
[웹 애플리케이션 취약점] 불충분한 세션 관리 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 경로 추적 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 파일 다운로드 취약점 (1) | 2024.11.16 |
[웹 애플리케이션 취약점] 파일 업로드(File Upload) 취약점 (0) | 2024.11.16 |