
웹 취약점 스캐너 및 익스플로잇 도구로, Weblogic, Shiro, Struts2, Tomcat 등 웹 애플리케이션의 알려진 CVE에 대한 POC/EXP 모드를 제공하며, FOFA/Shodan 배치 스캔을 지원합니다.
Vulmap은 웹 취약점 스캔 및 검증 도구로, 웹 애플리케이션에 대한 취약점 스캔 및 취약점 활용 기능을 제공합니다. 현재 지원하는 웹 앱은 activemq, flink, shiro, solr, struts2, tomcat, unomi, drupal, elasticsearch, fastjson, jenkins, nexus, weblogic, jboss, spring, thinkphp 등입니다.
Vulmap은 취약점 스캔과 검증(취약점 이용)을 하나로 결합하여, 테스터가 취약점 발견 후 신속하게 다음 작업을 수행할 수 있도록 크게 돕습니다. 이 도구는 효율성과 편의성을 추구합니다.
효율성: 점진적인 개발 과정에서 배치 스캔, Fofa, Shodan 배치 스캔을 도입했으며, 멀티스레딩을 지원하고 기본적으로 코루틴을 활성화하여 많은 자산을 빠르게 스캔합니다.
편의성: 취약점 발견 즉시 활용 가능하며, 많은 자산 스캔 결과를 다양한 형식으로 출력할 수 있습니다.
Vulmap 0.8 버전부터는 dismap 식별 결과 파일을 직접 취약점 스캔할 수 있습니다
-f output.txt
운영 체제에 python3가 설치되어 있어야 하며, python3.8 이상을 권장합니다.
# git 또는 릴리스 페이지에서 소스 코드 다운로드
git clone https://github.com/zhzyker/vulmap.git
# 필요한 python 종속성 설치
pip3 install -r requirements.txt
# Linux & MacOS & Windows
python3 vulmap.py -u http://example.com
Fofa Api && Shodan Api && Ceye 설정
Fofa 또는 Shodan을 사용하려면 vulmap.py에서 설정 정보를 수정해야 합니다:
# xxxxxxxxxx를 fofa 이메일로 변경
globals.set_value("fofa_email", "xxxxxxxxxx")
# xxxxxxxxxx를 fofa 키로 변경
globals.set_value("fofa_key", "xxxxxxxxxx")
# xxxxxxxxxx를 자신의 shodan 키로 변경
globals.set_value("shodan_key", "xxxxxxxxxx")
# xxxxxxxxxx를 자신의 도메인으로 변경
globals.set_value("ceye_domain","xxxxxxxxxx")
# xxxxxxxxxx를 자신의 ceye 토큰으로 변경
globals.set_value("ceye_token", "xxxxxxxxxx")
기존 라이선스 LICENSE에 다음 면책 조항을 추가합니다. 기존 라이선스와 충돌하는 경우 면책 조항이 우선합니다.
본 도구는 허가되지 않은 상업적 용도로 사용할 수 없으며, 2차 개발 후 허가되지 않은 상업적 용도로 사용할 수 없습니다.
본 도구는 합법적으로 인가된 기업 보안 구축 활동에만 사용됩니다. 본 도구를 사용하여 검사할 때는 해당 행위가 현지 법률 및 규정을 준수하고 충분한 승인을 받았는지 확인해야 합니다.
본 도구를 사용하는 과정에서 불법 행위가 발생할 경우, 사용자는 그에 따른 모든 책임을 부담해야 하며, 당사는 어떠한 법적 책임이나 연대 책임도 지지 않습니다.
본 도구를 사용하기 전에 각 조항을 주의 깊게 읽고 완전히 이해하시기 바랍니다. 제한, 면책 조항 또는 귀하의 중요한 권리에 영향을 미치는 기타 조항은 굵은 글씨, 밑줄 등의 형태로 강조 표시될 수 있습니다. 본 계약의 모든 조항을 충분히 읽고 완전히 이해하며 동의하지 않는 경우 본 도구를 사용하지 마십시오. 본 도구를 사용하거나 기타 명시적 또는 묵시적 방식으로 본 계약에 동의하는 경우, 본 계약을 읽었으며 그 구속에 동의한 것으로 간주됩니다.
YouTube: https://www.youtube.com/watch?v=g4czwS1Snc4
Bilibili: https://www.bilibili.com/video/BV1Fy4y1v7rd
Gif:
선택적 인수:
-h, --help 이 도움말 메시지를 표시하고 종료합니다.
-u URL, --url URL 대상 URL (예: -u "http://example.com")
-f FILE, --file FILE 대상 목록 파일을 선택합니다. 각 url은 줄로 구분되어야 합니다. (예: -f "/home/user/list.txt")
--fofa keyword fofa API를 사용한 배치 스캔 (예: --fofa "app=Apache-Shiro")
--shodan keyword shodan API를 사용한 배치 스캔 (예: --shodan "Shiro")
-m MODE, --mode MODE 모드는 "poc"와 "exp"를 지원합니다. 이 옵션을 생략하면 기본적으로 "poc" 모드로 진입합니다.
-a APP [APP ...] 웹 앱을 지정합니다 (예: "weblogic"). 지정하지 않으면 자동으로 지문 인식합니다.
-c CMD, --cmd CMD 원격 명령 실행 시 실행할 명령을 사용자 정의합니다. 기본값은 echo 무작위 md5입니다.
-v VULN, --vuln VULN 취약점을 활용합니다. 취약점 번호를 지정해야 합니다. (예: -v "CVE-2019-2729")
-t NUM, --thread NUM 스캔 스레드 수, 기본값은 10스레드입니다.
--dnslog server dnslog 서버 (hyuga, dnslog, ceye). 기본값은 자동 폴링입니다.
--output-text file 스캔 결과를 txt 파일로 출력합니다. (예: "result.txt")
--output-json file 스캔 결과를 json 파일로 출력합니다. (예: "result.json")
--proxy-socks SOCKS socks 프록시 사용 (예: --proxy-socks 127.0.0.1:1080)
--proxy-http HTTP http 프록시 사용 (예: --proxy-http 127.0.0.1:8080)
--user-agent UA User-Agent를 사용자 정의할 수 있습니다.
--fofa-size SIZE fofa api 호출 자산 수, 기본값 100, (1-10000) 사용 가능.
--delay DELAY 지연 시간, 요청 간격, 기본값 0초.
--timeout TIMEOUT 타임아웃 시간, 기본값 5초.
--list 지원되는 취약점 목록을 표시합니다.
--debug exp 모드에서 request와 responses를 표시하고, poc 모드에서 스캔 중인 취약점 목록을 표시합니다.
--check 대상 활성 여부 감지 (on/off), 기본값은 on입니다.
# 모든 취약점 poc 테스트, -a all을 지정하지 않으면 기본적으로 지문 인식 활성화
python3 vulmap.py -u http://example.com
# 사이트에서 struts2 취약점만 검사
python3 vulmap.py -u http://example.com -a struts2
# http://example.com:7001에 대해 WebLogic의 CVE-2019-2729 취약점 활용
python3 vulmap.py -u http://example.com:7001 -v CVE-2019-2729
python3 vulmap.py -u http://example.com:7001 -m exp -v CVE-2019-2729
# list.txt의 url들을 배치 스캔
python3 vulmap.py -f list.txt
# 스캔 결과를 result.json으로 내보내기
python3 vulmap.py -u http://example.com:7001 --output-json result.json
# fofa API 호출로 배치 스캔
python3 vulmap.py --fofa app=Apache-Shiro