Open Source/Kali Linux

[Web Vulnerability Scanners] W3AF On Kail Linux - (4. W3AF GUI)

DarkSoul.Story 2013. 8. 22. 12:36
반응형




[./w3af_gui]를 입력하면, 아래와 같이 W3AF 로고 출력 및 누락된 업데이트가 존재하는지 확인 작업을 진행한다.



업데이트 확인은 시간이 조금 걸리니 여유를 가지고 기다려보기 바란다. 업데이트 확인이 끝나면 아래와 같이 메인화면이 나타난다.



운영체제 패키지 및 모듈 설치 과정을 W3AF 콘솔에서 언급한것 같이 모두 진행 하였어도 W3AF GUI를 실행 시켰을 때 아래와 같은 에러 메시지를 출력해 주는 경우가 존재한다.



위 내용은 pip를 사용하여 누락 된 운영체제 패키지와 나머지 모듈을 설치하라는 내용으로, 친절하게 설치 방법까지 출력해준다. [sudo ~ phply]까지 복사하여, 그대로 붙여 넣기하여 사용한다.


   

누락된 내용을 추가 설치한 후  W3AF GUI를 실행 시키면, 정상적으로 사용이 가능하다. 이제부터 W3AF GUI를 천천히 살펴보도록 하자.


가장 먼저 살펴 볼 부분은 [Profiles]이다. 프로파일(Profile)은 사용자가 특정한 시나리오를 가지고, 시나리오에 알맞게 플러그인을 미리 정의할 수 있다. 기본적으로 W3AF에서 아래와 같이 자체적으로 프로파일을 제공하고 있으며, W3AF에서 제공하는 프로파일을 이용해서 취약점 점검을 진행 할 수 있다. 


W3AF에서 자체 제공하는 프로파일에 대해서 간단하게 집고 넘어가자.


① empty_profile

empty_profile은 말 그대로 플러그인이 선택되어 있지 않은 상태를 프로파일로 만들어 둔 것이다.


② OWASP_TOP10

OWASP_TOP10 프로파일은 취약점 점검 대상 웹 어플리케이션에 대해 OWASP에서 정의한 가장 일반적인 취약점을 검사할 수 있도록 플러그인을 정의해 두었다.


③ aduit_high_risk

aduit_high_risk 프로파일은 취약점 점검 대상 웹 어플리케이션에 대해 OS 명령어 사용과 같이 매우 위험한 취약점을 점검할 수 있도록 플러그인을 정의해 두었다. 해당 취약점은 향후 웹 어플리케이션을 완전히 손상시킬 수 있다.


④ bruteforce

bruteforce 프로파일은 점검 대상 웹 어플리케이션에 대해 무차별 대입 공격 (bruteforce attack)을 수행할 때 사용 할 수 있도록 무차별 대입 공격 (bruterforce attack)과 관련된 플러그인을 정의해 두었다.


⑤ fast_scan

fast_scan 프로파일은 취약점 점검 대상 웹 어플리케이션에 대해 빠르게 스캔하여, 필요 정보를 빠르게 획득할 수 있도록 플러그인을 정의해 두었다. audit 플러그인에서는 sqli (SQL Injection)과 xss이, crawl 플러그인에서는 web_spider, infrastructure 플러그인에서는 finger_bing / finger_google / finger_pks가 활성화 되어 있다.


⑥ full_audit

full_audit 프로파일은 취약점 점검 대상 웹 어플리케이션에 대해 전체 검사를 하여, 보다 많은 정보를 획득할 수 있도록 플러그인을 정의해 두었다. fast_scan 프로파일과 다른점은 audit / bruteforce / grep / infrastructure플러그인은 거의 모두 활성화 되어 있어 있다. crawl 플러그인에서는 fast_scan과 동일하게 web_spider만 활성화 되어 있다.


⑦ full_audit_spider_man

full_audit_spider_man 프로파일은 취약점 점검 대상 웹 어플리케이션에 대해 가능한 많은 정보를 획득하도록 플러그인을 정의해 두었다. full_audit_spider_man 프로파일은 full_audit 프로파일과 유사하게 플러그인들의 정의해 두고 있으나, crawl 플러그인에서 web_spider대신에 spider_man이 활성화 되어 있다. spider_man 플러그인은 web_spider 플러그인과 다른점은 수동으로 점검을 할 수 있다는 것이다.


⑧ sitemap

sitemap 프로파일은 취약점 점검 대상 웹 어플리케이션의 전체 구성도를 만들수 있도록 플러그인을 정의해 두었다. 


⑨ web_infrastructure

web_infrastructure 프로파일은 취약점 점검 대상 웹 어플리케이션의 Fingerprint를 전문적으로 진행할 수 있도록 플러그인을 정의해 두었다.


W3AF가 기본적으로 제공하는 프로파일의 경우 미리 정의된 플러그인들이 사용자가 점검하려는 대상의 환경과 100%동일 적용된다고 볼 수 없다. 점검 대상 마다 웹 플랫폼, 운영 서버, 환경 등이 모두 다르기 때문이다. 또한 웹 취약점 점검은 딱 한번하고 끝나는것이 아니라 정기적/비정기적으로 진행된다. 그렇기 때문에 사용자가 환경에 맞게 프로파일을 새로 생성하여 플러그인들을 정의해 두고 필요할 때 마다 사용하는 것이 좋다.


사용자 정의 프로파일을 생성해 보자. 메뉴에서 [Profiles] - [New]를 클릭한다.[New]를 클릭하면 새로운 프로파일의 이름과 설명을 기입하는 팝업창이 나타나며, 적절하게 내용을 기입해 주고 오른쪽 하단의 [New]를 클릭한다.



[New]를 클릭하게 되면, [Profiles]란에 방금 생성한 프로파일이 생성되어 있는것이 보일것 이다. 새로 생성한 프로파일은 플러그인이 활성화 되어 있지않아 바로 사용할 수 없다. 생성한 프로파일을 클릭해서 사용자가 원하는 시나리오나 환경에 맞게 플러그인을 클릭하여, 활성화해준다. 플러그인을 클릭하면 오른쪽에 해당 플러그인이 어떤 역할을 하는 플러그인인지 친절하게 설명도 보여준다.



원하는 플러그인을 모두 선택하였다면, 다시 메뉴에서 [Profiles] - [Save]를 클릭하여 설정한 내용을 저장한다.



만약 플러그인 설정을 저장하지 않고, 다른 프로파일이나 메뉴로 이동할 경우 아래와 같이 경고 메시지를 띄워준다.



프로파일 생성을 마쳤으면, 점검 대상 URL을 입력하고 [Start]를 클릭한다. W3AF는 사용자가 입력한 URL에 대해 아래와 같이 스캔을 시작한다.




취약점 점검을 진행 하면서 발생하는 모든 내용들은 [Log] 탭에서 확인 할 수 있으며 보여지는 내용은 색으로 표시하여 알아보기 쉽게 구분하고 있다.


- 빨강색 : 설정한 플러그인에 의해 취약점이 발견된 내용

- 파랑색 : 일반적인 정보

- 갈   색 : 에러 메시지  


발견된 취약점이 어떤 상황에서 어떻게 점검이 진행되었는지 알고자 한다면, [Results] 탭을 클릭한다. [Results] 탭을 살펴보면 좌측에 취약점 점검시 발견된 취약점 및 정보들이 나열되어 있다. 나열된 취약점 이름을 클릭하면 오른쪽에 취약점에대한 설명과 취약점을 식별할 때 사용한 요청, 그에 대한 응답을 볼 수 있다.



- 대상 웹 어플리케이션 구조 파악


URL의 구조를 파악하는것이 웹 취약점 점검에 가장 기본이 아닐까 생각한다. W3AF에서 웹 어플리케이션의 구조확인은 Crawl 플러그인을 이용한다. Crawl 플러그인에는 여러 하위 플러그인들이 존재하는데, 가장 유명한 것이 web_spider와 spider_man이다. web_spider는 주어진 URL을 사용하여 요청을 하고 응답에서 링크와 폼을 추출한다. 하지만 대부분의 웹 크롤러 (Web Crawler)들은 자바스크립트를 완전히 무시하고, 링크나 폼과 같은 정적인 정보만을 찾는다. 그 이유는 자바스크립트 코드를 보고, 어떠한 행동을 해야 하는지 이해를 못하기 때문이다. 

플래쉬나 자바스크립트를 사용하는 사이트의 웹 어플리케이션 구조를 파악할 때는 spider_man이 매우 유용하게 사용된다. spider_man은 프록시(Proxy)를 이용하여 W3AF 사용자가 직접 클릭하여 탐색한다. 사용자가 탐색한 결과를 기반으로 웹 어플리케이션의 구조를 파악한다. spider_man의 또 다른 특징은 쿠키 (Cookie)를 저장하고 재 사용이 가능하다. 


여기서는 web_spider를 이용하여 웹 어플리케이션 구조를 파악하는것에 대해 알아본다. 사용자가 프로파일을 새로 생성하거나 empty_profile에서 crawl 플러그인의 web_spider를 선택 한다. 


그림 추가 예정


대상 URL을 입력하고 [Start]를 클릭하면 web_spider가 새로운 URL을 식별하는 과정을 [Log] 탭에서 확인 할 수있다.


그림 추가 예정


스캔이 진행 되는 동안 [Result] 탭의 URL에서 웹 어플리케이션의 구조를 정의하고 아래 그림과 같이 그래픽다이어그램을 만든다.


그림 추가 예정 


- Exploit 공격


W3AF에서는 발견된 취약점을 이용하여 취약점 공격이 가능하다. W3AF는 기본적으로 취약점 공격을 손쉽게 할 수 있도록 Exploit 플러그인을 지원한다. 지원하는 플러그인은 [Exploit] 탭을 클릭하면, 왼쪽에 플러그인 목록이 나열되어 있다. 지금부터 취약점 공격을 이용하여, 대상 시스템의 Shell을 얻는 방법에 대해서 알아보자.


취약점이 발견되면, [Exploit] 탭 Vulnerabilities 부분에서 취약점을 확인 할 수 있다. W3AF에서 지원하는 Exploit 플러그인을 클릭하다보면 Vulnerabilities 부분의 취약점명이 진하게 바뀌는것을 볼 수 있다. 진하게 바뀐다는것은 취약점이 해당 Exploit 플러그인을 사용하여 공격할 수 있다는 것을 나타낸다. 예를 들면 아래 그림과 같은 상황이라면, OS_commanding Exploit 플러그인을 사용하여 발견된 OS commanding 취약점을 공격할 수 있다는 의미이다.


 

취약점 공격은 공격 가능한 Exploit 플러그인에서 마우스 오른쪽을 클릭한 후 [Exploit ALL vulns]를 클릭한다. 



[Exploit ALL vulns]클릭 후 아래와 같이 성공적으로 공격이 이루어졌다면 대상 시스템의 Shell을 획득한 것이다. 대상 시스템에서 Shell을 획득하면 오른쪽에 있는 Shells 부분에 Shell 리스트를 볼 수 있다. 참고로 모든 취약점에 대해서 Shell을 획득할 수 있는 것은 아님을 기억하기 바란다.



Shell 리스트에 있는 획득한 Shell을 더블클릭하면 아래와 같이 대상 시스템과 세션 (Session)이 연결된다.



연결된 세션에서 help를 입력하면 사용가능한 Command 리스트들이 나열된다.



나열된 Command 중 현재 세션에서 사용가능한 Payload의 목록은 [lsp]를 입력하면 확인 할 수 있다. 저자는  Payload들 중에서 간단하게 대상 시스템의 CPU종류와 MySql 설정 정보를 확인하였다.  Payload를 사용하는 방법은 [ Payload < Payload명> ]을 입력한다.




참고


모든 Exploit 플러그인은 수정이 가능하다. Exploit 플러그인 이름을 마우스 오른쪽  클릭 후 [Edit plugin..]을 클릭한다.

 


[Edit plugin..]를 클릭하면, 아래 그림과 같이 플러그인을 수정할 수 있게 별도의 팝업창이 나타나며, 플러그인은 파이썬으로 작성되어 있다.



여기서 언급한 OS_commanding Exploit 플러그인이외에도 7가지의 Exploit 플러그인이 존재한다. OS_commanding Exploit 플러그인이외에 다른 Exploit도 테스트해 보기 바란다.





반응형