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를 통해 설정된 경로에서만 값을 받아올 수 있도록 설정, 시큐어 코딩 필요
- 배열을 통해 허용된 경로에 해당하는 파일(확장자) 인지 확인 하도록 코딩
'기술보안 > Web' 카테고리의 다른 글
[ActiveX] 4장. ActiveX 취약점 RCE(Remote Code Execution) (6) | 2022.03.31 |
---|---|
SQLI 보안 솔루션 및 입력 값 검증 우회 기법 (0) | 2022.03.30 |
[ActiveX] 2장. 취약한 ActiveX 프로그램 개발 (2) | 2022.02.28 |
[ActiveX] 1장. ActiveX란? (0) | 2022.02.28 |
Server-side JavaScript Injection (0) | 2022.02.28 |