[2024.08.05]
[DVWA]
01. 설치
# cd /var/www/html
# wget https://github.com/ethicalhack3r/DVWA/archive/master.zip
> 압축 해제
#unzip master.zip
> 링크
#ln -s DVWA-master dvwa
기존의 구 버전인 dvwa 취약점 페이지가 아닌
최신 버전의 dvwa로 실습을 진행하기 위해 필요한 것들을 다운로드한다
*번외로 다운로드 안 될 시 해당 파일 열어서 dnsnameserver 맞는지 확인하기
02. 관련 패키지 다운로드 및 설치
#apt-get -y install php-mysql
#apt-get -y install php
#apt-get -y install php-gd
#apt-get -y install mariadb-server
03. 환경 설정
#find / -name php.ini
/etc/php/8.2/apache2/php.ini
/etc/php/8.2/cli/php.ini
/var/www/html/DVWA-master/php.ini
/var/www/html/DVWA-master/php.ini
safe mode = on
display_errors = off <-- 추가
php.ini가 해당 경로들에 있는 것을 확인한다
그런 다음 해당 경로의 디렉터리로 들어가서 php.ini 파일을 열고
870번 라인의 allow_url_include = Off 라고 되어 있던 부분을 On으로 변경시키고 저장한다
위와 같이 apache2에 있는 php.ini 파일도 수정한다
870번 라인의 allow_url_include = Off 라고 되어 있던 부분을 On으로 변경시키고 저장한다
04. Mariadb 설정
> create database dvwa;
> create user 'dvwa'@'localhost' identified by '123456';
> grant all privileges on dvwa.* to 'dvwa'@'localhost';
> flush privileges;
mysql -p mysql 명령어를 통해 mariadb에 접속을 시도한다
mariadb 셸에서 databases 목록을 보지만 현재 아무것도 없는 상태다
그렇기 때문에 database dvwa를 생성한 후 user까지 생성하고
나머지는 위와 같이 명령어를 입력해 주고 실행한다
05. DVWA 환경 설정
> /var/www/html/dvwa/config/config.inc.php
$_DVWA[ 'db_server' ] = getenv('DB_SERVER') ?: '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = '123456';
$_DVWA[ 'db_port'] = '3306';
기존의 config.inc.php.dist는 존재하는 파일이기 때문에,
해당 파일을 php까지만 입력해서 복사한다
그런 다음 21번 라인에서 password 부분을 123456으로 수정시키고 저장한다
06. 디렉터리 권한 변경
> /var/www/html/dvwa/hackable]
#chown www-data uploads
chown 명령어를 통해 uploads 파일을 www-data로 권한을 변경시켜 준다
여기까지 마무리했다면 mariadb와 apache2를 활성화시키고,
마지막 마무리로 Kali linux의 IP 주소까지 한 번 확인해 주면 좋다
Kali Linux의 firefox로 Kali Linux의 IP 주소/dvwa/setup.php를 입력하면 해당 페이지로 접속이 가능하다
이 상태의 페이지에 맨 마지막 부분에서 Create라는 버튼을 누른다
해당 버튼을 누르게 되면 로그인 페이지가 나타나면서
로그인을 시도하면 이렇게 접근이 가능해진다
구 버전의 dvwa에서는 레벨이 총 세 가지로 low, medium, high로만 이루어져 있었지만,
반면에 최신 버전에는 세 가지에 추가로 Impossible이라는 레벨이 추가되어 있다
레벨을 low로 설정한 후 정상적으로 작동하는지 보기 위해 이전 실습에 이용했던 것을 실행시켰다
07. CAPTCHA 환경 설정
google.com/recaptcha/admin/create
CAPTCHA 실습을 진행하기 위해 차단되어 있는 것을 풀어야 하기 때문에,
Kali Linux의 내부 firefox나 외부의 브라우저를 통하여 구글에 접속을 시도했다
위의 url을 통하여 접속하게 되면 해당 화면이 나타난다
라벨을 dvwa로 입력하고, reCAPTCHA 유형을 테스트(v2), 로봇이 아닙니다 체크 박스 선택
도메인은 Kali Linux의 IP 주소를 입력한다
입력 후 약관에 동의하고 제출하기를 눌렀다면 해당 화면의 페이지로 넘어간다
이 상태로 놔두고 Kali Linux로 이동한다
해당 경로에서 config.inc.php 파일을 열어
왼쪽과 같이 비어 있던 27, 28번 라인에
각각 사이트 키와, 비밀 키를 복사하여 입력시킨 후 저장한다
여기까지 성공했다면 dvwa 페이지의 CAPTCHA의 오류가 풀리고
로봇이 아닙니다와 같은 창이 나타난다
[XSS(DOM)]
192.168.10.250/dvwa/vulnerabilities/xss_d/?default=English<script>alert('XSS')</script>
192.168.10.250/dvwa/vulnerabilities/xss_d/?default=English<script>alert('document.cookie')</script>
192.168.10.250/dvwa/vulnerabilities/xss_d/?default=English</select><img src=x onerror=alert('XSS')>
지금까지는 Reflected와 Stored로 실습을 진행했지만,
최신 버전의 dvwa에서는 DOM도 사용할 수 있게 됐다
DOM의 경우 url에서 직접 공격이 가능하다
그렇기 때문에 url 주소를 통해 공격을 시도할 수 있다
English 뒤에 바로 script 명령어를 실행하면 해당 화면이 나타난다
또한 명령어가 실행되면서 바뀌는 url을 zaproxy에서 Encode 하게 되면,
URL Decode 창을 통해 script 명령어인 것을 확인할 수 있다
연속으로 document.cookie도 실행해 봤다
정상적으로 진행되는 화면
img의 경우 실행하려고 했으나 진행되지 않는 상태였는데,
English 뒤에 </select>로 구문을 막고 시작하여 img 명령어도 성공하게 되었다
해당 화면의 소스를 확인해 보면 Select가 열려 있기 때문에,
select를 막고 뒤에 실행 구문을 입력하게 되면 성공하게 되는 원리라고 볼 수 있다
이번에는 마지막으로 medium 레벨로 연습을 진행했다
</select>를 하게 되면 다른 명령어도 잘 실행된다
버튼을 눌러 실행시키는 것도 성공하였고
드래그 시에 나타나게 하는 것도 성공시켰다
English 뒤에 스페이스 바로 한 칸 띄우고 나서 #을 입력하고
실행 구문을 입력하게 되는 방법도 정상적으로 실행이 된다
*반드시 스페이스로 한 칸 띄어야 됨
해당 소스를 확인하면서 되는 것과 안 되는 것의 차이를 꼼꼼히 살피는 것도,
하나의 공부 방법이자 이 웹 해킹을 알아 가는 방법인 것 같다
강의 소감
오늘은 웹 해킹 강의 종강을 3일 남겨 두고 최신 버전의 dvwa 실습을 시작했다
구 버전에서의 실습이 모두 끝났기 때문에 최신 버전도 진행한다고 하셨다
처음 보는 CAPTCHA의 환경 설정도 해 보고, XSS도 DOM으로 실습을 진행해 봤다
이런 실습을 진행하면서 강의 시간 외에도 해당 실습의 소스를 보고
소스를 익히는 방법을 공부해도 좋겠다고 생각했다
소스를 볼 줄 알게 되면 취약점을 보다 더 많이 찾아낼 수 있을 것 같다
그런 부분에 맞게 남는 시간에는 소스 코드를 읽으면서 취약점 분석을 시도해 봐야겠다