본문 바로가기

프로젝트/DVWA 실습

DVWA 실습 #1 - 칼리 리눅스 설치, DVWA 1.9 설치

화이트 해커를 위한 웹 해킹의 기술 - YES24을 읽으면서 DVWA 실습을 위해 칼리 리눅스에 XAMPP를 설치하여 DVWA 1.9를 구축하였다.

칼리 리눅스 2020 설치

2020 Kali Linux

우선 칼리 리눅스를 Kali Linux Custom Image Downloads에서 VMWare 이미지로 설치한 후 기본적인 업데이트 및 한글 설정을 수행하였다.

# 기본적인 업그레이드
sudo apt update
sudo apt upgrade

# 한글 입력기 및 폰트 설치
sudo apt install fcitx-lib*
sudo apt install fcitx-hangul
sudo apt install fonts-nanum

DVWA 설치

DVWA는 최신 버전인 1.9 버전을 DVWA - Damn Vulnerable Web Application에서 다운로드 받을 수 있다. 변경 기록에는 1.10 버전이 릴리즈 예정되어 있다곤 하지만 2015년부터 아직까지 1.9 버전으로만 릴리즈하고 있다.

 

DVWA - Damn Vulnerable Web Application

 

www.dvwa.co.uk

DVWA는 php5에서 동작하기 때문에 최신버전의 php7을 설치하면 동작하지 않는다고 한다. 그래서 어차피 칼리 리눅스에는 기본적으로 apache2가 설치되어 있으나 추가적으로 php를 설치하거나 lamp 스택을 설치하는 것이 좋다. 만약 XAMPP를 활용한다면 XAMPP - Browse /XAMPP Linux/5.6.40 at SourceForge.net에서 php5 버전 중 그나마 최신 버전으로 설치할 수 있다.

 

XAMPP - Browse /XAMPP Linux/5.6.40 at SourceForge.net

×

sourceforge.net

XAMPP를 설치하면 /opt/lampp에 설치되며 여기서 manager-linux-x64.run을 실행하여 매니저 콘솔을 켤 수 있다.

Apache와 PHP(Apache에 포함), MySQL 데이터베이스가 정상적으로 설치되어 실행을 기다리고 있는 모습을 볼 수 있다. 실제로 실행시켜서 localhost로 접속하여 대시보드에 접속할 수 있는지 확인한 후 이제 위에서 다운받은 DVWA를 압축 풀어서 /opt/lampp/htdocs에 넣으면 이제 폴더 이름을 디렉토리로 URL에 입력하여 접속할 수 있다.

지금은 기본적으로 있던 파일들을 다 지우고 dvwa만 남겼기 때문에 이 파일들밖에 보이지 않는다. 위처럼 htdocs 폴더 아래에 별도의 폴더를 만들어서 넣었다면 나중에 localhost에 접속할 때 아래처럼 디렉토리 리스팅으로 뜨게 된다.

이것이 불편하다면 dvwa 폴더 내의 파일들을 전부 꺼내서 htdocs 폴더에 직접 넣어줄 수 있다.

이후 DVWA에 몇가지 작업을 해줘야하는데 일단 접속해서 admin/password로 로그인한 후 왼쪽 메뉴에서 Setup / Reset DB 버튼을 눌러서 위처럼 DVWA가 잘 동작하고 있는지 확인해보자. 지금은 모든 설정이 완료되었기 때문에 전부 초록색 Yes가 나타나있지만 설치 초기에는 reCAPTCHA, allow_url_include, Writable folder, Writable file 등이 빨간 No로 나타나 있을 것이다. 환경에 따라 몇가지가 더 No가 되거나 Yes가 됐을 수 있지만 일단 위의 4가지에 대해서 다음과 같이 해결할 수 있다.

reCAPTCHA 옵션 설정

먼저 reCAPTCHA key의 경우 https://www.google.com/recaptcha/admin에서 reCAPTCHA v2(보안 문자), 로봇이 아닙니다(체크박스) 옵션으로 새로운 reCAPTCHA를 추가하여 얻은 공개키, 비밀키 두 개를 dvwa 하위 폴더 config에 있는 config.inc.php에 아래 사진처럼 넣어주면 된다. 이때 파일이 config.inc.php.dist처럼 되어있다면 config.inc.php로 이름을 변경해줘야 한다.

 

필수는 아니지만 데이터베이스 설정에서 다음처럼 비밀번호를 지우거나 바꿀 수 있다.

allow_url_include 옵션 설정

다음으로 allow_url_include는 lampp 내부의 /opt/lampp/php.ini 설정파일에서 다음과 같이 off를 on으로 바꿔준다.

Writable folder, Writable file 옵션 설정

Writable folder, Writable file의 경우는 리눅스의 read, write, execute 권한(줄여서 rwx) 문제로 이 중 write 권한이 해당 디렉토리나 파일에 주어지지 않아서 발생하는 문제다. 어차피 서버는 로컬호스트에 있기 때문에 보안 문제는 없을테니 모든 권한을 모든 유저에게 줘도 괜찮을 것이다. 그렇기 때문에 chmod 777 명령을 사용하여 write 권한을 줄 수 있다.

데이터베이스 재생성

모든 설정이 완료되었다면 아래의 Create / Reset Database 버튼을 눌러서 DVWA 전용 데이터베이스를 재생성하고 초기화한다. 여기까지 하면 초기 설정은 모두 끝났다. 테스트 용으로 DVWA Security 메뉴에서 Security Level을 Low로 설정하고 XSS(Stored)에 <script>alert(1)</script>처럼 기본적인 XSS를 시도해보자.

정상적으로 동작하는 것을 볼 수 있다.