brunch

You can make anything
by writing

C.S.Lewis

by 복지CEO 조정원 Feb 08. 2016

Flashchat 파일 업로드 취약점 분석

보안프로젝트 매거진


※ 주의사항

아래 공격 코드는 연구 목적으로 작성된 것이며,  허가받지 않은 공간에서는 테스트를 절대 금지합니다.

악의 적인 목적으로 이용할 시 발생할 수 있는 법적 책임은 자신한테 있습니다. 이는 해당 글을 열람할 때 동의하였다는 것을 의미합니다.

해당 문서의 저작권은  저자들에게 모두 있습니다. 다른 목적으로 활용할 시 법적 조치가 가해질 수 있습니다.



해당 문서는 역곡 취업 프로젝트 모임 4기 윤재선 님이 작성된 것 중 공개 내용입니다.


 1.1 개요

플래시쳇(Flashchat)은 웹사이트에 관리자의 정의로 설정된 채팅방이다. 일반적으로 PHP/MySQL로 이루어진 독립 실행형 채팅방이며 등록된 사용자만  채팅할 수 있는 무료 채팅 서비스이다. 본 문서에서는 플래시쳇이 동작하는 웹사이트에서 발견된 파일 업로드 취약점을 이용해 실습을 진행하며 사용된 도구는웹쉘 생성기 weevely이다.


1.2 취약점 실습

Windows Server 2012 R2 에 설치된 IIS 8.0 웹사이트에 Flashchat 6.0.8 버전을 설치하여 실습을 진행하였다. 


플래시쳇 파일 업로드 취약점 실습 환경


공격자 

운영체제: Kali  GNU/Linux 2.0 32-bit

IP: 192.168.23.129


공격 대상

Windows Server 2012 R2

192.168.23.130

그림 3‑1 플래시쳇 페이지


일반적으로 플래시쳇은 ../chat/flashchat.php 페이지로디폴트 값이 정해져 있다. [그림 3‑1]에서는 어도비 플래시 플레이어(Adobe Flash Player)가 설치되어 있지 않은 브라우저라서 플래시쳇이실행되지 않았다. 실습에서는 Windows Server 2012 R2의 IIS 주소인 192.168.23.130에 /chat/flashchat.php로 접속해서 플래시쳇의 페이지가 존재한다는 사실을 확인했다.


그림 3‑2 upload.php 확인


마찬가지로 업로드 페이지 역시 관리자가 변경하지 않으면../chat/upload.php로 정해져 있다. 해당 페이지에 접속 후 ok-!@가 표시되면 페이지가 존재한다.

그림 3‑3 exploit.html 코드


upload.php에 파일 업로드를 위해 exploit.html을 작성한 후 공격 대상의 upload.php URL을 입력해준다.

그림 3‑4 exploit.html 실행


작성한 exploit.html 파일을 브라우저를 통해 실행시키면 [그림 3‑4] 페이지가 열리며 Browse… 버튼을 통해 파일을  업로드할 수 있다. 


그림 3‑5 test.txt

그림 3‑6 test.txt 파일 업로드 성공


파일이  업로드되는지 확인하기 위해 test.txt 파일을 작성 후 업로드한다. 파일 업로드가 성공하면 ok-!@ 텍스트가 표시된다.

그림 3‑7 test.txt 확인


upload.php를 통해 업로드 한 파일은 temp폴더에  업로드된다. 실제로 test.txt 파일이  업로드되었는지 확인하기 위해 ../chat/temp/test.txt로이동해보면 [그림 3‑5]에서 작성한 txt 파일이 브라우저에 표시되는 것을 확인할 수 있다. 지금까지의 과정을 통해 upload.php 페이지에 파일을 업로드할 수 있는 취약점을 발견하였으므로 weevely를 이용하여 웹쉘 업로드를 준비한다.


그림 3‑8 weevely로 shell.php 웹쉘 생성

그림 3‑9 shell.php 업로드


[그림 3‑8]의 weevely명령어를 통해 password가 test인 shell.php 파일을 작성한다. 그 후 [그림 3‑4] 페이지를 통해 shell.php를  업로드한다.

그림 3‑10 weevely 공격 실행


그림 3‑11 dir 명령어

그림 3‑12 ipconfig 명령어


공격을 실행하면 세션이 맺어지면서 [그림 3‑11]과 같이 shell.php가  업로드된../chat/temp로 커맨드 창이 열리는 것을 볼 수 있다. dir명령어와 ipconfig명령어로 확인해보면 공격 대상의 폴더와 IP를 확인함으로써 웹쉘이 성공적으로  업로드된 것을 확인할 수 있다.


2 대응 방안

파일 업로드 취약점을 방어하기 위한 가장 간단한 방법은 upload 페이지의 이름을 변경하거나 php, html 등 스크립트가 실행될 수 있는 파일의 업로드를 차단하는 것이다.  간단한 방법을 통해 파일 업로드 취약점을 방어할 수 있지만 다른 경로를 통해 upload 페이지 정보를 얻거나 확장자 우회를 통해 파일을  업로드할 수도 있다.


그러므로 더 완벽한 파일 업로드 취약점의 보안 대책으로는

1.     업로드 폴더의 스크립트 실행 권한을 제거한다.

2.     화이트리스트 방식을 사용한다. -> jpg, gif 확장자만 파일 업로드를 허용한다.

3.     데이터베이스에서 디렉터리명과 파일명을 저장하여 호출하는 방식으로 한다.

4.     웹 서버와 업로드 서버를 물리적으로 분리하고  업로드되는 디렉터리 스크립트 실행 권한을 삭제한다.


3 결론

Flashchat File Upload 취약점 실습을 통해 웹 해킹 방식 중 하나인 파일 업로드 취약점이 무엇인지 알아보았다. 파일 업로드 취약점은 바로 쉘을 획득 가능하다는 점에서 굉장히 강력한 해킹 공격이다. 또한 관리자의  쉘뿐만 아니라 해당 서버와 연결되어있는 PC까지 접근함으로 인해 내부망으로 침투가 가능하다. 본 문에서는 weevely라는 Web Shell Generator의 사용법에 대해 알아보았고 간단한 도구만으로도 공격 대상의 쉘을 획득하는 실습을 하였다. 

또한, 실제 모의해킹 실무에서 파일 업로드 취약점을 어떻게 발견할 수 있을지 생각해보는 계기가 되었고 그에 따른 대응 방안으로 어떠한 방어법들이 있는지 확인할 수 있었다. 추후에는 실제로 화이트 리스트 스크립트를 작성해 파일 확장자를  체크해보고 어떠한 우회 방식이 있는지 공부해서 모의해킹 실무에서 활용할 수 있는 방법을 찾는 것이 중요할 것이다.


4 참고 자료

4.1 Site

https://www.youtube.com/watch?v=JwBNGpqezfwweevely를 이용한 파일 업로드 취약점

https://www.youtube.com/watch?v=yxZgLVsFyiIFlashchat 파일 업로드 취약점

https://www.exploit-db.com/exploits/28709/exploit.html 코드

http://blog.naver.com/popqser2/220331825462 파일 업로드 취약점 우회 기법 및 방어 기법

http://blog.naver.com/dorose2000/220287844883 파일 업로드 취약점 방어 기법 

매거진의 이전글 모의해킹이란 무엇인가-모의해커와 범죄자의 차이
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari