본문 바로가기

모의해킹 스터디/Week14

파일 업로드(File Upload) 공격

파일 업로드 공격

공격자가 원하는 임의의 파일을 업로드 하는 공격

단순하게 파일을 올리는 것에 그치는 공격이 아니라, 파일이 웹 서버 상에서 실행되는 것을 목표로 하는 공격이다.

파일이 서버측에 저장되어서 실행되는 공격이므로 서버 측 공격이다.

 

원인으로는 파일을 업로드 받을 때, 검증/검사를 하지 않아서 악성 파일이 업로드 될 경우 발생한다.


공격 종류

1. 서버 측 실행 공격

서버는 각 백엔드 언어에 맞는 파일을 올려야지 엔진이 작동한다.

업로드된 파일은 WAS(Web Application Server)에서 실행하고 실행한 결과물을 브라우저에 전송하게 되는데, 이 때 서버 권한을 가져올 수 있는 파일을 업로드하여 WAS가 실행시키게 하면, 서버 권한을 가져올 수 있다.

 

2. Phishing : HTML 파일

HTML 파일을 업로드하는 공격

클라이언트가 접속하고 데이터를 입력할 경우, 이를 공격자 페이지로 전송

3. Deface 공격

index 파일을 덮어쓰는 공격

메인 페이지를 변경하여 데이터 입력을 유도

 

4. XSS

Stored XSS - 서버에 저장되는 클라이언트측 스크립트 삽입 공격

index 파일을 덮어쓰는 과정에서 스크립트를 실행하여 공격할 수 있음

 

5. DoS

대용량 파일을 마구 업로드하여 서버를 마비시키는 공격


서버 측 실행 공격 - 웹 쉘(Web Shell) 공격

 

서버 측 실행 공격 종류에서는 웹 쉘 공격이 있다.

웹 쉘 공격은 웹 서버의 동작 원리를 이용한 공격이다.

 

 

클라이언트가 페이지를 요청하면 서버는 응답을 한다. 이 과정에서 웹 서버는 정적 페이지는 그대로 Web Server에서 처리를 하여 브라우저에 전달한다. 그리고 DB 데이터를 요구하는 동적 페이지는 WAS(Web Application Server)에서 실행한 결과물을 브라우저에 전달하게 되는데, 이 점을 이용하여 파일 업로드 공격을 진행한다.

 

공격 핵심

1. 웹 서버측 실행 코드(php, python 등)를 업로드

2. 업로드된 파일의 경로 확인

 

<?php
  echo system($_GET['cmd']);
?>

 

위의 코드가 적힌 파일을 업로드 하고, 파일이 저장된 경로로 들어가게 되면 WAS는 파일을 실행하여 client에게 전달하게 되는데 이 때 client에게 웹 쉘을 전송하게 된다.

 

공격자가 웹 쉘 권한을 탈취하게 되면 파일을 삭제하거나, 시스템 정보가 유출 될 수 있는 문제점이 있다.

 

 

공격 예시

 

파일 업로드 취약점이 있는 게시판에서 먼저 임의의 그림 파일을 하나 업로드 한다.

 

 

파일이 업로드 된 게시물에 들어가서 파일을 우클릭 후 "링크 주소 복사"를 누른다.

 

경로는 위의 url과 같았다. 파일명은 test.jpg이며, target 디렉토리는 ./file/uploads라고 한다.

 

기본 index 페이지에서 ./file/uploads를 추가로 입력하여 파일이 저장되어 있는 디렉토리로 들어가게 되면 아래 그림과 같이 저장된 파일 목록을 볼 수 있다.

 

파일이 저장되는 경로까지 확인하였으므로 이번에는 웹 쉘 권한을 가져올 수 있는 파일을 작성하여 업로드 한다.

<?php
  echo system($_GET['cmd']);
?>

 

아래의 코드가 작성된 webshell.php 파일을 업로드 하고, 똑같이 확인을 진행한다.

 

정상적으로 파일이 업로드 된 것을 확인하였다.


 

이제 Burp Suite를 통해 웹 쉘에 명령을 내릴 수 있다.

 

webshell.php 요청의 url 파라미터를 일부 수정하여 명령을 전달할 수 있다.

 

 

이전 php 코드에서 cmd라는 파라미터 명에서 GET방식으로 전송된 값을 실행한다고 작성하였기 때문에 기존 경로에 ?cmd=명령어를 추가하여 요청을 보낸다.

 

이와 같이 파일 업로드 취약점을 이용하게 되면 웹 쉘 권한을 획득할 수 있다.

'모의해킹 스터디 > Week14' 카테고리의 다른 글

파일 업로드 검사 우회 방법  (1) 2024.07.22
File Vuln 문제 풀이(Web Shell 1, 2)  (2) 2024.07.21