
가상 호스트 스캐너로, 역방향 조회를 수행하고, 피벗 도구와 함께 사용할 수 있으며, catch-all 시나리오를 감지하고, 와일드카드, 별칭 및 동적 기본 페이지를 우회합니다.
피벗 도구와 함께 사용할 수 있는 가상 호스트 스캐너로, catch-all 시나리오, 별칭 및 동적 기본 페이지를 탐지합니다. 2017년 9월 SecTalks BNE에서 처음 발표되었습니다 (슬라이드 데크).
이 버전은 Codingo의 원본 VHostScan을 개선한 버전으로, 추가 개선 사항, 현대화된 코드 베이스, 더 나은 가상 호스트 발견을 위한 확장된 워드리스트를 포함합니다.
그런 다음 애플리케이션 실행 `docker run --rm -it vhostscan -t´
VHostScan은 Python 3.8 이상이 필요합니다. 다음을 사용하여 설치하세요:
$ pip install VHostScan
또는 소스에서 설치:
$ git clone https://github.com/codingo/VHostScan.git
$ cd VHostScan
$ pip install .
개발용:
$ pip install -e .
그러면 종속성이 설치되고 VHostScan이 경로에 추가됩니다.
참고: 여러 예제에서 10.10.10.29를 참조합니다. 이 IP는 HackTheBox (https://www.hackthebox.eu/)의 은퇴한 대상 머신 BANK.HTB를 가리킵니다.
가장 간단한 예제는 기본 포트 80을 사용하여 예제.com에 대해 기본 워드리스트를 실행합니다:
$ VHostScan -t example.com
연결에 SSL이 필요한 경우 다음을 사용할 수 있습니다:
$ VHostScan -t example.com --ssl

예를 들어, SSH 포트 포워드가 로컬 포트 4444에서 수신 대기 중이며 example.com의 개발 머신의 포트 80으로 트래픽을 전달한다고 가정합니다. 다음을 사용하여 VHostScan이 localhost:4444를 통해 SSH 터널로 연결하지만 헤더 요청을 포트 80에 직접 연결하는 형식으로 지정할 수 있습니다:
$ VHostScan -t localhost -b example.com -p 4444 -r 80
VHostScan은 다른 애플리케이션의 파이핑을 지원하며 VHostScan에 전달된 정보를 워드리스트 데이터로 처리합니다. 예:
$ cat bank.htb | VHostScan -t 10.10.10.29

stdin과 함께 사용할 워드리스트를 지정할 수도 있습니다. 이 경우 워드리스트 정보가 stdin에 추가됩니다. 예:
$ echo -e 'a.example.com\b.example.com' | VHostScan -t localhost -w ./wordlists/wordlist.txt
다음은 퍼지 로직이 활성화된 예제입니다. 마지막 비교가 처음 두 개보다 훨씬 더 유사함을 알 수 있습니다 (실제 해시가 아닌 콘텐츠를 비교):
VHostScan은 이제 다양한 시나리오를 위한 여러 특수 워드리스트를 포함합니다. 원본 워드리스트는 Codingo가 실제 침투 테스트 경험을 바탕으로 만들었으며, 이 향상된 버전은 현대 인프라를 위한 추가 특수 워드리스트를 포함합니다.
각 워드리스트에 대한 자세한 정보는 WORDLISTS.md를 참조하세요.
보안 평가를 위해 pentest-focused 워드리스트 사용:
$ VHostScan -t target.com -w ./wordlists/pentest-focused.txt
포괄적인 스캐닝을 위해 여러 워드리스트 결합:
$ VHostScan -t target.com -w "./wordlists/common-vhosts.txt,./wordlists/cloud-modern.txt"
현대 인프라를 위해 클라우드 중심 워드리스트 사용:
$ VHostScan -t example.com -w ./wordlists/cloud-modern.txt --ssl
이 프로젝트에는 소규모 테스트 배터리가 포함되어 있습니다. 테스트 실행은 매우 간단합니다:
pip install -r test-requirements.txt
python3 setup.py test
프로젝트에 새로운 기능을 추가할 생각이라면 몇 가지 테스트도 함께 기여하는 것을 고려해 보세요. 잘 테스트된 코드베이스는 건전한 코드베이스입니다. :)
이 향상된 버전에는 다음이 포함됩니다:
VHostScan은 원래 Codingo가 제작했으며 2017년 9월 SecTalks BNE에서 처음 발표되었습니다. 이 향상된 버전은 현대 침투 테스트 및 버그 바운티 헌팅을 위한 추가 개선 사항으로 그 훌륭한 기반 위에 구축되었습니다.
| 인수 | 설명 |
|---|
| -h, --help | 도움말 메시지를 표시하고 종료 |
| -t TARGET_HOSTS | 대상 호스트를 설정합니다. |
| -b BASE_HOST | 워드리스트에서 대체 중에 사용할 호스트를 설정합니다 (기본값은 TARGET). |
| -w WORDLISTS | 사용할 워드리스트를 설정합니다. 여러 워드리스트를 쉼표로 구분하여 지정할 수 있습니다 (예: -w "./wordlists/simple.txt, ./wordlists/hackthebox.txt" (기본값 ./wordlists/virtual-host-scanning.txt). 사용 가능한 워드리스트: simple.txt, hackthebox.txt, common-vhosts.txt, pentest-focused.txt, cloud-modern.txt, virtual-host-scanning.txt. |
| -p PORT | 사용할 포트를 설정합니다 (기본값 80). |
| -r REAL_PORT | 80이 아닐 때 헤더에 사용할 웹 서버의 실제 포트 (RFC2616 14.23 참조), SSH/NC 등을 통한 피벗 시 유용 (기본값 PORT). |
| --ignore-http-codes IGNORE_HTTP_CODES | 가상 호스트 스캔에서 무시할 HTTP 코드의 쉼표로 구분된 목록 (기본값 404). |
| --ignore-content-length IGNORE_CONTENT_LENGTH | 지정된 양의 콘텐츠 길이를 무시합니다. |
| --prefix PREFIX | 워드리스트의 각 항목에 접두사를 추가합니다 (예: dev-<word>, test-<word> 등). |
| --suffix SUFFIX | 워드리스트의 각 항목에 접미사를 추가합니다 (예: <word>dev, <word>dev). |
| --first-hit | 첫 번째 성공 결과를 반환합니다. catch-all이 설정되지 않은 시나리오(예: CTF)에서만 사용하세요. |
| --unique-depth UNIQUE_DEPTH | x번 발견된 페이지 콘텐츠의 가능한 일치 항목을 표시합니다 (기본값 1). |
| --ssl | 설정하면 HTTP 대신 HTTPS를 통해 연결합니다. |
| --fuzzy-logic | 설정하면 모든 고유 콘텐츠 응답을 비교하고 각 쌍에 대해 유사성 비율을 제공합니다. 이는 기본 페이지가 정적이지 않은 경우(예: 시간이 표시된 경우) vhost를 분리하는 데 도움이 됩니다. |
| --no-lookups | 역방향 조회를 비활성화합니다 (새 대상을 식별하고 워드리스트에 추가, 기본적으로 켜짐). |
| --rate-limit | 각 스캔 사이에 지연할 시간(초) (기본값 0). |
| --random-agent | 설정하면 각 스캔이 사전 정의된 목록에서 무작위 사용자 에이전트를 사용합니다. |
| --user-agent | 스캔에 사용할 사용자 에이전트를 지정합니다. |
| --waf | 설정하면 간단한 WAF 우회 헤더가 전송됩니다. |
| -oN OUTPUT_NORMAL | -oN 옵션에 파일 이름 인수를 지정하면 일반 출력이 파일에 저장됩니다. |
| -oG OUTPUT_GREPABLE | -oG 옵션에 파일 이름 인수를 지정하면 grep 가능한 출력이 파일에 저장됩니다. |
| -oJ OUTPUT_JSON | -oJ 옵션에 파일 이름 인수를 지정하면 JSON 출력이 파일에 저장됩니다. |
| -v VERBOSE | 도구의 출력을 증가시켜 진행 상황을 표시합니다. |