1. LFI 란??

 

- LFI(Local File Inclusion)란 외부의 TXT, php 등 파일을 내부의 PHP 파일처럼 사용할 수 있으며, 서버 내부의 파일을 가져올 경우 정보 유출을 위해 많이 사용됨

 

 2. RFI 란??

 

- RFI(Remote File Inclusion)란 외부의 서버로 부터 내부의 서버에 가져와 실행 시킬 수 있으며 외부의 WebShell을 가져올 수 있음

 

3. 실습

 

LFI 실습

위의 URL을 보니 language 파라미터를 통해 lang_en.php파일을 가져오는 것을 볼 수 있음(include 하고 있음)

 

이를 통해 etc/passwd 파일을 가져오도록 함 (../../../ 경로를 상위로 올라가 etc 아래 passwd파일을 가져옴, 상위 경로 이동은 여러개 삽입해도 됨)

 

RFI 실습

 

파이썬을 이용하여 간단한 서버 포트 열기

 

서버 열린것 확인 후 준비한 php 파일 확인

 

원격 서버에서 파일 가져와 Include 시도

 

원격 파일 include 성공 및 cmd 명령어 확인

 

 

원격 명령을 통해 파일 생성확인

 

4. 해결방안

 

- 경로 이동 문자 삽입 될 수 없도록  필터링 (../ , ..\\ , /.. , \.. , . 등), 우회 가능성 존재

- realpath를 통해 설정된 경로에서만 값을 받아올 수 있도록 설정, 시큐어 코딩 필요  

- 배열을 통해 허용된 경로에 해당하는 파일(확장자) 인지 확인 하도록 코딩

 

 

 

복사했습니다!