#OWASP TOP 10, #WEB VUL
보안을 공부하다 보면 웹 취약점을 통한 공격에 대해서 한번쯤은 부딫히게 된다. 실제로 어떤 보안의 영역을 공부하더라도 웹 취약점은 한번은 알고 가야 하고 이런 웹 취약점을 통해서 실제 해킹이 어떠한 방법으로 이루어 지는지 알수 있는 가장 좋은 방법이다.
최근에는 웹 프레임 워크의 개선으로 인해 이전 대비 웹 취약점이 줄었지만 그래도 버그나 개발자의 실수 등으로 인해서 가장 많은 영역을 차지하는 해킹일 것이다.
이러한 웹 취약점을 학습하면서 실제 서버가 어떻게 침해 당하는지를 알지 못한 상태로 책으로만 공부한다면 차후 실무에 적용할때 제대로 전체적인 플로우를 알지 못하고 업무를 하는 경우가 종종 발생한다. 실제로 웹 취약점 점검 업무를 했던 모 회사 컨설턴트 분과 이야기를 나눠 보았던 적이 있는데 취업을 하면서 취약점 점검 업무를 배우고 업무만을 위해서 하다 보니 업무에서 요구하는 수준만을 수행한 탓인지 전반적인 웹 취약점에 대한 부분이 부족함이 느껴졌다.
추가적으로 학습을 위해서 실제 서버를 해킹하는것은 범죄이므로 최근 나와 있는 각종 취약점을 테스트 할때에는 테스트 환경을 직접 구축하는것이 최선이다. 다만 다양한 언어와 다양한 플렛폼의 모든 취약점에 대한 테스트를 본인이 직접 만들어서 테스트 하는건 할 필요가 없는 업무라고 생각된다. 그러므로 이러한 취약점을 테스트 할때에는 인터넷 상에서 VM이나 Docker 기반으로 제공되는 각종 가상 환경을 적극 활용 하면 좋을것이다.
본 글은 이러한 취약점 테스트 환경을 구축하는데 도움을 주고자 작성되었다.
첫번째로 소개하고자 하는것은 DVWA 이다. 말 그대로 해석하면 "망할 취약한 웹 어플리케이션" 정도인 웹 취약점을 제공하는 VM과 docker 이미지이다.
Docker 이미지를 설치하는 경우 아래의 명령어만 내리면 모든 설치가 완료되고 80 포트를 통해서 취약한 DVWA에 접속 할수 있게 된다. 그 이후에 해줄것은 간단하게 Database를 재생성 한다는 명령어만으로 모든 설정은 끝나게 된다.
#docker run --rm -it -p 8080:80 vulnerables/web-dvwa
도커가 제대로 동작했다면 http://localhost:8080 를 통해서 DVWA에 접속할 수 있고 최초 계정과 패스워드를 물어보는데 여기서 admin / password를 입력 하게 되면 인증을 통과 할수 있다.
로그인 한 이후에 DB 를 생성하는 등의 단 한번의 버튼 클릭이후 다시 접속하게 되면 아래와 같은 화면이 노출된다.
간단하게 SQL Injection 메뉴를 눌러서 아래의 명령어를 내려 보자
%' and 1=0 union select null, @@VERSION #
172.17.0.1 - - [08/Sep/2019:13:05:07 +0000] "GET /vulnerabilities/sqli/?id=%25%27+and+1%3D0+union+select+null%2C+%40%40VERSION+%23&Submit=Submit HTTP/1.1" 200 1845 "http://localhost/vulnerabilities/sqli/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
select null, @@VERSION 명령어가 실행되어 결과로 현재의 DB 버전이 노출된다.
% 보안 등급의 설정
이 패키지의 가장 주의할 만한 점중 하나인 보안 레벨을 4가지 중에서 선택할수 있도록 해준다. Low 부터 Impossible까지 설정할 수 있으며 각 단계별로 UI나 취약점이 약간씩 달라진다.
처음엔 Low로 시작해서 마지막까지 해보면 좋을 거라고 생각된다.
% 다운로드 위치
https://github.com/ethicalhack3r/DVWA
https://github.com/opsxcq/docker-vulnerable-dvwa
Docker로 구성 가능한 취약점 테스트 환경의 소스가 모여 있는 곳은 아래와 같다. 다만 최근에는 업데이트가 활발하지는 않지만 Docker로 구성 가능한 것들이 모여 있으므로 사용하기엔 편리하다.
https://github.com/MyKings/docker-vulnerability-environment
혹시라도 웹 취약점에 관련된 업무를 한다면 내가 매일 보고 있는 공격이 어떤 방식으로 이루어지고 어떤게 위험한지 정도는 알고 있어야 한다. 위에서 소개한 도커 이외에도 다양한 VM 환경이 제공되고 있으므로 이러한 환경을 이용하여 실습에 이용하면 좋다고 생각된다.
% 본 글은 특정 단체 혹은 기업의 의사를 대변하지 않는 순수한 개인의 의견입니다.