
DNS 영역 전송 및 masscan을 통해 조직 네트워크의 모든 웹사이트를 열거하고, 응답을 저장하며, 알려진 취약한 웹 기술 및 사용자 정의 정규식 패턴을 쿼리할 수 있도록 합니다.
WebStor는 MIT 라이선스 하에 Python으로 구현된 도구로, 조직의 모든 네트워크에 걸쳐 모든 웹사이트를 신속하게 열거하고, 해당 응답을 저장하며, 제로데이 취약점이 있는 것과 같은 알려진 웹 기술 및 버전을 쿼리하기 위한 도구입니다. 특히 중대형 규모의 분산 관리 조직에서 여러 관리자가 각기 다른 부서와 네트워크에 배포한 모든 웹 기술을 추적하는 것이 거의 불가능한 고유한 문제를 해결하기 위해 설계되었습니다.
WebStor는 다음 작업을 수행하여 목표를 달성합니다:
WebStor는 현재 Linux 시스템에서 실행됩니다. Python으로 작성되었으므로 Windows 지원으로 전환하는 것은 간단하며, 향후 이루어질 가능성이 높습니다.
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.
참고: 이 단계는 조직에서 영역 전송에 하나의 TSIG 키만 사용하고 모든 레코드가 하나의 DNS 서버에서 조회 가능하다고 가정합니다. 그렇지 않은 경우 아래의 보안/고급 사용 사례 섹션을 참조하십시오.
# 웹 기술과 관련된 문자열/정규식 검색:
./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로 요청될 때 기본 사이트나 호스팅 제공업체의 기본 응답(예: 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 라이선스 조건에 따라 사용이 허가되었습니다.
WebStor는 Ross Geerlings <rjgeer@umich.edu>, <ross@seekerdlp.com>이 작성했습니다.
WebStor는 아래에 재현된 MIT 라이선스 조건에 따라 사용이 허가됩니다.
MIT 라이선스
Copyright (c) 2020-2024 The University of Michigan Board of Regents.
이로써 본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 얻은 모든 사람에게, 소프트웨어의 제한 없이 거래할 수 있는 권리(사용, 복사, 수정, 병합, 게시, 배포, 재라이선스 및/또는 소프트웨어 사본 판매 포함)와 소프트웨어가 제공되는 사람에게 소프트웨어를 제공할 수 있는 권리를 무료로 부여하며, 다음 조건에 따릅니다:
위의 저작권 표시와 이 허가 표시는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야 합니다.
소프트웨어는 "있는 그대로" 제공되며, 명시적이거나 묵시적인 어떠한 종류의 보증도 없이 제공됩니다. 여기에는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증이 포함되나 이에 국한되지 않습니다. 어떠한 경우에도 저작자 또는 저작권 보유자는 소프트웨어와 관련하여 또는 소프트웨어의 사용 또는 기타 거래로 인해 발생하는 모든 청구, 손해 또는 기타 책임에 대해 계약, 불법 행위 또는 기타 행위에 관계없이 책임을 지지 않습니다.