DVWA | File Upload | medium

728x90

File Upload

  • 서버에 악성 파일을 업로드하여 실행하거나 권한을 얻는 공격

DVWA File Upload 페이지는 위 사진과 같이 파일을 업로드할 수 있는 기능이 구현되어 있었다.

 

 

<?php

if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // File information
    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];

    // Is it an image?
    if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
        ( $uploaded_size < 100000 ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
            // No
            $html .= '<pre>Your image was not uploaded.</pre>';
        }
        else {
            // Yes!
            $html .= "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    else {
        // Invalid file
        $html .= '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
    }
}

?>

DVWA 깃허브 코드를 보니 Upload 버튼이 눌렸을 때, hackable/uploads/ 경로로 파일이 업로드 되고 있다.
업로드 할 파일의 이름, 타입, 크기를 가져와 타입image/jpeg 또는 image/png 인지 확인하고, 크기100KB 미만인지 확인하고 있다.
유효한 파일일 경우, move_uploaded_file() 함수를 통해 파일을 지정된 경로로 저장하고 있다.

 

https://blog.naver.com/nyyyun2/223667083198

 

MIME 타입

Multipurpose Internet Mail Extensions Type 인터넷에서 전송되는 데이터의 파일 형식과 내용의 성격...

blog.naver.com

 

 

 

업로드 할 파일의 정보를 필터링하고 있지만,
파일 업로드 후 Burp Suite로 패킷을 캡처하면 타입(mime-type) 검증 부분은 위조가 가능해 보인다.

 

<?php
    system("ls")
?>

따라서 위와 같이 시스템 명령어를 실행하는 php 코드를 업로드한 후,
(현재 디렉터리의 하위 목록 출력)

해당 패킷을 캡처해 mime 타입image/jpeg 또는 image/png수정하면 우회가 가능할 것으로 보인다.

 

패킷을 서버로 전송하니 성공적으로 파일 업로드가 되었고,

업로드한 파일 경로를 보니, ls 명령어가 실행된 걸 볼 수 있었다.

728x90

'DVWA' 카테고리의 다른 글

DVWA | SQL Injection | medium  (0) 2024.11.21
DVWA | Insecure CAPTCHA | medium  (1) 2024.11.20
DVWA | File Inclusion | medium  (0) 2024.11.20
DVWA | CSRF | medium  (2) 2024.11.19
DVWA | Command Injection | medium  (0) 2024.11.19