PDA

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


Gh0s7
16.04.2007, 22:52
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 ]
Вот мы и подошли к теме использования скрипта.
Для начала приведу тут хелп:


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
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
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #


Скорее всего, большинство должно быть и так понятно. На всякий случай поясню на примерах:


$ ./gst_scan.pl --type 1 --host vpupkin.gov.no --path /


В этом случае используется HEAD скан, для которого обязательна опция пути.


$ ./gst_scan.pl --type 2 --host nas.ru


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

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

Формат config.txt:

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


# GST Scan Config file
port::80
phpPayload::http://gst-phppayload.narod.ru/payload.txt
timeout::0


Формат файла Cookie:
Cookie_Name::Cookie_Val

[ IV Notes ]
Тут хотелось бы высказаться относительно кода.
-----
Если вы можете написать что-то лучше - я за вас рад.
Я не претендую на звания атца perl, а свой скрипт не называю супер-релизом и не утверждаю, что все остальные - ничто.

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

Скачать все можно тут (http://gh0s7.jino-net.ru/GSTScan.tgz).
В скрипте используются модули IO::Socket & IO::Socket::SSL & Net::SSLay. Чаще всего они пристутствуют в дистрах по умолчанию, если нет, то их можно скачать на search.cpan.org

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

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

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

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

Gh0s7

guest3297
16.04.2007, 22:55
дайте кто нить ссылку на нормальный актив перл....
Can't locate IO/Socket/SSL.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at C:\Documents and Settings\root\╨рсюў
шщ ёЄюы\GSTScan\Gst_scan\gst_scan.pl line 7.
BEGIN failed--compilation aborted at C:\Documents and Settings\root\╨рсюўшщ ёЄюы\GSTScan\Gst_scan\gst_scan.pl line 7.

Gh0s7
16.04.2007, 22:59
']дайте кто нить ссылку на нормальный актив перл....

Хм, тут вроде только либы нужны.
IO::Socket::SSL, который юзает Net::SSLeay

Правда я хз, как там в активперле.

m0nzt3r
16.04.2007, 23:01
http://search.cpan.org/author/SULLR/IO-Socket-SSL-1.04/SSL.pm

KSURi
17.04.2007, 01:04
perl -MCPAN -e "install IO::Socket::SSL"