정보보안전문가를 꿈꾸는 학생이나 직장인들이 가장 관심있는 분야 중 하나가 바로 웹해킹이다. 인터넷에 널리고 널린 것이 웹사이트이고 그 웹사이트를 뚫고 침투하는 것이 멋있어 보이기 때문이 아닐까 한다. 그런데 분명히 말하지만 그런 행위는 그냥  "도둑질"과 같다.  아니 그런 행위를 하는 사람은 그냥 도둑놈이고 절도범이며 무단침입 현행범이다. 한마디로 범법자다.


하지만 정보보안전문가라면 웹해킹도 분명히 배워야할 분야 중 하나다. 경찰이 도둑놈을 잡기위해서 도둑놈들의 습성과 기술을 이해하고 있어야 하듯 웹서버의 해킹을 방어하고 해커를 잡기 위해서는 그 기술을 이해하고 있어야 하기 때문이다.


분명 "이해"라고 했지 "할 줄 알아야"라고 하지 않았다. 경찰이 도둑을 잡기 위해 도둑질의 모든 기술을 "할 줄"알아야 하는 것은 아니다. "이해"하고 있으면 된다. 정보보안전문가도 마찬가지다. 해킹의 기법들을 "이해"하고 있으면 되지 반드시 "할 줄 알아야"하는 것은 아니다. 물론 일부 "할 줄 알아야"하는 사람도 필요하다. 모의해킹을 할 때 필요하다. 하지만 모든 정보보안전문가가 해킹을 "할 줄 알아야"하는 것은 아니다. 



그렇다면 "이해"하기 위해서는 어떻게 해야할까? 당연히 공부해야 한다. 그리고 초보적인 수준의 웹해킹을 실제로 해보면서 머리로만 이해하는 것이 아니라 실질적으로도 경험해 보는 것도 중요하다. 그래야 머리속에 더 오래..더 확실하게 담아둘 수 있다.


그렇기 때문에 웹해킹을 공부하기 위해서는 실습환경이 필요하다. 인터넷에 널려 있는 것이 웹사이트라 해서 아무 웹사이트에다 해킹 실습을 해서는 안된다. 분명하게 말하지만 그것은 범법행위다. 만약 해당 웹사이트 보안담당자에게 적발되어 고소당한다면 벌금형 혹은 실형에 처해질 가능성도 다분하다. 절대 해서는 안되는 행위다.


안전하게 웹 해킹을 공부할 수 있는 방법이 있다.  직접 웹해킹을 공부할 수 있도록 실습환경을 구축하는 것이다. 몇몇 실습환경 구축에 사용되는 웹소스가 제공되는데 DVWA와 bWAPP라는 솔루션이다. (그냥 게시판 같은 웹 소스다.) 이 두 솔루션은 Apache 웹서버와 MySQL 그리고 PHP 환경에서 동작하는 PHP 소스인데 DB접속정보만 수정하면 DB생성 등 셋업도 자동으로 해주는 것은 물론 취약점에 따라 공격해볼 수 있는 웹페이지와 관련 취약점에 대한 공부도 할 수 있는 링크까지 제공한다. 또한 취약점의 난이도까지 조절이 가능하다.


먼저 DVWA와 bWAPP를 설치하기 위해서는 웹서버가 필요하다. 나는 우분투리눅스 18.04에 Apache + MySQL + PHP를 최신버전으로 설치했다.


아래는 우분투 리눅스에 설치된 Apache2 초기화면이다. 이 환경의 구축을 위해 집에 조립PC가 있고 VSphere 6.7을 설치했다. 시놀로지 NAS를 구입하면 사용할 수 있는 무료DDNS를 이용해 도메인주소를 할당받았고 LG유플러스의 기가랜 공유기에서 제공하는 NAT 기능을 이용해 VSphere에서 구동중인 우분투 리눅스에 접속할 수 있도록 환경을 구축했다.



아파치를 설치하고 나면 DVWA와 bWAPP 홈페이지에서 각각 소스를 다운로드 받는다. 소스는 Zip 파일로 묶여 압축되어 있다.


DVWA 다운로드 URL : http://www.dvwa.co.uk/


bWAPP 홈페이지 : http://www.itsecgames.com/

bWAPP 다운로드 URL (소스포지) : https://sourceforge.net/projects/bwapp/files/bWAPP/


다운로드 받은 zip 파일은 Apache2 웹서버의 DocumentRoot 경로에 각각 DVWA와 bWAPP 디렉토리를 만들고 압축을 풀어준다. 그리고 적절하게 파일 퍼미션을 맞춰준 뒤 MySQL DB접속 정보를 설정해준다. 


DB접속정보는 bWAPP의 경우 settings.php 파일에 설정하며 설정한 뒤 http:// ~~~ /bWAPP/login.php 를 입력해 접속하고 절차에 따라 설정하면 설치가 완료된다. 이후 접속은 http:// ~~~/bWAPP 로 접속하면 된다.


DVWA의 경우  ~/DVWA/config/config.inc.php.dist 를 config.inc.php로 변경하고 이 파일에서 DB접속정보를 설정하면 된다. 그리고 나서 http:// ~~~/DVWA/login.php 를 통해 접속 한 뒤 순서에 따라 설정하면 되는데 필요한 설정이 있을 경우 수정하고 다시 시도할 것을 요구한다. 


모두 설치가 완료되면 각각 로그인을 해야한다. DVAW의 경우 초기 접속 화면은 다음과 같다. 



ID와 비밀번호는 각각 admin / password 다. 접속 후 변경할 수 있다.


접속에 성공하면 아래 화면이 보인다. 왼쪽에 보면 각각 취약점 별로 실습할 수 있는 메뉴가 있다.



CSRF 취약점을 선택하면 해당 취약점에 대한 공격을 실습할 수 있는 페이지가 보여지고 아래쪽에 관련 취약점에 대한 설명을 찾아볼 수 있는 URL 링크를 제공한다.



더 아래쪽에 보면 해당 취약점이 존재할 때의 서버사이트스크립트(여기서는 PHP) 소스를 보여준다.



다음은 bWAPP의 초기 접속 화면이다. 조금 더 귀엽다.????



DVWA는 로그인 한 뒤 취약점의 난이도를 설정할 수 있는데 bWAPP는 로그인 시에 취약점의 난이도를 설정할 수 있게 해준다.

초기 로그인 ID와 비밀번호는 화면에 있듯.. bee / bug 다. 로그인 한 뒤 수정할 수 있다.



로그인하고 나면 취약점의 목록에서 실습할 취약점을 선택하고 Hack 버튼을 누르면 해당 취약점이 존재하는 웹페이지를 보여준다.



HTML 인젝션을 선택하고 Hack 버튼을 누른 상태다. 


이제 열심히 실습하고 모의해킹 전문가가 되어보자~~~ ^^