본문 바로가기

보안/웹·모바일

LFI(Local File Inclusion) 취약점

LFI(Local File Inclusion) 취약점

로컬 파임 포함?

- 공격할 파일이 원격지에 있다는 의미. 

- 원격지에 있는 디렉터리로 접근하여 원하는 값을 열어볼 수 있음.

- php 코드에서 include() 부분에 적절한 필터링 미존재 시 발생.

(include_once(), require(), require_once(), file_get_contents() 모두 가능)

- get, post 통하여 include 부분을 건든다면 LFI 고려할 것.

$GET['test']
include "pages/$test"; 같은 부분

- 변수명이 query 같은 느낌이 아닌, page, command, file, template, document, foler 등 이런느낌인 경우 LFI 의심해보자

- 또는 변수에 https://google.com 같은 주소 입력 시 뜨는지.

 

요즘은 php 버전업이 되면서 php wrapper를 활용한다고 함.

php wrapper

관련출처

주로 php://filter (base64 인코딩 이용)
1) php://filter
- 오픈 시 스트림에 필터를 적용할 수 있도록 설계된 메타 알고리즘
- readfile(), file() 및 file_get_contents()와 같은 올인원 파일 함수에 유용

구문: php://filter/convert.base64-encode/resource=파일경로
결과: 의문의 base64인코딩된 값

---

 

이 외에도 사용되는 php wrapper

2) expect:// : 프로세스 상호 작용 스트림. system command 실행.

ex) ?page=expect://dir

 

3) zip:// : 압축을 풀고 압축을 푼 파일 내 코드를 실행

ex) ?page=zip://압축파일명.zip#소스파일.php

 

 

 

참고하며 공부한 블로그 (이곳/이곳)