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
Хм, тут вроде только либы нужны. IO::Socket::SSL, который юзает Net::SSLeay Правда я хз, как там в активперле.