Basic Web Hacking Envrionment

· omacs's blog

#background

# Contents

  1. Introduction
  2. Testing Environment
    1. Apache & DVWA installation via Docker
    2. Burp Suite installation and Firefox proxy settings
  3. References

# Introduction

본 글은 버그잡는해커님이 올리신 영상을 기반으로 하며, 웹 해킹 실습 환경 구축 방법을 다룬다[1].

웹 해킹을 실습하기 위해서는 (적어도 한국에서는, 일반적으로 정보통신망법에 의해 실제 구동 중인 사이트에서 실습하는 것이 법적 문제를 동반하므로) 실습 환경이 필요하다. 여기서는 Damn Vulnerable Web Application (DVWA) [4]를 Docker [5]에서 구동하는 방식으로 환경을 구성할 것이다. 다만, docker는 설치되어 있다고 가정하고, DVWA를 설치하고 설정하는 과정을 기술할 것이다. 만약 docker가 설치되어 있지 않다면 Seongkeun님의 관련 게시물을 참고하라. 또한, 여기서 기술하는 과정은 Ubuntu 22.04 64-bit [6]를 기준으로 한다[2, 3].

비록 버그잡는해커님의 영상에서는 XAMPP [7]와 DVWA를 Kali Linux [8]에 docker없이 진행하지만, 여기서는 가능한 환경적 차이로 인한 오류를 피하기 위해 docker에 구동하는 방식으로 진행한다. 다만, 반드시 ubuntu를 써야 하는 것은 아니다.

# Testing Environment

# Apache & DVWA installation via Docker

opsxcq는 DVWA를 docker container에서 구동하기 위한 docker file을 작성하였고, 이를 docker hub에 공개하였다. 그리고 다음과 같이 구동 방법을 제시하였으며,

1$ docker run --rm -it -p 80:80 vulnerables/web-dvwa

database의 아이디와 비밀번호를 제공하였다[9]:

Username: admin
Password: password

상기의 구동 명령어를 실행하면 DVWA가 실행되고, 웹 브라우저를 실행해서 주소창에 localhost를 입력하면 DVWA의 로그인 화면이 표시된다. 그럼 상기의 아이디와 비밀번호를 입력하면 된다. 그런데 database 설정을 살펴보면 다음 두 가지가 안되었음을 알 수 있다:

PHP allow_url_include: Disabled --- (1)
reCAPTCHA key: Missing --- (2)

상기의 두 가지를 설정하기 위해서는 docker 내부에 있는 파일을 수정해야 한다. 이는 docker cp 명령어를 통해서 docker container로부터 파일을 가져오고, 보내는 방식으로 할 수 있다. 먼저 (1)은 다음과 같이 /etc/php/7.0/apache2/php.ini 파일에서 allow_url_include = Off로 되어 있는 것을 On으로 수정하여 설정할 수 있다[11].

1$ sudo docker cp [CONTAINER_ID]:/etc/php/7.0/apache2/php.ini .
;; /etc/php/7.0/apache2/php.ini

...
allow_url_include = On
...
1$ sudo docker cp php.ini [CONTAINER_ID]:/etc/php/7.0/apache2/php.ini
2$ docker exec -it [CONTAINER_ID] bash
3(container)$ service apache2 restart

그리고 (2)는 (1)과 같이 docker cp 명령어를 사용하되, /var/www/html/config/config.inc.php 파일의 $_DVWA[ 'recaptcha_public_key' ]와 $_DVWA[ 'recaptcha_private_key' ]를 수정해야 한다. 이때 수정할 값은 구글의 recaptcha 설정 사이트 [10]에서 얻을 수 있다. 이 사이트에 접속하여 다음과 같이 설정한 후 최하단의 제출 또는 submit을 클릭하면 reCAPTCHA 키가 생성되며 사이트 키를 public key로, 비밀 키를 private key로 수정하면 된다[11].

reCAPTCHA type: v2
Domains: dvwa
Owners: localhost

이제 모든 설정을 마쳤으므로 다시 DVWA에 접속 후 최하단의 Create / Reset Database를 클릭하고 (잠시 후에 로그아웃되므로) 로그인하면 환경 구성이 완료된다.

지금까지 구성한 실습 환경을 그림으로 나타내면 다음과 같다:

+------------[Docker Container]------------+
|        +-------------[  DVWA   ]         |
|        |             [ Apache2 ] <--------- [ Web Browser ] <-- User
|        V                                 |
|   [ MySQL ]                              |
+------------------------------------------+

# Burp Suite installation and Firefox proxy settings

웹 해킹을 실습할 때는 (client가 server에게 전송하는) 요청을 중간에 변조해야 하는 상황이 발생한다. 따라서 HTTP proxy 기능을 제공하는 Burp Suite Community Edition [12]을 설치할 것이며, ubuntu에 설치한다.

먼저 Burp Suite 사이트에서 Community Edition으로 제공되는 파일을 다운받은 후에 다음 명령어를 입력하면 설치가 진행되고, 기본값대로 설치하면 된다.

1$ chmod +x ./[Downloaded burp suit community edition file]
2$ ./[Downloaded burp suit community edition file]

이렇게 설치가 완료되면 ubuntu에서 프로그램을 검색하여 찾을 수 있고, 검색된 것을 실행시키면 된다.

이제 웹 브라우저에 proxy 관련 설정을 해주어야 한다. 이는 웹 브라우저마다 다를 수 있으며, 여기서는 ubuntu의 기본 브라우저인 Firefox [13]를 기준으로 설명하겠다.

Firefox 주소창에 about:preferences를 입력하면 설정 화면으로 이동할 수 있다. 그럼 General panel의 하위 항목들이 표시되는데, 이 중 Network Settings를 선택하면 proxy 설정을 할 수 있다. 이때 proxy의 IP, port를 입력해야 하므로 상기에 설치했던 Burp suite가 구동되는 IP와 port를 확인하여 입력해주면 된다[14].

지금까지의 구성을 그림으로 나타내면 다음과 같다:

+------------[Docker Container]------------+
|        +-------------[  DVWA   ]         |
|        |             [ Apache2 ] <----------[Burp Suite]<--[Web Browser]
|        V                                 |                      ^
|   [ MySQL ]                              |                      |
+------------------------------------------+                    [User]

그런데 Burp suite에서 localhost로 전송되는 패킷을 잡아내지 못하는 경우가 있다. 이 경우에는 주소창에 auto:config를 입력한 후에 network.proxy.allow_hijacking_localhost를 검색하여 이 값을 true로 변경하면 된다[15].

# References

  1. 버그잡는해커, "화이트해커를 위한 8가지 웹 해킹의 기술 (4시간 전체)", 2022. [Online]. Available: https://www.youtube.com/watch?v=ovFU-R4rJvQ, [Accessed Jan. 08, 2024].
  2. "정보통신망 이용촉진 및 정보보호 등에 관한 법률", 2023. [Online]. Available: https://www.law.go.kr/lsSc.do?section=&menuId=1&subMenuId=15&tabMenuId=81&eventGubun=060101&query=%EC%A0%95%EB%B3%B4%ED%86%B5%EC%8B%A0%EB%A7%9D%EB%B2%95#undefined, [Accessed Jan. 08, 2024].
  3. Seongkeun, "[Docker] Ubuntu 22.04 Docker 설치," 2023. [Online]. Available: https://velog.io/@osk3856/Docker-Ubuntu-22.04-Docker-Installation, [Accessed Jan. 08, 2024].
  4. digininja, et al., "DAMN VULNERABLE WEB APPLICATION," 2023. [Online]. Available: https://github.com/digininja/DVWA, [Accessed Jan. 08, 2024].
  5. "Docker: Accelerated Container Application Development," Docker Inc.. [Online]. Available: https://www.docker.com/, [Accessed Jan. 08, 2024].
  6. "Ubuntu 22.04.3 LTS (Jammy Jellyfish)," 2022. [Online]. Available: https://releases.ubuntu.com/jammy/, [Accessed Jan. 08, 2024].
  7. "XAMPP Installers and Downloads for Apache Friends," 2023. [Online]. Available: https://www.apachefriends.org/, [Accessed Jan. 08, 2024].
  8. "Kali Linux | Penetration Testing and Ethical Hacking Linux ...," 2023. [Online]. Available: https://www.kali.org/, [Accessed Jan. 08, 2024].
  9. opsxcq, "Damn Vulnerable Web Application Docker container," 2017. [Online]. Available: https://github.com/opsxcq/docker-vulnerable-dvwa, [Accessed Jan. 09, 2024].
  10. "Google reCAPTCHA," [Online]. Available: https://www.google.com/recaptcha/admin, [Accessed Jan. 09, 2024].
  11. Kamil Gierach-Pacanek, "Run Damn Vulnerable Web Application (DVWA) from a Docker container Setup and configuration," 2021. [Online]. Available: https://blog.cyberethical.me/run-dvwa-from-docker, [Accessed Jan. 08, 2024].
  12. "Burp Suite Community Edition," PortSwigger, 2023. [Online]. Available: https://portswigger.net/burp/communitydownload, [Accessed Jan. 11, 2024].
  13. "Get the browser that protects what's important," Mozilla Foundation, 2024. [Online]. Available: https://www.mozilla.org/en-US/firefox/new/, [Accessed Jan. 11, 2024].
  14. "Firefox options, preferences and settings," Mozilla Foundation. [Online]. Available: https://support.mozilla.org/en-US/kb/firefox-options-preferences-and-settings, [Accessed Jan. 11, 2024].
  15. "Configuration Editor for Firefox," Mozilla Foundation. [Online]. Available: https://support.mozilla.org/en-US/kb/about-config-editor-firefox, [Accessed Jan. 11, 2024].