이 문서에 포함된 어떠한 내용도 불법적이거나 비윤리적인 목적으로 보안 도구나 방법론을 사용하도록 가르치거나 장려하지 않습니다. 항상 책임감 있는 태도로 행동하세요. 여기에 설명된 도구나 기법을 사용하기 전에 개인 테스트 환경 또는 허가를 받았는지 확인하세요. |
[ 환경 ]
DVWA | v1.9 |
Burp Suite | Community Edition v2024.11.2 |
파일 업로드 취약점은 사용자가 업로드한 파일을 처리하는 과정에서 보안 허점을 이용해 악의적인 행동을 수행할 수 있도록 하는 취약점이다. 이러한 취약점은 웹 애플리케이션과 서버 환경에 심각한 보안 위협을 초래할 수 있으며, 주로 원격 코드 실행, 정보 유출, 시스템 손상등과 같은 문제로 이어질 수 있다. 특히, 공격자는 파일 이름, MIME 타입, 파일 내용 등을 조작하여 의도하지 않은 동작을 유발하거나 시스템에 악성 코드를 심을 수 있다.
파일 검증 부족
저장 위치 및 권한 관리 미흡
클라이언트 측 검증 의존
파일 크기 및 용량 제한 부재
보안 정책 미흡
파일 검증 강화
파일 저장 위치 및 권한 관리
서버 측 검증
안전한 콘텐츠 보안 정책(CSP) 설정
로그 및 모니터링
웹 애플리케이션 방화벽(WAF) 사용
파일 업로드 취약점을 예방하기 위해서는 체계적이고 다층적인 보안 접근이 필요하다. 이러한 대응 방안을 통해 시스템의 안정성과 데이터를 보호하며, 사용자 신뢰를 유지할 수 있다.
if( isset( $_POST[ 'Upload' ] ) ) {
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
echo '<pre>Your image was not uploaded.</pre>';
}
else {
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
파일 확장자 검증 부족
업로드 디렉터리 보호 미흡
파일 크기 및 MIME 타입 검증 없음
우선 기능을 확인하기 위해 간단한 파일을 업로드하고, 어떻게 되는지 확인해 보자. test.txt 파일을 업로드하면, [그림 2]와 같이../../hackable/uploads/ 디렉터리에 업로드되는 것을 확인할 수 있다. 따라서 업로드된 폴더의 경로는 http://192.168.107.144 /hackable/uploads/가 된다.
업로드가 되는 경로를 확인하였으니, WebShell을 업로드해 보자. 앞서 소스코드에서 확인하였듯이 파일 확장자 검증, 파일 크기 및 MIME 타입 검증을 하지 않는 것을 확인하였다. 역시나 업로드하는데 별다른 문제없이 [그림 3]과 같이 업로드된 것을 확인할 수 있다.
[그림 3]에서 확인한 업로드 경로를 이용하여 URL을 입력하여 직접 접근하면 업로드한 WebShell을 실행할 수 있다.
DVWA : File Upload - High level (0) | 2025.01.05 |
---|---|
DVWA : File Upload - Medium level (0) | 2025.01.05 |
DVWA : File Inclusion - Impossible level (0) | 2025.01.04 |
DVWA : File Inclusion - High level (0) | 2025.01.03 |
DVWA : File Inclusion - Medium level (1) | 2025.01.03 |