GST Scaner. Сканер веб-уязвимостей от меня

Discussion in 'Избранное' started by Gh0s7, 16 Apr 2007.

  1. Gh0s7

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

    Joined:
    23 Nov 2006
    Messages:
    160
    Likes Received:
    231
    Reputations:
    242
    GST Scan [ Beta Version ]​


    [ I Intro ]

    Относительно недавно мне пришла в голову мысль написать сканер веб-уязвимостей.
    Хотелось сделать что-то интересное, именно как свой релиз. Вот и сделал - GST Scan. Этот сканер сканирует скрипты на наличие RFI, XSS, SQl-Inj уязвимостей.
    Также в нем есть функция HEAD скана и reverse ip lookup.

    [ II Type of bugs ]


    Теперь подробней:
    • HEAD Scan. Сделаю лирическое отступление, расскажу про метод хттп протокола HEAD. По стандарту, HEAD полностью идентичен GET, сервер _обязан_ отвечать на HEAD запрос, так же как и на GET. С одним отличием: не остылая содержимое страницы. Кому-то это может показаться ненужным\непонятным. Поясню - на HEAD запрос сервер отсылает только заголовки, это может оказать полезным при проверки наличия файлов (как это сделано в даунлоад-менеджере wget (опция --spider)). Также и тут.
      Скрипт анализирует первую строку ответа и в случае присутсствия файла сообщает об этом. Также я добавил небольшую фичу - пробный запрос.
      Некоторые админы (может из соображений безопасности, может просто по криворукости) настраивают хттпд так, чтобы он отвечал другим кодом, например, 203, или, что еще хуже, 200. Для проверки кода я и добавил в скрипт возможность пробного запроса.

    • Reverse Ip Lookup. DNS\IP lookup впервые описал NSD во всем известом хеккерском жрунале. Суть этой атаки заключается в том, что на одном сервере\vds может находиться несколько сайтов.
      Следовательно не обязательно взламывать конкретный сайт, можно взломать любой из них, и, в случае возможности выполняния команд и уязвимого ядра, можно порутать сервер и слить инфу с нужного сайта.

      Т.к сервис DomainsDB в момент написания сканеры был под ддосом, я использовал другую базу - seologs.com.

    • Remote File Inclusion, сокращенно rfi - давно известный тип уязвимостей, позволяет выполнять произвольные php-скрипты (только если загрузка из url не запрещена в php.ini). Чаще всего присутствует при использовании функции include().
      Метод, используемый в сканере я частично взял из доки KSURi 'Автоматический поиск rfi' (метод, не код).
      Также я добавил несколько дополнительный проверок на пхп баги.

    • Cross Site Scripting, в народе хсс, наверно еще более древний тип уязвимостей, очень простой, оттого популярный среди начинающих. Его суть заключается в вставке произвольного html-кода (чаще всего javascript) в страницу, просматриваемую пользователем.
      Проверка этой уязвимости очень проста - если код присутствует на странице (не обязательно он должен выполняться, иногда мешают теги типа <textarea> ( Что, собственно и было на сайте античата )).
      В скрипт я добавил несколько видов кодирования xss: url-encoding, html-encoding.

    • SQL-Inj. Наврно, самый интересный (имхо) тип уязвимостей. Следовательно, проверко ее наличия достаточно сложна, особенно это относится к blind sql inj.
      Но в случае вывода ошибок достаточно просто подставить некорректное значение к запросу, что приведет с мату со стороны mysqld, который мы, собственно, и ищем.
    [ III Usage ]
    Вот мы и подошли к теме использования скрипта.
    Для начала приведу тут хелп:

    Code:
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
                                    GST Bugz Scaner beTTa
                                                                               [c]ode by Gh0s7
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
     Functions:
     [+] HEAD File Scan    [ 1 ]   Scans server for files and dirs like /admin/ /install/ etc..
     [+] DomainsDB Lookup  [ 2 ]   Reverse ip lookup scan using domainsdb.net
     [+] XSS GET Scan      [ 3 ]   Scan for XSS bugs
     [+] PHP RFI Scan      [ 4 ]   PHP Remote File Inclusion scan
     [+] SQL-Inj Scan      [ 5 ]   SQL-Injection scan
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    
     Options:
     --type TYPE See functions  | --host HOST target host   | --port PORT target port
     --path PATH path to script | --arg ARG Target argument | --cookie FILE Cookie file
     --timeout SEC Conn Timeout | --xsspayload STR xss code | --phppayload URL Url to php payload
     --https Enable Https
     Cookie file format: Cook_Name::Cookie_data
    
     Examples:
     $ gst_scan.pl --type 1 --host vpupkin.net --path /
     $ gst_scan.pl --type 5 --host vpupkin.gov.no --port 88 --path /1337/index.php? --arg id
     $ gst_scan.pl --type 3 --host hackme.ru --path /admin/login.php? --arg login
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    
    Скорее всего, большинство должно быть и так понятно. На всякий случай поясню на примерах:

    Code:
    $ ./gst_scan.pl --type 1 --host vpupkin.gov.no --path /
    
    В этом случае используется HEAD скан, для которого обязательна опция пути.

    Code:
    $ ./gst_scan.pl --type 2 --host nas.ru
    
    В случае RIL скана нужен только хост.
    Для остальных типов: всегда обязателен хост.
    Для HEAD скана также нужен путь. Для rfi/sql/xss еще необходим параметр. Например у nas.su/admin/login.php?login=TESTING, параметром будет login.

    Путь должен задаваться вплоть до параметра, включая '?'
    Это помогает избежать проблем при передачи нескольких аргументов скрипту.

    Формат config.txt:
    • строки, начинающиеся с # считаются комментриями и не парсятся.
    • Разделитель - ::
    Например:

    Code:
    # GST Scan Config file
    port::80
    phpPayload::http://gst-phppayload.narod.ru/payload.txt
    timeout::0
    
    Формат файла Cookie:
    Code:
    Cookie_Name::Cookie_Val
    [ IV Notes ]
    Тут хотелось бы высказаться относительно кода.
    -----
    Если вы можете написать что-то лучше - я за вас рад.
    Я не претендую на звания атца perl, а свой скрипт не называю супер-релизом и не утверждаю, что все остальные - ничто.

    Не надо говорить, что какие-то функции в сканере не нужны\бесполезны - в дальнейшем я очень хочу автоматизировать весь скан, поэтому они всеравно пригодятся.
    [ V Outro ]

    Скачать все можно тут.
    В скрипте используются модули IO::Socket & IO::Socket::SSL & Net::SSLay. Чаще всего они пристутствуют в дистрах по умолчанию, если нет, то их можно скачать на search.cpan.org

    ---------------------

    Если вам есть что дополнить, исправить - пишите в пм. Буду рад выслушать. Если хотите критиковать код - критикуйте в пм, но 'критикуя - предлогай'. Если будут вопросы по скрипту - все так же в пм.

    ---------------------

    Greetz to: # [sL1p] (отдельное спасибо за название и bugoga.exe ))
    BSA, Eliziym, Гритз моему другу Максу.
    Отдельный превет KSURi :)
    Также гритз всему лит-составу ачата)
    За саб parseRegEx, метр перл философии на тему голодных детей в африке, и килограмм грибов огромное спасибо br'у.

    Gh0s7
     
  2. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    дайте кто нить ссылку на нормальный актив перл....
     
  3. Gh0s7

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

    Joined:
    23 Nov 2006
    Messages:
    160
    Likes Received:
    231
    Reputations:
    242
    Хм, тут вроде только либы нужны.
    IO::Socket::SSL, который юзает Net::SSLeay

    Правда я хз, как там в активперле.
     
    1 person likes this.
  4. m0nzt3r

    m0nzt3r моня

    Joined:
    22 Jun 2004
    Messages:
    2,096
    Likes Received:
    673
    Reputations:
    591
    http://search.cpan.org/author/SULLR/IO-Socket-SSL-1.04/SSL.pm
     
  5. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Code:
    perl -MCPAN -e "install IO::Socket::SSL"
    
     
  6. DarkMist

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

    Joined:
    20 Feb 2007
    Messages:
    201
    Likes Received:
    24
    Reputations:
    0
    перезалить бы не помешало...