wscan.py v.0.2 - http head-scanner
Вобщем, это тулза из разряда "head-scanners", предназначенная для поиска ресурсов сайта, таких как файлы, каталоги и субдомены, методом брутфорса по словарю.
Писал его изначально для себя, т.к. существующие head-сканеры на мой взгляд либо излишне тяжелы, либо недостаточно функциональны. Мне хотелось сделать такую тулзу как можно более простой и, при этом, достаточно универсальной.
Описание ver.0.1:
- написан на python 2.x;
- консольный;
- небольшого размера;
- многопоточный;
- поддреживает SSL;
- умеет искать субдомены;
- можно указать дополнительные отправляемые HTTP-заголовки (Cookies, Basic-auth, etc), поместив их в файл;
- возможно отсеять ответы сервера на неверные запросы по шаблону, в случае если их response status code != 404;
- можно использовать метод GET;
- есть вспомогательный режим тестирования.
Добавлено в ver.0.2:
- режим медленного сканирования с возможностью установки интервала между посылкой запросов;
- возможность указать несколько шаблонов для отсева неверных ответов;
- возможность указать response status codes, на которые не следует реагировать, дополнительно к 404;
- возможность передачи нескольких файлов с базами в парамтре -f;
- остановка работы скрипта при нажатии Ctrl-C.
Как его использовать:
Для начала посмотрим "usage":
Код:
C:\Users\cr0w>wscan
wscan v.0.2 usage:
wscan.py http[s]://site.com[:port] [-s] [-t] [-g] [-p "pattern1|pattern2|...|patternN"] [-
f list.txt|...|listN.txt] [-l log.txt] [-h headers.txt] [-n 50] [-i 5] [-b "403|XXX"]
Опции:
-t Режим тестирования
-s Режим поиска субдоменов
-g Использовать GET-запросы
-f Файлы с директориями/файлами или субдоменами
По умолчанию list.txt или subdomains.txt
-l Лог-файл (scanlog.txt по умолчанию)
-n Число потоков (50 по умолчанию)
-h Файл с посылаемыми заголовками
-p Шаблоны для фильтрации неверных ответов сервера
-i Режим медленного сканирования
Необходимо указать интервал между отправкой запросов серверу
-b Ответы сервера которые следует игнорировать наряду с 404
[!] Error: wrong URL
Параметров немало, но обычно требуется указать только несколько. (;
Итак, для начала берем базу с директориями/файлами или с субдоменами.
Если на сайте необходима авторизация по cookie или basic-auth, или нужны еще какие-то http-заголовки, просто пишем их в файл headers.txt (или в любой другой, а затем укзываем его в параметре -h при запуске).
Прежде чем начать сканирование, запускаем скрипт в режиме тестирования (опция -t).
В режиме тестирования делается 2-3 запроса: верный (обращение к субдомену "www" или к дире "/", в зависимости от режима) и неверный (обращение к заведомо несуществующему каталогу, файлу или субдомену), после чего выводятся ответы вебсервера в виде HTTP заголовков (и html-кода при использовании GET), которые были расценены данным скриптом как удачные.
Если вывелся только ответ на верный запрос, то все ОК, можно запускать сканирование. Пример:
Код:
C:\Users\cr0w>wscan http://mail.ru -t
[~] Test request: mail.ru/
200 OK
content-length: 96858
set-cookie: Mpopl=1923335557; expires=Sun, 15 Nov 2009 10:55:38 GMT; path=/; domain=.mail.
ru, mrcu=BFB54AFFDAA62F918FB40E844B4D; expires=Wed, 13 Nov 2019 10:40:38 GMT; path=/; doma
in=.mail.ru
expires: Sat, 15 Nov 2008 10:40:38 GMT
server: Apache/1.3.27 (Unix) mru_xml/0.471 gorgona/2.1 mod_jk/1.2.4 mod_ruby/1.0.7 Ruby/1.
6.8 mod_mrim/0.17
last-modified: Sun, 15 Nov 2009 13:40:38 GMT
connection: close
pragma: no-cache
cache-control: no-cache,no-store,must-revalidate
date: Sun, 15 Nov 2009 10:40:38 GMT
content-type: text/html; charset=windows-1251
[+] / [200] OK
[~] End of test
C:\Users\cr0w>wscan http://mail.ru
[+] /all/ [200] OK
[+] /mail/ [302] OK
[+] /error/ [200] OK
[+] /cgi-bin/ [302] OK
Если выводится еще и ответ на неверный запрос, то следует использовать шаблон (опция -p), содержащий текст который присутствует только в ответах веб-сервера при обращении к несуществующим ресурсам. Пример:
Код:
C:\Users\cr0w>wscan http://pochta.ru -s -t
[~] sdfghdt9834592.pochta.ru
[~] Test request: www.pochta.ru
200 OK
x-powered-by: pochta.ru/2.2.18958
set-cookie: lang=ru; expires=Sat, 15-May-2010 21:48:29 GMT; path=/, skin=pochta_ru; expire
s=Sat, 15-May-2010 21:48:29 GMT; path=/
expires: Thu, 01 Jan 1970 00:00:01 GMT
server: nginx/0.7.62
last-modified: Mon, 16 Nov 2009 21:48:29 GMT
connection: close
date: Mon, 16 Nov 2009 21:48:29 GMT
content-type: text/html; charset=windows-1251
[+] www.pochta.ru [200] OK
[~] Test request: sdfghdt9834592.pochta.ru
302 Moved Temporarily
date: Mon, 16 Nov 2009 21:45:58 GMT
connection: keep-alive
content-type: text/html
location: http://static.pochta.ru/404.html
server: nginx/0.7.62
[+] sdfghdt9834592.pochta.ru [302] Moved Temporarily
[~] End of test
C:\Users\cr0w>wscan http://pochta.ru -s -t -p "404.html"
[~] sdfghdt9834592.pochta.ru
[~] Test request: www.pochta.ru
200 OK
x-powered-by: pochta.ru/2.2.18958
set-cookie: lang=ru; expires=Sat, 15-May-2010 21:50:19 GMT; path=/, skin=pochta_ru; expire
s=Sat, 15-May-2010 21:50:19 GMT; path=/
expires: Thu, 01 Jan 1970 00:00:01 GMT
server: nginx/0.7.62
last-modified: Mon, 16 Nov 2009 21:50:19 GMT
connection: close
date: Mon, 16 Nov 2009 21:50:19 GMT
content-type: text/html; charset=windows-1251
[+] www.pochta.ru [200] OK
[~] End of test
C:\Users\cr0w>wscan http://pochta.ru -s -p "404.html"
[+] 01.pochta.ru [200] OK
[+] 13.pochta.ru [200] OK
[+] 5.pochta.ru [200] OK
[+] 7.pochta.ru [200] OK
[+] a.pochta.ru [200] OK
[+] a3.pochta.ru [200] OK
[+] a7.pochta.ru [200] OK
[+] aa.pochta.ru [200] OK
[+] abc.pochta.ru [200] OK
[+] adam.pochta.ru [200] OK
[+] admins.pochta.ru [302] Moved Temporarily
[+] adv.pochta.ru [200] OK
[!] wscan was stoped by user
Если по заголовкам невозможно выделить такой шаблон, то используем сканирование методом GET (опция -g).
Опять запускаем в режиме тестирования с опцией -g скрипт и выделяем шаблон по которму скрипт будет определять неверные ответы из html-тела документа.
С остальными опциями разберетесь без проблем. (:
---
Скачать базы (список будет обновляться и дополняться):
База директорий 1
База субдоменов [ thnx 2 (Dm) ]
База путей к админкам [ thnx 2 Ded MustD!e ]
База путей к phpMyAdmin [ thnx 2 ettee ]
--
Сообщения о багах и пожелания по улучшению
приветствуются.