PDA

Просмотр полной версии : wscan.py - headscanner


cr0w
14.11.2009, 21:44
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 (http://wsec.ru/downloads/dirs1.zip)
База субдоменов [ thnx 2 (Dm) ] (http://wsec.ru/downloads/subdomains1.zip)
База путей к админкам [ thnx 2 Ded MustD!e ] (http://wsec.ru/downloads/admin1.zip)
База путей к phpMyAdmin [ thnx 2 ettee ] (http://wsec.ru/downloads/phpmyadmin.zip)

--

Сообщения о багах и пожелания по улучшению приветствуются.

m0Hze
14.11.2009, 22:13
Наконец кто то написал многопоточный хеад-сканер.Молодец,+ не могу,слишком много выставил за сутки.Крист_алл курит в сторонке,нервно.
Что тут скажеш,молодчина,продолжай в том же духе.
Однозначно +.
/*Сам не пользуюсь,но людям пригодиться*/

gisTy
15.11.2009, 06:52
за старания +
меня другое интересует. вот если тебя в лоа например вощьмут ты себе птичку на аватарке в белый цвет покрасишь?:)

Krist_ALL
15.11.2009, 11:56
.Крист_алл курит в сторонке,нервно.
нет не курит и не нервно.ыыы
1. Сканер в будущем перепишу на с++
2. Хотелось бы посмотреть на базу ТС, наверняка она МОЯ + несколько дополнений.

rushter
15.11.2009, 13:25
нет не курит и не нервно.ыыы
1. Сканер в будущем перепишу на с++
2. Хотелось бы посмотреть на базу ТС, наверняка она МОЯ + несколько дополнений.
Этот скрипт написан раньше чем твой,+ база ни разу не твоя в твоём скрипте.

login999
15.11.2009, 14:50
Ubuntu 9.10
File Roller 2.28.1

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.

cr0w
15.11.2009, 15:01
login999

Спасиб. Перезалил как txt.
Но ты его все равно уже видел. (:

(Dm)
17.11.2009, 00:53
Выкладываю словарик sub доменов, собранный вот таким способом
http://ha.ckers.org/fierce/

PS у кого какие словари есть, субдомены, админки, phpmyadmin.. Либо замечания, предложения стукните в ПМ

(Dm)
21.11.2009, 05:41
Что-то с выводом. приатачил. в словаре, разделение строк \r\n
PS и как несколько словарей сразу использовать?

login999
21.11.2009, 12:29
Сообщения о багах и пожелания по улучшению приветствуются.
Мб возьмеш лучше мой перепишешь ?
Я то на него забил ввиду его непопулярности.

shellz[21h]
21.11.2009, 14:24
База директорий из DirBuster'a
http://dl.dropbox.com/u/2955294/dirs_list.tar.gz

cr0w
21.11.2009, 19:54
(Dm)

В след. версии поправлю, чтоб все красиво выводилось. Про несколько файлов в пм отписал.

login999

Неа.

shellz[21h] и все, кто будет выкладывать базы

Cпасибо, только большая просьба - пишите откуда база (собрал_сам/из_такой-то_тулзы/ не_знаю_откуда/и т.д.).

shellz[21h]
21.11.2009, 20:02
пишите откуда база (собрал_сам/из_такой-то_тулзы/ не_знаю_откуда/и т.д.).
Подправил пост выше.