PentesterLab: 파일 포함

많은 응용 프로그램은 클래스를 로드하거나 여러 웹 페이지 간에 일부 템플릿을 공유하기 위해 파일을 포함해야 합니다. 파일 포함 취약성으로 인해 공격자는 include() 기능을 사용하여 웹 서버에서 승인되지 않았거나 민감한 파일에 액세스하거나 악성 파일을 실행할 수 있습니다.(2)

어떻게?



파일 포함 취약점은 사용자 제어 매개변수가 포함 기능(예: PHP에서 require, require_once, include 또는 include_once)에 대한 호출에서 파일 이름의 일부로 사용될 때 필터링 부족에서 발생합니다.

이러한 메서드 중 하나에 대한 호출이 취약한 경우 공격자는 함수를 조작하여 다음과 같은 결과를 초래할 수 있는 자체 코드를 로드할 수 있습니다.
  • 로컬 파일에는 LFI가 포함됩니다. 임의의 파일을 읽기 위한 디렉터리 순회와 같이 로컬 파일이 로드, 읽기 및 해석됩니다.
  • 원격 파일에는 RFI가 포함됩니다. 원격 파일이 검색되고 해석됩니다.
  • 임의 코드에 여는 PHP 태그가 포함되어 있으면 파일이 PHP 코드로 해석됩니다.(1)

  • 테스트



    PentesterLabs File Include Lab과 같은 웹 사이트에 있는 경우 url 매개 변수에 특수 문자( " )를 삽입하면 오류 메시지가 표시될 수 있습니다.

    Warning: include(intro.php'): failed to open stream: 
    No such file or directory in /var/www/fileincl/example1.php on line 7 
    Warning: include(): Failed opening 'intro.php'' 
    for inclusion (include_path='.:/usr/share/php:/usr/share/pear') 
    in /var/www/fileincl/example1.php on line 7
    


    오류 메시지를 주의 깊게 읽으면 다음과 같은 많은 정보를 추출할 수 있습니다.
  • 스크립트의 경로:/var/www/fileincl/example1.php.
  • 사용된 함수: include().
  • include 호출에 사용된 값은 추가나 필터링 없이 삽입한 intro.php' 값입니다.

  • 여기에서 URL에 ../../../etc/passwd 기술을 적용하는 것과 같이 디렉터리 순회를 감지하고 파일 포함을 감지하는 데 사용되는 방법을 사용할 수도 있습니다.

    완화


  • 기본적으로 최신 PHP는 allow_url_include 구성 옵션 덕분에 원격 파일 로드를 비활성화하지만 이것이 PHP 버전이 최신 버전이 아닌 경우 악용할 수 없다는 의미는 아닙니다.
  • 사용자 제어 매개변수의 적절한 필터링을 적용하거나 사용자에게 특정 매개변수 옵션을 제공합니다.



  • 해피해킹


    참조


  • https://pentesterlab.com/
  • https://resources.infosecinstitute.com/file-inclusion-attacks/#gref




  • 아직 배우는 중이니 참고하세요. 제가 언급한 내용이 잘못된 경우 알려주십시오. 내가 완전히 이해하지 못하는 것에 대해 더 배우고 싶습니다.

    좋은 웹페이지 즐겨찾기