Andrew Horton urbanadventurer와 Brendan Coles bcoles가 개발함
최신 릴리스: v0.5.5. 2021년 1월 16일
라이센스: GPLv2
이 제품에는 라이센스 계약에 명시된 조건이 적용됩니다. WhatWeb에 대한 자세한 내용을 보려면 다음 사이트를 방문하세요.
홈페이지: https://morningstarsecurity.com/research/whatweb
위키: https://github.com/urbanadventurer/WhatWeb/wiki/
WhatWeb에 관한 질문, 의견 또는 우려 사항이 있는 경우 개발자에게 연락하기 전에 설명서를 참조하십시오. 귀하의 의견은 언제나 환영입니다.
WhatWeb은 웹사이트를 식별합니다. 그 목표는 "그 웹사이트는 무엇입니까?"라는 질문에 대답하는 것입니다. WhatWeb은 콘텐츠 관리 시스템(CMS), 블로그 플랫폼, 통계/분석 패키지, JavaScript 라이브러리, 웹 서버 및 내장 장치를 포함한 웹 기술을 인식합니다. WhatWeb에는 1800개가 넘는 플러그인이 있으며, 각각은 서로 다른 것을 인식합니다. WhatWeb은 또한 버전 번호, 이메일 주소, 계정 ID, 웹 프레임워크 모듈, SQL 오류 등을 식별합니다.
WhatWeb은 은밀하고 빠르거나 철저하지만 느릴 수 있습니다. WhatWeb은 속도와 안정성 사이의 균형을 제어하기 위해 공격성 수준을 지원합니다. 브라우저에서 웹사이트를 방문하면 거래에는 해당 웹사이트를 지원하는 웹 기술에 대한 많은 힌트가 포함됩니다. 때로는 단일 웹페이지 방문만으로 웹사이트를 식별할 수 있는 충분한 정보가 포함되어 있지만 그렇지 않은 경우 WhatWeb이 웹사이트를 추가로 조사할 수 있습니다. '스텔스(stealthy)'라고 불리는 기본 공격 수준은 가장 빠르며 웹 사이트에 대해 단 한 번의 HTTP 요청만 필요합니다. 이는 공개 웹사이트를 스캔하는 데 적합합니다. 침투 테스트에 사용하기 위해 더욱 공격적인 모드가 개발되었습니다.
대부분의 WhatWeb 플러그인은 철저하며 미묘한 것부터 명백한 것까지 다양한 신호를 인식합니다. 예를 들어 대부분의 WordPress 웹사이트는 메타 HTML 태그(예: '')로 식별할 수 있지만 소수의 WordPress 웹사이트에서는 이 식별 태그를 제거하지만 이것이 WhatWeb을 방해하지는 않습니다. WordPress WhatWeb 플러그인에는 파비콘, 기본 설치 파일, 로그인 페이지 확인 및 상대 링크 내의 "/wp-content/" 확인을 포함하여 15개 이상의 테스트가 있습니다.
WhatWeb을 사용하여 reddit.com을 스캔합니다.
$ ./whatweb reddit.com
http://reddit.com [301 Moved Permanently] Country[UNITED STATES][US], HTTPServer[snooserv], IP[151.101.65.140], RedirectLocation[https://www.reddit.com/], UncommonHeaders[retry-after,x-served-by,x-cache-hits,x-timer], Via-Proxy[1.1 varnish]
https://www.reddit.com/ [200 OK] Cookies[edgebucket,eu_cookie_v2,loid,rabt,rseor3,session_tracker,token], Country[UNITED STATES][US], Email[[email protected],[email protected]], Frame, HTML5, HTTPServer[snooserv], HttpOnly[token], IP[151.101.37.140], Open-Graph-Protocol[website], Script[text/javascript], Strict-Transport-Security[max-age=15552000; includeSubDomains; preload], Title[reddit: the front page of the internet], UncommonHeaders[fastly-restarts,x-served-by,x-cache-hits,x-timer], Via-Proxy[1.1 varnish], X-Frame-Options[SAMEORIGIN]
.$$$ $. .$$$ $.
$$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$.
$ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$.
$ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$ `$$ $ `$ $$$ $ `$ $ `$ $$$'
$. $ $$$ $. $$$$$$ $. $$$$$$ `$ $. $ :' $. $ $$$ $. $$$$ $. $$$$$.
$::$ . $$$ $::$ $$$ $::$ $$$ $::$ $::$ . $$$ $::$ $::$ $$$$
$;;$ $$$ $$$ $;;$ $$$ $;;$ $$$ $;;$ $;;$ $$$ $$$ $;;$ $;;$ $$$$
$$$$$$ $$$$$ $$$$ $$$ $$$$ $$$ $$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$'
WhatWeb - Next generation web scanner version 0.5.5.
Developed by Andrew Horton (urbanadventurer) and Brendan Coles (bcoles)
Homepage: https://morningstarsecurity.com/research/whatweb
Usage: whatweb [options] <URLs>
TARGET SELECTION:
<TARGETs> Enter URLs, hostnames, IP addresses, filenames or
IP ranges in CIDR, x.x.x-x, or x.x.x.x-x.x.x.x
format.
--input-file=FILE, -i Read targets from a file. You can pipe
hostnames or URLs directly with -i /dev/stdin.
TARGET MODIFICATION:
--url-prefix Add a prefix to target URLs.
--url-suffix Add a suffix to target URLs.
--url-pattern Insert the targets into a URL. Requires --input-file,
eg. www.example.com/%insert%/robots.txt
AGGRESSION:
The aggression level controls the trade-off between speed/stealth and
reliability.
--aggression, -a=LEVEL Set the aggression level. Default: 1.
Aggression levels are:
1. Stealthy Makes one HTTP request per target. Also follows redirects.
3. Aggressive If a level 1 plugin is matched, additional requests will be
made.
4. Heavy Makes a lot of HTTP requests per target. Aggressive tests from
all plugins are used for all URLs.
HTTP OPTIONS:
--user-agent, -U=AGENT Identify as AGENT instead of WhatWeb/0.5.5.
--header, -H Add an HTTP header. eg "Foo:Bar". Specifying a default
header will replace it. Specifying an empty value, eg.
"User-Agent:" will remove the header.
--follow-redirect=WHEN Control when to follow redirects. WHEN may be `never',
`http-only', `meta-only', `same-site', or `always'.
Default: always.
--max-redirects=NUM Maximum number of contiguous redirects. Default: 10.
AUTHENTICATION:
--user, -u=<user:password> HTTP basic authentication.
--cookie, -c=COOKIES Provide cookies, e.g. 'name=value; name2=value2'.
--cookiejar=FILE Read cookies from a file.
PROXY:
--proxy <hostname[:port]> Set proxy hostname and port.
Default: 8080.
--proxy-user <username:password> Set proxy user and password.
PLUGINS:
--list-plugins, -l List all plugins.
--info-plugins, -I=[SEARCH] List all plugins with detailed information.
Optionally search with keywords in a comma
delimited list.
--search-plugins=STRING Search plugins for a keyword.
--plugins, -p=LIST Select plugins. LIST is a comma delimited set of
selected plugins. Default is all.
Each element can be a directory, file or plugin name and
can optionally have a modifier, eg. + or -
Examples: +/tmp/moo.rb,+/tmp/foo.rb
title,md5,+./plugins-disabled/
./plugins-disabled,-md5
-p + is a shortcut for -p +plugins-disabled.
--grep, -g=STRING|REGEXP Search for STRING or a Regular Expression. Shows
only the results that match.
Examples: --grep "hello"
--grep "/he[l]*o/"
--custom-plugin=DEFINITIONtDefine a custom plugin named Custom-Plugin,
--custom-plugin=DEFINITION Define a custom plugin named Custom-Plugin,
Examples: ":text=>'powered by abc'"
":version=>/powered[ ]?by ab[0-9]/"
":ghdb=>'intitle:abc "powered by abc"'"
":md5=>'8666257030b94d3bdb46e05945f60b42'"
--dorks=PLUGIN List Google dorks for the selected plugin.
OUTPUT:
--verbose, -v Verbose output includes plugin descriptions. Use twice
for debugging.
--colour,--color=WHEN control whether colour is used. WHEN may be `never',
`always', or `auto'.
--quiet, -q Do not display brief logging to STDOUT.
--no-errors Suppress error messages.
LOGGING:
--log-brief=FILE Log brief, one-line output.
--log-verbose=FILE Log verbose output.
--log-errors=FILE Log errors.
--log-xml=FILE Log XML format.
--log-json=FILE Log JSON format.
--log-sql=FILE Log SQL INSERT statements.
--log-sql-create=FILE Create SQL database tables.
--log-json-verbose=FILE Log JSON Verbose format.
--log-magictree=FILE Log MagicTree XML format.
--log-object=FILE Log Ruby object inspection format.
--log-mongo-database Name of the MongoDB database.
--log-mongo-collection Name of the MongoDB collection. Default: whatweb.
--log-mongo-host MongoDB hostname or IP address. Default: 0.0.0.0.
--log-mongo-username MongoDB username. Default: nil.
--log-mongo-password MongoDB password. Default: nil.
--log-elastic-index Name of the index to store results. Default: whatweb
--log-elastic-host Host:port of the elastic http interface. Default: 127.0.0.1:9200
PERFORMANCE & STABILITY:
--max-threads, -t Number of simultaneous threads. Default: 25.
--open-timeout Time in seconds. Default: 15.
--read-timeout Time in seconds. Default: 30.
--wait=SECONDS Wait SECONDS between connections.
This is useful when using a single thread.
HELP & MISCELLANEOUS:
--short-help Short usage help.
--help, -h Complete usage help.
--debug Raise errors in plugins.
--version Display version information. (WhatWeb 0.5.5).
EXAMPLE USAGE:
* Scan example.com.
./whatweb example.com
* Scan reddit.com slashdot.org with verbose plugin descriptions.
./whatweb -v reddit.com slashdot.org
* An aggressive scan of wired.com detects the exact version of WordPress.
./whatweb -a 3 www.wired.com
* Scan the local network quickly and suppress errors.
whatweb --no-errors 192.168.0.0/24
* Scan the local network for https websites.
whatweb --no-errors --url-prefix https:// 192.168.0.0/24
* Scan for crossdomain policies in the Alexa Top 1000.
./whatweb -i plugin-development/alexa-top-100.txt
--url-suffix /crossdomain.xml -p crossdomain_xml
다음 유형의 로깅이 지원됩니다.
여러 명령줄 로깅 옵션을 지정하여 동시에 여러 로그로 출력할 수 있습니다. SQL 출력을 원하는 고급 사용자는 소스 코드를 읽어 지원되지 않는 기능을 확인해야 합니다.
일치 항목은 다음과 같습니다.
지원되는 플러그인을 나열하려면:
$ ./whatweb -l
Plugin Name - Description
--------------------------------------------------------------------------------
1024-CMS - 1024 is one of a few CMS's leading the way with the implementation...
360-Web-Manager - 360-Web-Manager
3COM-NBX - 3COM NBX phone system. The NBX NetSet utility is a web interface i...
3dcart - 3dcart - The 3dcart Shopping Cart Software is a complete ecommerce s...
4D - 4D web application deployment server
4images - 4images is a powerful web-based image gallery management system. Fe...
... (truncated)
플러그인에 대한 자세한 내용을 보거나 키워드에 대한 플러그인을 검색하려면:
$ ./whatweb -I phpBB
WhatWeb Detailed Plugin List
Searching for phpBB
================================================================================
Plugin: phpBB
--------------------------------------------------------------------------------
Description: phpBB is a free forum
Website: http://phpbb.org/
Author: Andrew Horton
Version: 0.3
Features: [Yes] Pattern Matching (7)
[Yes] Version detection from pattern matching
[Yes] Function for passive matches
[Yes] Function for aggressive matches
[Yes] Google Dorks (1)
Google Dorks:
[1] "Powered by phpBB"
================================================================================
모든 플러그인은 기본적으로 로드됩니다.
플러그인은 -p 또는 --plugin 명령줄 옵션을 사용하여 쉼표로 구분된 목록으로 디렉터리, 파일 또는 플러그인 이름별로 선택할 수 있습니다.
각 목록 항목에는 수정자가 있을 수 있습니다. +는 전체 세트에 추가되고 - 전체 세트에서 제거되며 수정자는 기본값을 재정의하지 않습니다.
--dorks 명령줄 옵션은 선택한 플러그인에 대한 google dorks를 반환합니다. 예를 들어 --dorks wordpress는 "자랑스럽게 WordPress에 의해 구동됩니다"를 반환합니다.
--grep, -g 명령줄 옵션은 대상 페이지에서 선택한 문자열을 검색하고, 발견되면 Grep이라는 플러그인에서 일치 항목을 반환합니다.
WhatWeb에는 여러 수준의 공격성이 있습니다. 기본적으로 침략 수준은 단일 HTTP GET 요청을 보내고 리디렉션도 따르는 1(은밀함)로 설정됩니다.
--aggression, -a
1. Stealthy Makes one HTTP request per target. Also follows redirects.
2. Unused
3. Aggressive Can make a handful of HTTP requests per target. This triggers
aggressive plugins for targets only when those plugins are
identified with a level 1 request first.
4. Heavy Makes a lot of HTTP requests per target. Aggressive tests from
all plugins are used for all URLs.
레벨 3의 공격적인 플러그인은 더 많은 URL을 추측하고 허가 없이 잠재적으로 부적합한 작업을 수행합니다. WhatWeb은 현재 플러그인에서 침입/악용 수준 테스트를 지원하지 않습니다.
레벨 1의 은밀한 스캔을 통해 smartor.is-root.com/forum/이 phpBB 버전 2를 사용함을 식별합니다.
$ ./whatweb smartor.is-root.com/forum/
http://smartor.is-root.com/forum/ [200] PasswordField[password], HTTPServer[Apache/2.2.15], PoweredBy[phpBB], Apache[2.2.15], IP[88.198.177.36], phpBB[2], PHP[5.2.13], X-Powered-By[PHP/5.2.13], Cookies[phpbb2mysql_data,phpbb2mysql_sid], Title[Smartors Mods Forums - Reloaded], Country[GERMANY][DE]
레벨 3의 적극적인 검사는 웹 사이트가 phpBB 버전 2.0.20 이상을 사용하는지 식별하는 phpBB 플러그인에서 추가 테스트를 트리거합니다.
$ ./whatweb -p plugins/phpbb.rb -a 3 smartor.is-root.com/forum/
http://smartor.is-root.com/forum/ [200] phpBB[2,>2.0.20]
phpBB 플러그인만 선택하려면 -p 인수를 사용하십시오. 공격적 모드에서 소프트웨어 버전을 지문 인식할 때 특정 플러그인을 선택하는 것이 좋지만 필수는 아닙니다. 이 접근 방식은 요청 수를 제한하므로 훨씬 더 은밀합니다.
WhatWeb에는 캐싱이 없으므로 URL 리디렉션에 공격적인 플러그인을 사용하면 동일한 파일을 여러 번 가져올 수 있습니다.
WhatWeb에는 성능과 안정성을 높이는 여러 가지 옵션이 있습니다.
--wait 및 --max-threads 명령을 사용하여 IDS 회피를 지원할 수 있습니다.
-U 또는 --user-agent 명령줄 옵션을 사용하여 user-agent를 변경하면 WhatWeb에 대한 Snort IDS 규칙이 방지됩니다.
IP 주소 범위를 스캔하는 경우 Massscan과 같은 포트 스캐너를 사용하여 WhatWeb으로 스캔하기 전에 포트 80이 열려 있는지 찾는 것이 훨씬 더 효율적입니다.
Charset 플러그인을 사용한 문자 세트 감지는 더 많은 CPU를 요구하여 성능을 크게 저하시킵니다. 이는 JSON 및 MongoDB 로깅에 필요합니다.
MongoDB 로깅을 활성화하려면 mongo gem을 설치하세요. 보석 설치 몽고
문자 집합 감지 및 MongoDB 로깅을 활성화하려면 rchardet gem을 설치하세요. 보석 설치 rchardet cp 플러그인-비활성화/charset.rb my-plugins/
플러그인은 작성하기 쉽습니다. my-plugins/ 폴더에 있는 플러그인 튜토리얼부터 시작해 보세요.
플러그인 튜토리얼의 개요는 여기에 있습니다. 플러그인-tutorials.txt
튜토리얼을 진행한 후 Wiki의 개발 섹션을 읽어보세요.
WhatWeb 개발 빌드에는 정기적인 업데이트가 포함되어 있습니다.
더 많은 문서와 고급 사용 기술을 보려면 위키를 찾아보세요.
WhatWeb에 기여해 주신 다음 분들께 감사드립니다.
WhatWeb에 기여한 모든 사람들을 추적하는 것은 어렵습니다. 이름이 누락된 경우 알려 주시기 바랍니다.