Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
webstor — DNS 영역 전송 및 masscan을 통해 조직 네트워크의 모든 웹사이트를 열거하고, 응답을 저장하며, 알려진 취약한 웹 기술 및 사용자 정의 정규식 패턴을 쿼리할 수 있도록 합니다. | Kitploit
도구/GitHubGitHub/rossgeerlings/webstor
ReconnaissanceVulnerability ScannersInformation GatheringWeb SecurityDNS Analysis
GitHubrossgeerlings/webstor

webstor

DNS 영역 전송 및 masscan을 통해 조직 네트워크의 모든 웹사이트를 열거하고, 응답을 저장하며, 알려진 취약한 웹 기술 및 사용자 정의 정규식 패턴을 쿼리할 수 있도록 합니다.

저장소 보기
158202년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

 

WebStor

조직 내 취약한 웹 기술의 신속한 식별

WebStor는 MIT 라이선스 하에 Python으로 구현된 도구로, 조직의 모든 네트워크에 걸쳐 모든 웹사이트를 신속하게 열거하고, 해당 응답을 저장하며, 제로데이 취약점이 있는 것과 같은 알려진 웹 기술 및 버전을 쿼리하기 위한 도구입니다. 특히 중대형 규모의 분산 관리 조직에서 여러 관리자가 각기 다른 부서와 네트워크에 배포한 모든 웹 기술을 추적하는 것이 거의 불가능한 고유한 문제를 해결하기 위해 설계되었습니다.

WebStor는 다음 작업을 수행하여 목표를 달성합니다:

  1. DNS 영역 전송을 수행하여 조직의 A 및 CNAME 레코드를 수집합니다.
  2. Masscan을 사용하여 조직의 네트워크 범위와 해당 범위 밖에 있지만 조직의 A 및 CNAME 레코드에 존재하는 모든 IP 주소에서 열린 HTTP/HTTPS 포트를 스캔합니다.
  3. Python requests 라이브러리를 사용하여 모든 응답을 수집하고 MariaDB 데이터베이스에 저장합니다. 열린 HTTP/HTTPS 포트가 있는 IP에 해당하는 모든 DNS 이름이 IP 주소와 함께 요청에 포함되므로, 다른 헤더를 사용하는 사이트가 누락되지 않습니다.
  4. Wappalyzer 웹 기술 데이터베이스를 다운로드하여 MariaDB 데이터베이스에 저장하여 사용자가 이름으로 공통 웹 기술의 위치를 쿼리할 수 있도록 합니다.
  5. 사용자가 저장된 응답 내에 사용자 정의 정규식이 포함된 위치를 쿼리할 수 있도록 합니다.

지원 플랫폼

WebStor는 현재 Linux 시스템에서 실행됩니다. Python으로 작성되었으므로 Windows 지원으로 전환하는 것은 간단하며, 향후 이루어질 가능성이 높습니다.

사전 요구 사항

애플리케이션

  • Masscan
    • 크론 작업을 사용하여 데이터베이스를 업데이트하는 경우(일반적인 경우), WebStor를 통해 Masscan 스캔을 실행하는 모든 사용자에 대해 sudo nopasswd를 구성하는 것이 중요합니다.
  • MariaDB 10.0.5 이상
    • WebStor가 기본으로 시도하는 자격 증명은 root와 빈 암호입니다. 데이터베이스에 연결하기 위해 다른 사용자 이름과 암호를 사용하도록 WebStor를 구성하려면 "보안 옵션" 섹션을 참조하십시오.

Python 라이브러리

  • pip3 install dnspython
  • pip3 install beautifulsoup4
  • pip3 install mysql-connector-python
  • pip3 install js-regex
  • pip3 install gevent
  • pip3 install requests

PyPI를 통한 설치

  • WebStor를 실행만 하고 편집하지 않을 경우, 사전 요구 애플리케이션을 설치한 후 'sudo pip3 install webstor'를 사용할 수 있습니다.
  • PyPI를 통해 WebStor를 설치한 후, webstor는 경로에 포함되며 작업 디렉터리에 관계없이 명령줄에서 'webstor.py' 대신 'webstor'로 실행할 수 있습니다. 예: 'webstor -g'.

기본 사용법

root@kitploit:~
       webstor.py [-h] [--ADD-HTTP-PORT HTTPPORTTOADD] [--CLEAR-HTTP]
                  [--ADD-HTTPS-PORT HTTPSPORTTOADD] [--CLEAR-HTTPS]
                  [--ADD-CUSTOM-FINGERPRINT FINGERPRINT]
                  [--DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE]
                  [--IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE]
                  [--CLEAR-CUSTOM-FINGERPRINTS] [--SHOW-CONFIG]
                  [--SHOW-CONFIG-FULL] [--RUN-MASSCAN]
                  [--SET-MASSCAN-RANGES SETSCANRANGES]
                  [--ADD-RANGE RANGETOADD] [--DELETE-RANGE RANGETODELETE]
                  [--IMPORT-MASSCAN-RANGES IMPORTSCANRANGES]
                  [--ADD-PATH PATHTOADD] [--DELETE-PATH PATHTODELETE]
                  [--CLEAR-PATHS] [--REFRESH-RESPONSES]
                  [--RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH]
                  [--SEARCH-PATTERN SEARCHPATTERN]
                  [--SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT]
                  [--SEARCH-WAPPALYZER SEARCHWAPPALYZER] [--NO-TSIG-KEY]
                  [--TSIG-KEY-IMPORT IMPORTTSIGFILE]
                  [--TSIG-KEY-REPLACE REPLACEMENTTSIGFILE]
                  [--DELETE-TSIG TSIGTODELETE]
                  [--USE-TSIG-FILE-ONLY USETSIGFILEONLY]
                  [--DOWNLOAD-NEW-WAPPALYZER] [--LIST-WAPPALYZER-TECH-NAMES]
                  [--ZONE-XFER] [--ADD-DOMAIN DOMAINDETAILS]
                  [--DELETE-DOMAIN DOMAINTODELETE]
                  [--IMPORT-ZONE-FILE IMPORTZONEFILE] [--CLEAR-DOMAINS]
                  [--LIST-DOMAINS] [--LIST-OUTSIDE] [--SQL-CREDS SQLCREDSFILE]

optional arguments:
  -h, --help            show this help message and exit
  --ADD-HTTP-PORT HTTPPORTTOADD, -a HTTPPORTTOADD
                        Add a custom HTTP port.
  --CLEAR-HTTP, -aC     Clear any custom HTTP ports and revert to default of
                        80.
  --ADD-HTTPS-PORT HTTPSPORTTOADD, -b HTTPSPORTTOADD
                        Add a custom HTTPS port.
  --CLEAR-HTTPS, -bC    Clear any custom HTTPS ports and revert to default of
                        443.
  --ADD-CUSTOM-FINGERPRINT FINGERPRINT, -c FINGERPRINT
                        Add a custom fingerprint in the form <Name>,<RegEx>.
  --DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE, -cD FINGERPRINTNAMETODELETE
                        Delete a custom fingerprint by name.
  --IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE, -cI IMPORTFINGERPRINTFILE
                        Import a custom fingerprint file with the path
                        specified.
  --CLEAR-CUSTOM-FINGERPRINTS, -cC
                        Clears all custom fingerprints stored in DB.
  --SHOW-CONFIG, -g     Show current WebStor configuration (brief).
  --SHOW-CONFIG-FULL, -gF
                        Show current WebStor configuration (full).
  --RUN-MASSCAN, -m     Runs a new port scan with Masscan on all configured
                        TCP ports for HTTP and HTTPS, against all configured
                        ranges and any IP addresses from DNS records that are
                        outside those ranges.
  --SET-MASSCAN-RANGES SETSCANRANGES, -mR SETSCANRANGES
                        Scan range or ranges, replaces existing ranges in DB,
                        comma separated, such as: -s
                        10.10.0.0/16,10.13.0.0/16,192.168.1.0/24
  --IMPORT-MASSCAN-RANGES IMPORTSCANRANGES, -mI IMPORTSCANRANGES
                        Import scan ranges (CIDR blocks) from a specified
                        file.
  --DELETE-RANGE RANGETODELETE, -mD RANGETODELETE
                        Delete scan range.
  --ADD-PATH PATHTOADD, -p PATHTOADD
                        Add paths for which to request and store responses
                        besides '/'.
  --DELETE-PATH PATHTODELETE, -pD PATHTODELETE
                        Delete paths for which to request and store responses
                        besides '/'.
  --CLEAR-PATHS, -pC    Clear any custom URL request paths and revert to
                        default of '/'.
  --REFRESH-RESPONSES, -r
                        Refresh URL responses in DB.
  --RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH, -rP RESPONSESADDFORPATH
                        Add URL responses for a one-time path in with the
                        current responses in the DB.
  --SEARCH-PATTERN SEARCHPATTERN, -sP SEARCHPATTERN
                        Search for string or regular expression in WebStor
                        database.
  --SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT, -sC SEARCHFINGERPRINT
                        Search for technology by name of user-provided custom
                        fingerprint.
  --SEARCH-WAPPALYZER SEARCHWAPPALYZER, -sW SEARCHWAPPALYZER
                        Search for technology by name (from Wappalyzer Tech
                        DB) in WebStor DB.
  --NO-TSIG-KEY, -tN    Do not use DNSSec TSIG key stored in database or a
                        file, even if present.
  --TSIG-KEY-IMPORT IMPORTTSIGFILE, -tI IMPORTTSIGFILE
                        Import a specified TSIG key file into the database
  --TSIG-KEY-REPLACE REPLACEMENTTSIGFILE, -tR REPLACEMENTTSIGFILE
                        Replace a TSIG key in the database with a specified
                        file
  --DELETE-TSIG TSIGTODELETE, -dT TSIGTODELETE
                        Delete a TSIG key from the database by name.
  --USE-TSIG-FILE-ONLY USETSIGFILEONLY, -tF USETSIGFILEONLY
                        Only use tsig file specified (full path), do not use
                        TSIGs stored in the DB. Applies to all domains,
                        limiting WebStor to one TSIG for zone transfers in the
                        current execution.
  --DOWNLOAD-NEW-WAPPALYZER, -w
                        Download a new Wappalyzer fingerprints file directly
                        from GitHub. Overwrites existing Wappalyzer
                        fingerprint data.
  --LIST-WAPPALYZER-TECH-NAMES, -wL
                        List the names of all Wappalyzer technologies in the
                        database.
  --ZONE-XFER, -z       Forces a new zone transfer using all domains, servers,
                        and associated TSIG keys in DB
  --ADD-DOMAIN DOMAINDETAILS, -zA DOMAINDETAILS
                        Add a domain in the form <Domain name>,<Server>,<TSIG
                        Key Name>.
  --DELETE-DOMAIN DOMAINTODELETE, -zD DOMAINTODELETE
                        Delete a DNS domain from the database by name.
  --IMPORT-ZONE-FILE IMPORTZONEFILE, -zI IMPORTZONEFILE
                        Add domains for zone transfers from a file.
  --CLEAR-DOMAINS, -zC  Clears all DNS domains stored in DB.
  --LIST-DOMAINS, -zL   Lists all DNS domains stored in DB.
  --LIST-OUTSIDE, -e    Prints a list of all names and IPs from our zone
                        transfers that are outside defined net ranges.
  --SQL-CREDS SQLCREDSFILE, -q SQLCREDSFILE
                        Use SQL credentials in file at specified path.

WebStor 초기 구성 및 데이터베이스 채우기 단계:

참고: 이 단계는 조직에서 영역 전송에 하나의 TSIG 키만 사용하고 모든 레코드가 하나의 DNS 서버에서 조회 가능하다고 가정합니다. 그렇지 않은 경우 아래의 보안/고급 사용 사례 섹션을 참조하십시오.

  1. 영역 전송을 허용하는 TSIG 키 파일을 얻어 작업 디렉터리에 배치합니다.
  2. 조직의 모든 네트워크 범위 목록 파일(CIDR 표기법, 줄바꿈으로 구분)을 얻습니다. 방대한 양의 사설 RFC1918 공간(특히 10.X 공간)을 사용하는 경우 10.0.0.0/8을 단순히 추가하지 마십시오. 나중에 Masscan이 매우 오래 걸릴 수 있습니다. 대신 실제로 할당된 더 작은 블록(예: 10.10.3.0/24)을 여러 개 사용하십시오. 글 작성 시점의 일반적인 기업 또는 대학 네트워크의 경우, 현재 WebStor의 스로틀링 설정으로 스캔된 백만 개의 IP 주소당 약 15분이 소요됩니다.
  3. 영역 전송을 가져올 도메인 이름이 포함된 텍스트 파일을 만듭니다. 파일 상단에 두 줄을 삽입합니다. 첫 번째 줄에는 TSIG 키의 이름(이름을 모르는 경우 TSIG 파일의 첫 번째 줄에 "key" 바로 뒤에 있음)을, 두 번째 줄에는 DNS 서버의 이름 또는 IP 주소를 입력합니다. 나머지 파일은 조직의 각 DNS 도메인 이름을 한 줄에 하나씩 입력합니다. 일반적인 대규모 대학의 경우 engineering.stateu.edu와 같은 이름이 됩니다.
  4. ./webstor.py -g를 실행하여 구성을 표시하고 데이터베이스 기능을 확인합니다.
  5. ./webstor.py -tI <tsig file> -mI <net ranges file> -zI <domains file> 을 실행합니다. 참고: 이 프로세스 중 TSIG 가져오기 부분에서 TSIG와 연결할 도메인과 해당 TSIG의 대상 DNS 서버를 묻는 메시지가 표시됩니다. TSIG 파일 자체에는 이 정보가 포함되어 있지 않기 때문입니다. 도메인 중 하나(예: stateu.edu)와 DNS 서버의 IP 주소를 제공하기만 하면 됩니다. 이후 처리되는 도메인 가져오기 파일의 정보가 도메인 연결을 대체합니다.
  6. 이제 WebStor가 데이터를 수집할 준비가 되었습니다. ./webstor.py -z -m -r -w를 실행합니다. 이 명령은 영역 전송을 통해 DNS 레코드를 수집하고, Masscan으로 열린 웹 포트를 스캔하고, 열린 웹 포트가 있는 모든 호스트(네트워크 범위 내의 호스트와 해당 범위를 벗어난 DNS 레코드가 있는 호스트의 상위 집합)에 대해 HTTP/HTTPS 요청을 수행하고, 응답을 데이터베이스에 저장합니다. -w 옵션은 GitHub에서 최신 Wappalyzer 웹 기술 데이터베이스 사본을 다운로드합니다.

사용 예시

root@kitploit:~
# 웹 기술과 관련된 문자열/정규식 검색:
./webstor.py -sP "content=\"wordpress 4.[7-9]"
# 이 정규식과 일치하는 사이트 목록, WordPress v4.7-9 사이트의 예상 응답이 반환됩니다.

# 위 예시의 정규식을 이름으로 조회 가능한 사용자 정의 핑거프린트로 저장하려면(매번 정규식을 기억할 필요 없음):
./webstor.py -c "wordpress4.7-9,content=\"wordpress 4.[7-9]"

# 위 명령을 실행한 후 다음과 같이 간단히 조회할 수 있습니다:
./webstor.py -sC wordpress4.7-9

# Wappalyzer 정의를 사용하여 Wordpress 사이트 검색:
./webstor.py -sW wordpress
# 조직 네트워크상의 접근 가능한 Wordpress 사이트 목록이 반환됩니다. 참고: Wappalyzer 검색은 확인해야 할 속성 수가 많기 때문에 패턴/정규식 검색보다 느릴 수 있습니다.

이름 및 IP로 표시된 결과

사이트는 이름과 IP 주소 모두에 대한 응답을 기반으로 조회됩니다. 이는 일부 웹서버가 여러 이름으로 여러 사이트를 호스팅하기 때문에 중요합니다. 다른 서버는 IP로 요청될 때 기본 사이트나 호스팅 제공업체의 기본 응답(예: https://68.66.216.42)만 제공하고, 이름으로 요청될 때 실제 업무 관련 사이트(예: https://www.seekerdlp.com)를 제공할 수 있습니다. 따라서 이름이 있는 사이트가 웹서버 IP로 요청될 때도 서비스되는 경우, 두 경우 모두에 대한 쿼리 결과가 표시됩니다.

최신 결과 유지

쿼리 결과가 항상 네트워크의 현재 상태를 반영하도록 매일 WebStor를 실행하는 크론 작업을 설정하는 것이 좋습니다.

보안 옵션

기본 MariaDB 자격 증명(root, 빈 암호)을 사용하지 않으려면 -q 옵션을 사용하여 자격 증명이 포함된 파일의 경로를 지정할 수 있습니다. 파일의 첫 번째 줄은 서버(예: localhost)여야 합니다. 두 번째 줄은 SQL 사용자 이름이어야 합니다. 세 번째 줄은 암호여야 합니다.

TSIG 키를 데이터베이스에 저장하지 않으려면 -tF 옵션을 사용하여 ACL이 적용된 TSIG 키 파일의 경로를 지정할 수 있습니다.

조직에서 여러 TSIG 키를 사용하는 경우 데이터베이스에 저장해야 합니다. 각 키는 -tI 옵션으로 추가할 수 있으며, 도메인은 일반 옵션을 통해 적절한 키와 서버를 지정하여 추가할 수 있습니다.

기여

WebStor는 Wappalyzer의 기술 데이터베이스를 사용하여 사전 채워진 이름 기반 기술 조회를 WebStor의 저장된 응답에 대해 수행합니다. Wappalyzer는 MIT 라이선스 조건에 따라 사용이 허가되었습니다.

특별 감사

  • Brandon Bailey <Twitter: @ge0stigm4> (원래 개념의 공동 설계자)
  • Bob Harold (DNS 지도)
  • Neamen Negash <nnegash@umich.edu> (설치자)
  • afreudenreich (여러 버그 수정 및 개선)

라이선스 및 작성자

WebStor는 Ross Geerlings <rjgeer@umich.edu>, <ross@seekerdlp.com>이 작성했습니다.

WebStor는 아래에 재현된 MIT 라이선스 조건에 따라 사용이 허가됩니다.

MIT 라이선스

Copyright (c) 2020-2024 The University of Michigan Board of Regents.

이로써 본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 얻은 모든 사람에게, 소프트웨어의 제한 없이 거래할 수 있는 권리(사용, 복사, 수정, 병합, 게시, 배포, 재라이선스 및/또는 소프트웨어 사본 판매 포함)와 소프트웨어가 제공되는 사람에게 소프트웨어를 제공할 수 있는 권리를 무료로 부여하며, 다음 조건에 따릅니다:

위의 저작권 표시와 이 허가 표시는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야 합니다.

소프트웨어는 "있는 그대로" 제공되며, 명시적이거나 묵시적인 어떠한 종류의 보증도 없이 제공됩니다. 여기에는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증이 포함되나 이에 국한되지 않습니다. 어떠한 경우에도 저작자 또는 저작권 보유자는 소프트웨어와 관련하여 또는 소프트웨어의 사용 또는 기타 거래로 인해 발생하는 모든 청구, 손해 또는 기타 책임에 대해 계약, 불법 행위 또는 기타 행위에 관계없이 책임을 지지 않습니다.

도구 다운로드