wscan.py - headscanner

Discussion in 'PHP' started by cr0w, 14 Nov 2009.

  1. cr0w

    cr0w Elder - Старейшина

    Joined:
    11 Sep 2008
    Messages:
    92
    Likes Received:
    141
    Reputations:
    33
    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 ]


    --

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

    Attached Files:

    #1 cr0w, 14 Nov 2009
    Last edited: 20 Nov 2009
    17 people like this.
  2. gisTy

    gisTy Elder - Старейшина

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    за старания +
    меня другое интересует. вот если тебя в лоа например вощьмут ты себе птичку на аватарке в белый цвет покрасишь?:)
     
  3. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    нет не курит и не нервно.ыыы
    1. Сканер в будущем перепишу на с++
    2. Хотелось бы посмотреть на базу ТС, наверняка она МОЯ + несколько дополнений.
     
    2 people like this.
  4. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    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.
    
     
  5. cr0w

    cr0w Elder - Старейшина

    Joined:
    11 Sep 2008
    Messages:
    92
    Likes Received:
    141
    Reputations:
    33
    login999

    Спасиб. Перезалил как txt.
    Но ты его все равно уже видел. :)
     
    1 person likes this.
  6. (Dm)

    (Dm) Elder - Старейшина

    Joined:
    8 Apr 2008
    Messages:
    261
    Likes Received:
    440
    Reputations:
    275
    Выкладываю словарик sub доменов, собранный вот таким способом
    http://ha.ckers.org/fierce/

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

    Attached Files:

    #6 (Dm), 16 Nov 2009
    Last edited: 17 Nov 2009
    1 person likes this.
  7. (Dm)

    (Dm) Elder - Старейшина

    Joined:
    8 Apr 2008
    Messages:
    261
    Likes Received:
    440
    Reputations:
    275
    Что-то с выводом. приатачил. в словаре, разделение строк \r\n
    PS и как несколько словарей сразу использовать?
     

    Attached Files:

    • bug.png
      bug.png
      File size:
      13.6 KB
      Views:
      808
  8. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Мб возьмеш лучше мой перепишешь ?
    Я то на него забил ввиду его непопулярности.
     
  9. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    База директорий из DirBuster'a
    http://dl.dropbox.com/u/2955294/dirs_list.tar.gz
     
    #9 shellz[21h], 21 Nov 2009
    Last edited: 21 Nov 2009
    2 people like this.
  10. cr0w

    cr0w Elder - Старейшина

    Joined:
    11 Sep 2008
    Messages:
    92
    Likes Received:
    141
    Reputations:
    33
    (Dm)

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

    login999

    Неа.

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

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

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    Подправил пост выше.