wscan.py - head-scanner 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": Code: 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), которые были расценены данным скриптом как удачные. Если вывелся только ответ на верный запрос, то все ОК, можно запускать сканирование. Пример: Code: 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), содержащий текст который присутствует только в ответах веб-сервера при обращении к несуществующим ресурсам. Пример: Code: 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/[COLOR=Red]404.html[/COLOR] server: nginx/0.7.62 [+] sdfghdt9834592.pochta.ru [302] Moved Temporarily [~] End of test C:\Users\cr0w>wscan http://pochta.ru -s -t -p "[COLOR=Red]404.html[/COLOR]" [~] 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 ] -- Сообщения о багах и пожелания по улучшению приветствуются.
за старания + меня другое интересует. вот если тебя в лоа например вощьмут ты себе птичку на аватарке в белый цвет покрасишь?
нет не курит и не нервно.ыыы 1. Сканер в будущем перепишу на с++ 2. Хотелось бы посмотреть на базу ТС, наверняка она МОЯ + несколько дополнений.
Ubuntu 9.10 File Roller 2.28.1 Code: Archive: /home/username/wscan.zip [/home/username/wscan.zip] End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive. zipinfo: cannot find zipfile directory in one of /home/username/wscan.zip or /home/username/wscan.zip.zip, and cannot find /home/username/wscan.zip.ZIP, period.
Выкладываю словарик sub доменов, собранный вот таким способом http://ha.ckers.org/fierce/ PS у кого какие словари есть, субдомены, админки, phpmyadmin.. Либо замечания, предложения стукните в ПМ
Что-то с выводом. приатачил. в словаре, разделение строк \r\n PS и как несколько словарей сразу использовать?
(Dm) В след. версии поправлю, чтоб все красиво выводилось. Про несколько файлов в пм отписал. login999 Неа. shellz[21h] и все, кто будет выкладывать базы Cпасибо, только большая просьба - пишите откуда база (собрал_сам/из_такой-то_тулзы/ не_знаю_откуда/и т.д.).