2015년 12월 22일 화요일

[Web Scanning Tool] W3AF

1. W3AF란?

w3af 로고









W3AF 는 웹 응용 프로그램의 공격 및 감사 프레임워크이다. W3AF 프로젝트의 목표는 모든 웹 어플리케이션의 취약점을 발견하고, 발견된 취약점이 악용되기 전에 웹 응용 프로그램을 보호할 수 있도록 하기 위해 만들어졌다. W3AF SQL 인젝션, 크로스 사이트 스크립팅, 추측 가능한 인증(Guessable credentials), 처리되지 않은 응용 프로그램 오류, PHP 설정 실수 같은 취약점을 식별한다.

1.1. W3AF ARCHITECTURE

W3AF 는 코어와 플러그인 두 개의 주요 부분으로 구분된다. 이는 핵심 프로세스를 조정하고 취약점을 찾으며, 취약점을 활용하는 플러그-인스에 의해 소모되는 특징을 제공한다. 또한플러그인들을 연결하고 서로 지식 기반을 사용하여 정보를 공유한다.

플러그인 유형에 따른 분류 :
  • Crawl
  • Audit
  • Grep
  • Auth
  • Output
  • Mangle
  • Evasion
  • Bruteforce

2. W3AF의 특징

특정 플러그인에 대한 정보를 알고 싶다면 help pluginName 형식을 커맨드에 입력하면 된다. 예를 들어 discovery 플러그인에 대하여 알고 싶다면, help discovery라고 입력한다. 또한 특정 플러그인에 대한 정보를 알고 싶다면, plugintype desc pluginname의 형식을 커맨드로 입력하면 된다. 예를 들어 discovery 타입 플러그인의 spiderMan 플러그인에 대한 정보가 알고 싶다면,  discovery desc spiderMan이라고 입력한다. 따라서 이 절에서는 몇 가지 플러그인에 대한 설명을 서술한다.

2.1. OUTPUT 플러그인

스캔 결과를 저장하기 위해 사용하는 플러그인으로, 우리가 출력하기 바라는 form을 결정하는데 도움을 준다.  

output 플러그인 사용












저장 포맷은 xml/text/csv/ console/emailReport 등을 지원한다. 이 포맷에 우리는 filename, verbosity 등 다양한 파라미터를 설정할 수 있다.

스캔 결과에 대해 자세한 리포트를 원할 경우 verbose 파라미터 값을 Ture로 설정해준다. [set verbose Ture]

2.2. GREP 플러그인

grep 플러그인은 요청과 응답 안에 있는 흥미로운 정보들을 찾아낼 때 사용한다. 타겟 웹 어플리케이션에 대해 모든 요청과 응답을 분석하여, 에러(Error), 쿠키(Cookies), 이메일(E-mail), 설명(contents)등의 유용한 정보를 찾을 때 사용한다. 그러나 grep 플러그인은 오직 요청과 응답을 분석하는 것만이 가능하기 때문에 discovery 플러그인이 함께 사용될 수 있게 하는 것이 중요하다

grep 플러그인 사용


2.3. BRUTEFORCE 플러그인

bruteforce 플러그인 사용

기본적인 HTTP 로그인/ 로그인 폼을 대상으로 무차별 대입 공격(Brueteforece Attack)을 진행한다.

※ 무차별대입에 사용되는 password 파일과 user 파일은 core/controllers/bruteforce에 각 password.txt / user.txt로 존재한다. 사용자가 해당 파일에 문자열을 추가하거나 별도의 패스워드파일과 유저파일을 가지고 있다면, [config]명령어를 사용하여 패스워드파일과 유저파일의 경로를 별도로 지정해 주면 된다.


2.4. AUDIT 플러그인


audit 플러그인 사용

















Discovery Plugin에 의해 생성된 내용을 활용하여대상이 되는 웹 서버와 웹 어플리케이션의 취약점을 찾아 낼 때 사용하는 플러그 인이다흔히 알고 있는 크로스사이트스크립트(XSS), SQL Injection, 파일업로드(FileUpload)공격버퍼오버플로우(Buff Over Flow)등이 이곳에 포함된다.

2.5. EVASION 플러그인


evasion 플러그인 사용



















해당 플러그인은 IPS(Intrusion Prevention System)의 탐지를 우회하기 위해 요청을 변경할 때 사용하는 플러그인이다예를들어 탐지를 피하기 위해 Hex포맷으로 URL을 무작위로 인코딩을 하기위해 rndHecEncode플러그인을 사용할 수 있다.

2.6. CRAWL 플러그인


crawl 플러그인 사용
















Crawl 플러그인은 크롤링, URL Fuzzer 등을 이용하여 사용자가 알고 있는 URL 이외에 더 많은 URL을 찾는데 도움을 주거나, 대상 서버 또는 WAS 서버가 피싱 사기에 사용되는지 확인하기 위해 phishtank.com 의 데이터베이스를 검색 하는 등에 사용하는 플러그인이다.

2.7. MANGLE 플러그인


mangle 플러그인 사용










사용자가 필요로 할 때 요청과 응답을 조작하기 위해 사용하는 플러그인 이다. Mangle Plugin에는 요청과 응답을 수정 하기 위해 사용하는 sed(Stream Editor)라는 비 대화모드(Non-Interactive)라인 단위 편집기만을 플러그인으로 존재한다.

2.8. AUTH 플러그인


auth 플러그인 사용









취약점 스캔을 하는 동안 로그인을 해야만 접근 가능한, 웹 어플리케이션을 검색 할 수 있다. W3AF가 로그인 폼을 만나게 되면 추가적인 정보를 탐지하기 위해 자동으로 로그인을 해야 할 필요가 생기는데, 이때 사용되는 플러그인이 auth Plugin이다. 사전에 미리 auth Plugin을 사용하여 자세한 로그인 정보를 설정해 두면, W3AF가 로그인 폼을 만나면 자동으로 설정된 내용을 토대로 로그인을 시도한다.

3.1 W3AF  커멘드

1) 콘솔 실행

w3af_console 실행




콘솔 실행 명령어를 입력하면, 몇 초 동안 w3af 콘솔이 동작하지 않는 것처럼 보일 수 있다. 하지만 눈에 보이지 않을 뿐 정상적으로 빌드를 하고 있다. w3af 콘솔이 빌드가 완료되면 위에서 보듯이 명령어를 입력할 수 있는 프롬프트 [w3af >>>] 가 생성된다.


2) help 명령을 통해 사용 가능 명령어를 확인

help 명령어 사용















우리는 w3af 콘솔에서 사용 가능한 명령어가 어떤 것이 있는지 알지 못한다. [help] 명령어을 이용하면 사용 가능한 명령어 리스트를 확인 할 수 있다. 참고로 [help] 명령어는 다른 명령어 들과 같이 사용이 가능 하다.

3) 공격 target 설정

target 플러그인 사용




웹 취약점 스캔을 진행할 대상을 설정할 때는 [target] 명령어를 이용한다. [target] 명령어를 입력하면, 명령어 프롬프트는 [w3af/config:target>>>]로 변경된다. 명령어 프롬프트를 보고 현재 어떤 명령어를 사용하여 설정을 하고 있는지 확인이 가능하다.
[target] 명령어를 이용하여 대상을 설정 해야 해야 한다. [target]을 이용하여 사용 가능한 명령어를 확인하기 위해 [help] 명령어를 이용할 수 있다.


target을 이용해 사용 가능한 명령어 확인









help 명령어를 통해 살펴본 주요 명령어는 다음 표와 같다

표 target을 이용해 사용 가능한 명령어

set 명령어와 target 명령어를 사용한 target 설정




 [set] 명령어는 [set + parameter + value] 순으로 입력하여 사용한다.

4) Plugin 설정


플러그인 사용 정보 확인













w3af output, grep, bruteforce 9개의 플러그인을 지원한다. [help] 명령어를 이용하면, 각 플러그인의 사용 방법에 대한 정보를 확인할 수 있다.


특정 플러그인의 자세한 사용 정보 확인















특정 플러그인의 사용 방법에 대한 정보를 확인은 [help 플러그인명]을 입력한다.

하위 플러그인 리스트 확인
















9개의 플러그인은 각각 하위 플러그인들이 존재한다하위 플러그인 리스트를 확인하기 위해서는 플러그인명만 입력한다.

특정 하위 플러그인에 대한 정보 확인









[desc] 명령어를 사용하면, 하위 플러그인 중에서 특정 플러그인에 대한 정보를 확인할 수 있다


하위 플러그인 세부 설정









하위 플러그인들 중에서 conf YES로 표시된 플러그 인들은 세부 설정이 가능하다. 이때 위의 그림처럼 [config]명령을 사용하면 된다.

플러그인을 이용할 때는 단일 플러그인만 이용해서 진행하는 경우보다, 여러 개의 플러그인을 이용하여 한번에 작업하는 것이 효과적이다. [grep + 플러그인명 하위 플러그인명, 하위 플러그인명] 으로 다수의 플러그인을 활성화시키고 [list 플러그인명(하위 플러그인명이 아님) enabled]로 설정된  하위 플러그인을 확인한다. [플러그인명+ all] 을 입력하면, 해당 플러그인에 존재하는 모든 하위 플러그인이 활성화가 된다.

참고로, 플러그인 해제 방법 은 [플러그인명 ! + 제거하려는 하위 플러그인명] 을 입력 하거나, 활성화가 되어 있는 모든 플러그인을 제거 하려면,  [플러그인명 !all]을 입력한다. 활성화가 되어있지 않은 플러그인을 확인하는 방법은  [list 플러그인명 disabled ]를 입력한다그리고 활성화되어 있지 않은 플러그인의 경우 스캔 작업에서 제외 된다

3.2. W3AF GUI

1) GUI 실행

w3af_gui 명령어 입력




w3af_gui 명령을 입력하면 다음과 같은 메인화면이 나타난다.

w3af gui 메인화면















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

profiles 탭 확인
















  1. empty_profile
    플러그인이 선택되어 있지 않은 상태를 프로파일로 만들어 둔 것이다.
  2. OWASP_TOP10
    취약점 점검 대상 웹 어플리케이션에 대해 OWASP 에서 정의한 가장 일반적인 취약점을 검사 할 수 있도록 플러그인을 정의해 두었다
  3. aduit_high_risk
    취약점 점검 개상 웹 어플리케이션에 대해 OS 명령어 사용과 같이 매우 위험한 취약점을 점검할 수 있도록 플러그인을 정의해 두었다. 해당 취약점은 향후 웹 어플리케이션을 완전히 손상시킬 수 있다.
  4. bruteforce
    웹 어플리케이션에 대해 무차별 대입 공격을 수행할 때 사용할 수 있도록 무차별 공격과 관련된 플러그인을 정의해 두었다.
  5.  fast_scan
    취약점 점검 웹 어플리케이션에 대해 빠르게 스캔하여, 필요 정보를 획득할 수 있도록 플러그인을 정의해 두었다
  6. full_audit
    취약점 점검 대상 웹 어플리케이션에 대해 전체 검사를 하여, 보다 많은 정보를 획득할 수 있도록 플러그인을 정의해 두었다.
  7. full_audit_spider_man
    취약점 점검 대상 웹 어플리케이션에 대해 가능한 많은 정보를 획득하도록 플러그인을 정의해 두었다.
  8. sitemap
    취약점 점검 대상 웹 어플리케이션의 전체 구성도를 만들 수 이또록 플러그인을 정의해 두었다.
  9. web_infrastructure
    취약점 점검 대상 웹 어플리케이션의 Fingerprint를 전문적으로 진행할 수 있도록 플러그인을 정의해 두었다.
웹 취약점 점검은 한번 하고 끝나는 것이 아니라 정기적/비정기적으로 진행된다. 그렇기 때문에 사용자가 환경에 맞게 프로파일을 새로 생성하여 플러그인들을 정의해 두고 필요할 때 마다 사용하는 것이 좋다.

2) 프로파일 생성

프로파일 생성















new 를 클릭하게 되면 profile 란에 생성한 프로파일이 생성되어 있는것을 확인 할 수 있다. 새로 생성한 프로파일은 플러그인이 활성화 되어 있지 않아 바로 사용할 수 없다. 생성한 프로파일을 클릭해서 사용자가 원하는 시나리오나 환경에 맞게 클릭하여 활성화 해준다

원하는 플러그인 선택













원하는 플러그인을 모두 선택 하였으면, 메뉴에서 profiles - save를 클릭 또는 상단의 저장 아이콘을 클릭하여 설정한 내용을 저장한다.

설정한 내용 저장

프로파일 생성을 마쳤으면, 점검 대상 URL 을 입력하고 start를 클릭한다.

취약점 점검을 진행 하면서 발생하는 모든 내용들은 Log 탭에서 확인 할 수 있으며 보여지는 내용은 색으로 표시하여 알아 보기 쉽게 구분하고 있다.
    
 - 빨강색: 설정한 플러그인에 의해 취약점이 발견된 내용
 -
파랑색: 일반적인 정보
 -
  : 에러 메시지

또한 취약점 점검을 진행하는 동안 콘솔에서는 아래 그림과 같은 내용을 볼 수 있다

취약점 점검 시작 후 콘솔 화면

찾은 취약점 결과는 아래 그림과 같이 Results 탭에서 확인 할 수 있다

찾은 취약점 결과

[출처]



2015년 12월 21일 월요일

[SuNiNaTaS] Level1




















[문제풀이]

Level1 문제의 코드 언어는 ASP로 되어있다.

문제에 제시된 코드는 입력된 값을 str 변수에 저장하고 result 값이 admin 이면 pw를 출력해주는 코드이다.

result = Replace(str,"a","add")는 a 가 들어오면 add 변환하여 result에 저장한다.
result = Replace(result,"i","in")는 i 가 들어오면 in 변환하여 result에 저장한다.

reslut1 = Mid(result,2,2)는 result 문자열의 2번째 문자 부터 2글자 까지 리턴한다.
reslut2 = Mid(result,4,6)는 result 문자열의 4번째 문자 부터 6글자 까지 리턴한다.

result = result1 & result2 는 result1 & result2의 값이 result에 저장된다.

result는 admin과 비교하게 된다.




















str = ami 를 입력하게되면, 다음과 같은 순서로 변수에 저장하게 된다.

result = aadmi
result = aadmin

reslut1 = ad
reslut2 = min

result = result1 & result2 는 "admin" 값을 얻게 되며 Authkey 값을 확인할 수 있다.