Home
home

웹 취약점 점검 도구 검토

1. 웹 취약점 점검 도구 검토

웹 취약점 점검 도구 검토
도구 이름
설명
주요 기능
Github Star 수
Fork 수
최근 Commit
유지보수 상태
OWASP ZAP
OWASP에서 제공하는 웹 애플리케이션 취약점 테스트 도구
자동/수동 스캔, 다양한 플러그인 지원, 사용자 친화적 인터페이스
11.4K
2.6K
2024-06-05
매우 활발
Nikto
웹 서버를 스캔하여 잠재적 취약점을 찾는 경량 도구
6700개 이상의 위험 항목 탐지, 미설치 소프트웨어 확인
6.5K
1.4K
2024-04-19
중간
Wapiti
웹 애플리케이션을 크롤링하여 취약점을 탐지하는 도구
SQL 인젝션, XSS, 파일 인클루전 탐지
1.2K
300
2024-02-10
중간
Arachni
고성능 웹 애플리케이션 보안 스캐너
분산 스캔, 다양한 취약점 탐지, 대규모 애플리케이션 점검
3.9K
570
2022-01-15
낮음
Vega
그래픽 사용자 인터페이스를 제공하는 웹 애플리케이션 보안 스캐너
XSS, SQL 인젝션 탐지, 사용자 친화적 인터페이스
1.2K
250
2020-08-14
낮음
w3af
웹 애플리케이션 보안 점검을 위한 프레임워크
다양한 플러그인을 통한 취약점 탐지 및 익스플로잇
4.4K
1.1K
2024-04-01
활발
오픈 소스 웹 취약점 점검 도구 중에 활발한 커뮤니티 환경의 대상을 선정합니다.
OWSAP ZAP, Nikto, w3af(python 종속성 이슈로 설치에 어려움), Wapiti)
테스트 환경
Name
Type
IP
Install Tools
dvwa-test
VM
10.10.12.178
DVWA, Juice Shop, bWAPP
vulnerability-scanning
VM
10.10.12.179
OWASP ZAP, Nikto, w3af, Wapiti
테스트용 취약점 웹 애플리케이션
Num
Web Application
Description
URL
1
Damn Vulnerable Web Application (DVWA)
다양한 웹 취약점을 학습하고 테스트할 수 있는 매우 취약한 웹 애플리케이션입니다.
2
OWASP Juice Shop
Node.js로 작성된 모던 웹 애플리케이션으로, 다양한 취약점을 포함하고 있습니다.
3
bWAPP (Buggy Web Application)
PHP로 작성된 취약한 웹 애플리케이션으로, 다양한 웹 취약점을 테스트할 수 있습니다.
4
WebGoat
OWASP에서 제공하는 교육용 애플리케이션으로, 사용자가 다양한 웹 보안 문제를 학습할 수 있도록 도와줍니다.
5
Hackazon
실제 전자상거래 웹사이트처럼 보이도록 설계된 취약 웹 애플리케이션입니다.
6
WackoPicko
보안 학습을 위해 설계된 취약 웹 애플리케이션입니다.

2. DVWA 설치

Docker-DVWA 설치
# Docker 설치 sudo snap install docker sudo systemctl enable docker sudo systemctl start docker docker --version # Docker-DVWA 실행 docker run --rm -it -p 80:80 vulnerables/web-dvwa
Shell
복사
1.
WEB UI : http://10.10.12.178
2.
LOGIN
a.
id : admin
b.
pw : password
3.
Create / Reset database Button
4.
DVWA LOGIN
5.
DVWA Security Level
⇒ DVWA Security Level : Low / Medium / High / Impossible
⇒ Default : Low
번외 : OWASP Juice Shop 설치
docker pull bkimminich/juice-shop docker run --rm -p 3000:3000 bkimminich/juice-shop
Shell
복사
번외 : bWAPP 설치
docker pull raesene/bwapp docker run --rm -p 4000:80 raesene/bwapp
Shell
복사

3. OWASP ZAP 설치 및 확인

Open Web Application Security Project Zed Attack Proxy → OWASP ZAP
OWASP ZAP v2.15.0 설치
# java 설치 sudo apt update sudo apt install -y openjdk-11-jdk # OWASP ZAP 설치 wget https://github.com/zaproxy/zaproxy/releases/download/v2.15.0/ZAP_2_15_0_unix.sh -O zap_install.sh chmod +x zap_install.sh ./zap_install.sh # OWASP ZAP Quick Test zap.sh -cmd -quickurl http://10.10.12.178 -quickout /tmp/zap-dvwa-quick-report.html
Shell
복사
(옵션) OWASP ZAP 컨테이너로 실행 - Link Webswing Blog
OWASP ZAP Full Test
scp -i ~/.ssh/xo_idc.pem ubuntu@10.10.12.179:/tmp/zap-dvwa-quick-report.html .
Shell
복사
[Caption] 레포트 파일 다운로드
OWASP ZAP - Risk Level 기준
1.
high
설명
이 수준의 취약점은 시스템의 심각한 보안 위험을 초래할 수 있습니다.
공격자가 시스템을 장악하거나 중요한 데이터에 접근할 수 있는 취약점입니다.
권장 사항
반드시 수정해야 합니다.
가능한 한 빨리 수정하여 시스템의 보안을 강화해야 합니다.
2.
medium
설명
이 수준의 취약점은 잠재적으로 중요한 보안 문제를 초래할 수 있습니다.
시스템의 일부 기능이 손상되거나 제한된 데이터 노출이 발생할 수 있습니다.
권장 사항
수정을 권장합니다.
시스템의 보안을 유지하기 위해 가능한 한 빨리 이러한 취약점을 해결하는 것이 좋습니다.
3.
low
설명
이 수준의 취약점은 상대적으로 낮은 보안 위험을 초래합니다.
시스템의 보안에 큰 영향을 미치지 않지만, 누적되면 문제가 될 수 있는 작은 취약점입니다.
권장 사항
수정하면 좋지만, 우선순위가 낮습니다.
다른 중요한 취약점을 먼저 해결한 후에 수정해도 됩니다.
4.
informational
설명
이 수준은 보안 위험을 나타내지는 않지만, 시스템의 보안 상태에 대한 정보를 제공합니다.
예를 들어, 시스템 구성에 대한 정보 또는 보안 관련 설정에 대한 정보일 수 있습니다.
권장 사항
단순히 정보 제공용입니다.
반드시 수정할 필요는 없지만, 정보를 바탕으로 시스템 구성을 검토할 수 있습니다.
5.
false positive
설명
보안 스캔 도구가 실제로는 문제가 없는 항목을 취약점으로 잘못 감지하는 경우입니다.
이는 다양한 이유로 발생할 수 있으며, 보안 전문가가 결과를 검토하여 실제로 문제가 없는지 확인해야 합니다.
예시
보안 스캐너가 특정 패턴을 감지하고 이를 취약점으로 인식했지만, 실제로는 안전한 설정이나 코드일 수 있습니다.
DVWA - ZAP(Quick) Alert Details
medium - Content Security Policy (CSP) Header Not Set
설명
Content Security Policy (CSP) 헤더가 설정되지 않았습니다.
CSP는 웹사이트의 콘텐츠를 안전하게 로드하기 위해 출처를 제한하는 보안 정책입니다.
해결책
웹 서버, 애플리케이션 서버, 로드 밸런서 등이 Content-Security-Policy 헤더를 설정하도록 구성합니다.
medium - Directory Browsing
설명
디렉토리 목록보기가 활성화되어 있습니다.
이는 사용자가 웹 서버의 디렉토리 구조를 볼 수 있게 하며, 민감한 파일에 접근할 위험이 있습니다.
해결책
디렉토리 목록보기를 비활성화합니다.
필요시, 나열된 파일이 위험을 유발하지 않는지 확인합니다.
medium - Missing Anti-clickjacking Header
설명
클릭재킹을 방지하기 위한 헤더가 설정되지 않았습니다.
이 헤더는 페이지가 iframe 내에서 로드되지 않도록 하여 클릭재킹 공격을 방지합니다.
해결책
모든 웹 페이지에 Content-Security-Policy 또는 X-Frame-Options 헤더를 설정합니다.
페이지가 프레임 내에서 로드되는 것을 원하지 않는다면 DENY를 사용하고, 같은 도메인 내에서만 로드되도록 하려면 SAMEORIGIN을 사용합니다.
low - Cookie No HttpOnly Flag
설명
쿠키에 HttpOnly 플래그가 설정되지 않았습니다.
HttpOnly 플래그는 클라이언트 측 스크립트가 쿠키에 접근하지 못하도록 하여 XSS 공격을 방지합니다.
해결책
모든 쿠키에 HttpOnly 플래그를 설정합니다.
low - Cookie without SameSite Attribute
설명
쿠키에 SameSite 속성이 설정되지 않았습니다.
SameSite 속성은 CSRF 공격을 방지하기 위해 쿠키가 전송되는 컨텍스트를 제어합니다.
해결책
모든 쿠키에 SameSite 속성을 'lax' 또는 이상적으로 'strict'로 설정합니다.
low - Server Leaks Version Information via "Server" HTTP Response Header Field
설명
서버가 "Server" HTTP 응답 헤더를 통해 버전 정보를 노출하고 있습니다.
이는 공격자가 서버의 특정 취약점을 악용하는 데 사용할 수 있습니다.
해결책
웹 서버, 애플리케이션 서버, 로드 밸런서 등이 "Server" 헤더를 숨기거나 일반적인 정보만 제공하도록 구성합니다.
low - X-Content-Type-Options Header Missing
설명
X-Content-Type-Options 헤더가 설정되지 않았습니다.
이 헤더는 브라우저가 선언된 콘텐츠 유형을 무시하지 못하도록 하여 MIME 타입 스니핑 공격을 방지합니다.
해결책
웹 서버가 적절한 Content-Type 헤더를 설정하고, X-Content-Type-Options 헤더를 'nosniff'로 설정합니다.
information - Authentication Request Identified
설명
인증 요청이 감지되었습니다.
이는 웹 애플리케이션에서 사용자 인증이 필요함을 나타냅니다.
해결책
정보 제공 경고이므로 수정할 필요가 없습니다.
information - Session Management Response Identified
설명
세션 관리 응답이 감지되었습니다.
이는 웹 애플리케이션에서 세션 관리를 위한 응답을 포함하고 있음을 나타냅니다.
해결책
정보 제공 경고이므로 수정할 필요가 없습니다.
information - User Agent Fuzzer
설명
User Agent Fuzzer가 감지되었습니다.
이는 다양한 사용자 에이전트 문자열을 사용하여 서버의 응답을 테스트하는 도구입니다.
번외 : OWASP Juice Shop 점검
⇒ OWASP Juice Shop에 대한 웹 취약점 점검에서 Risk Level 중에 High 발생!!
high - Cloud Metadata Potentially Exposed
설명
클라우드 메타데이터 공격은 잘못 구성된 NGINX 서버를 악용하여 AWS, GCP, Azure와 같은 클라우드 서비스 제공자가 유지하는 인스턴스 메타데이터에 접근하려는 시도입니다.
이 메타데이터는 내부 네트워크에서만 접근할 수 있는 '169.254.169.254' IP 주소를 통해 제공됩니다.
잘못 구성된 NGINX 서버는 이 IP 주소를 'Host' 헤더 필드에 사용하여 메타데이터에 접근할 수 있게 할 수 있습니다.
해결책
NGINX 설정에서 사용자 데이터를 신뢰하지 않습니다.
특히 '$host' 변수는 'Host' 헤더에서 설정되며, 공격자가 이를 조작할 수 있으므로 사용하지 않습니다. 신뢰할 수 있는 고정 값을 사용합니다.
……

4. Nikto 설치 및 확인

Nikto 설치
# 필수 패키지 설치 sudo apt install -y perl # Nikto 다운로드 및 설치 sudo git clone https://github.com/sullo/nikto.git /opt/nikto sudo ln -s /opt/nikto/program/nikto.pl /usr/local/bin/nikto nikto -h # Nikto 실행 nikto -h http://10.10.12.178 -o /tmp/nikto-dvwa-low-report.html -Format html
Shell
복사
scp -i ~/.ssh/xo_idc.pem ubuntu@10.10.12.179:/tmp/nikto-dvwa-low-report.html .
Shell
복사
⇒ DVWA Security Level을 조정해도 동일한 결과를 출력합니다.
Alert Details
/ - [GET] Cookie PHPSESSID created without the httponly flag.
PHPSESSID 쿠키가 HttpOnly 플래그 없이 생성되었습니다. 
HttpOnly 플래그가 없으면 클라이언트 측 스크립트가 이 쿠키에 접근할 수 있어 XSS 공격에 취약할 수 있습니다.
/ - [GET] Cookie security created without the httponly flag.
security 쿠키가 HttpOnly 플래그 없이 생성되었습니다.
위와 동일한 이유로 XSS 공격에 취약할 수 있습니다.
/robots.txt - [GET] The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
X-Content-Type-Options 헤더가 설정되지 않았습니다.
이로 인해 브라우저가 사이트의 콘텐츠를 MIME 타입과 다르게 렌더링할 수 있습니다.
/ - [HEAD] Apache/2.4.25 appears to be outdated (current is at least 2.4.59). Apache 2.2.34 is the EOL for the 2.x branch.
Apache 서버 버전이 2.4.25로, 현재 최신 버전인 2.4.59보다 오래되었습니다.
2.x 버전의 최신 릴리스는 2.2.34이며, 이는 EOL(End Of Life) 상태입니다. 최신 버전으로 업데이트하는 것이 좋습니다.
/config/ - [GET] Directory indexing found.
/config/ 디렉토리의 인덱싱이 활성화되어 있습니다.
이를 통해 디렉토리 내의 파일 목록을 볼 수 있습니다. 민감한 정보가 노출될 수 있습니다.
/config/ - [GET] Configuration information may be available remotely.
/config/ 디렉토리에서 구성 정보가 원격으로 접근 가능할 수 있습니다.
이는 보안 위험을 초래할 수 있습니다.
/docs/ - [GET] Directory indexing found.
/docs/ 디렉토리의 인덱싱이 활성화되어 있습니다.
이를 통해 디렉토리 내의 파일 목록을 볼 수 있습니다. 민감한 정보가 노출될 수 있습니다.
/icons/README - [GET] Apache default file found.
Apache 서버의 기본 README 파일이 발견되었습니다.
이는 서버 설정에 대한 정보를 노출할 수 있습니다.
/login.php - [GET] Admin login page/section found.
/login.php 페이지가 발견되었습니다.
이는 관리자 로그인 페이지로, 공격자가 이를 통해 접근을 시도할 수 있습니다.
/gitignore - [GET] .gitignore file found. It is possible to grasp the directory structure.
.gitignore 파일이 발견되었습니다.
이 파일을 통해 디렉토리 구조를 파악할 수 있어 공격자가 이를 악용할 수 있습니다.

5. Wapiti 설치 및 확인

Wapiti 설치
# 필수 패키지 설치 sudo apt install -y python3 python3-pip # Wapiti 설치 sudo pip3 install wapiti3 # Wapiti 실행 wapiti -u https://msu-testnet-explorer.xangle.io/ -f html -o /tmp/wapiti-msu-testnet-report
Shell
복사
mkdir wapiti-mst-report-20240723 scp -i ~/.ssh/xo_idc.pem -r ubuntu@10.10.12.179:/tmp/wapiti-msu-testnet-report/ wapiti-mst-report-20240723
Shell
복사
⇒ DVWA Security Level을 조정해도 동일한 결과를 출력함..
Alert Details
Content Security Policy Configuration
설명
CSP는 XSS 및 데이터 삽입 공격을 감지하고 완화하는 추가 보안 계층입니다.
해결책
Content-Security-Policy HTTP 헤더를 웹 페이지에 추가하고, 사용자 에이전트가 로드할 리소스를 제어하는 값을 설정합니다.
/ - CSP is not set
HTTP Secure Headers
설명
HTTP 보안 헤더는 브라우저가 웹사이트의 콘텐츠를 처리할 때 어떻게 행동해야 하는지 알려줍니다.
해결책
HTTP 보안 헤더를 강화하는 권장 사항을 따릅니다.
/ - X-Frame-Options is not set
/ - X-Content-Type-Options is not set
HttpOnly Flag cookie
설명
HttpOnly 플래그는 Set-Cookie HTTP 응답 헤더에 포함되는 추가 플래그입니다.
이 플래그를 사용하면 클라이언트 측 스크립트가 보호된 쿠키에 접근하는 위험을 줄일 수 있습니다.
해결책
쿠키를 생성할 때 HttpOnly 플래그를 True로 설정합니다.
/ - HttpOnly flag is not set in the cookie : PHPSESSID
/ - HttpOnly flag is not set in the cookie : security
Secure Flag cookie
설명
보안 플래그는 HTTP 응답 내에서 서버가 사용자에게 새로운 쿠키를 보낼 때 설정할 수 있는 옵션입니다.
보안 플래그의 목적은 쿠키가 평문으로 전송됨으로 인해 무단으로 관찰되는 것을 방지하는 것입니다.
해결책
쿠키를 생성할 때 보안 플래그를 True로 설정합니다.
/ - Secure flag is not set in the cookie : PHPSESSID
/ - Secure flag is not set in the cookie : security

6. 검토 의견 (개인)

OWASP ZAP이 웹 취약점 검출 항목이 많고 솔루션 제시에 가장 우월해 보입니다. (Risk Level로 위협 등급 표현)
Nikto는 웹 취약점 검출 내용도 빈약해 보이고 솔루션 제시도 부족해 보입니다. (오래된 느낌…)
Wapiti는 설치도 간결하고 레포팅도 깔끔하게 보여지지만 OWASP ZAP에 비해 웹 취약점 검출 항목이 적습니다.