ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <WEB Hacking> LFI
    WEB Hacking 2022. 1. 12. 01:47

    ■ LFI(Local File Inclusion)

    LFI 취약점이란 공격 대상 서버에 위치한 파일을 포함시켜 읽어오는 공격이다.

    LFI 또는 RFI(Remote File Inclusion) 취약점이 존재하는지 확인하기 위해 주로 파라미터로 ../를 입력해본다.

    공격 대상 주소/test.php?parameter=../

     

    LFI 취약점은 php 코드상에서 include() 사용 시, 입력 값에 대한 필터링이 이루어지지 않아 발생하는 취약점이다.

    만약 LFI 공격이 가능하다면, 파라미터에 파일의 경로를 입력하면 파일이 실행된다.

    # example
    <?php
        $file = $_GET['file'];
        if(isset($file)){
            include("pages/$file");
        }
        else{
            include("index.php");
        }
    ?>
    # input
    /test.php?file=../../../../../../../../etc/passwd

     

    ■ PHP Wrappers

    php://filter

    가장 많이 사용되는 방법으로, base64 인코딩을 이용한 방법이다.

    ?parameter=php://filter/convert.base64-encode/resource={파일 경로}

    이를 요청하면, Response Body 안에 base64로 인코딩된 값을 확인할 수 있다.

    이 값을 base64 디코딩하면 해당 파일의 코드를 읽을 수 있다.

     

    base64로 인코딩하지 않고 사용할 수도 있다.

    ?parameter=php://filter/resource={파일 경로}

     

    Expect Wrapper

    시스템 명령의 실행을 허용하지만, expect php 모듈은 기본적으로 비활성화 되어있다.

    ?parameter=expect://ls

     

    Zip Wrapper

    업로드된 .zip 파일을 서버 측에서 처리하여 침투 테스터가 취약한 파일 업로드 기능을 사용하여 zip 파일을 업로드하고 LFI 취약점을 통해 zip 필터를 활용할 수 있다.

    1. php 리버스 셸을 생성한다.

    2. zip 파일로 압축한다.

    3. 압축된 셸 페이로드를 서버에 업로드한다.

    4. zip wrapper를 사용하여 페이로드를 추출한다.

    ?parameter=zip://path/to/file.zip%23shell

    위는 zip 파일을 셸로 추출한다. 만약 서버가 .php를 추가하지 않으면, shell.php로 변경한다.

    ※ 파일 업로드 기능이 zip 파일 업로드를 허용하지 않는 경우, 파일 업로드 기능을 우회할 수 있다.

     

    /proc/self/environ

    LFI 취약점을 통해 /proc/self/environ을 포함할 수 있다면, User-Agent 헤더를 통해 소스 코드를 주입하는 것이 가능하다. 소스 코드가 User-Agent 헤더에 삽입되면, LFI 취약점을 이용하여 /proc/self/environ을 실행하고, 환경 변수를 재로딩하여 역 셸을 실행할 수 있다.

     

    Null Byte Technique

    Null Byte Injection은 %00과 같은 URL 인코딩된 널 바이트를 추가하여 웹 응용 프로그램 내의 필터링을 우회한다.

    ?parameter=/etc/passwd%00
    ?parameter=/etc/passwd%2500

     

    Truncation LFI Bypass

    Truncation은 블랙리스트 우회 기술이다. 취약한 파일을 포함하는 메커니즘에 긴 매개변수를 주입함으로써, 웹 응용 프로그램은 입력 매개변수를 잘라내 입력 값 필터를 우회할 수 있다.

    'WEB Hacking' 카테고리의 다른 글

    <WEB Hacking> ServerSide: SSRF  (0) 2022.01.05
    <WEB Hacking> File Vulnerability  (0) 2021.12.23
    <WEB Hacking> Command Injection  (0) 2021.12.22
    <WEB Hacking> NoSQL Injection  (0) 2021.12.20
    <WEB Hacking> SQL Injection  (0) 2021.12.20
Designed by Tistory.