SITE LOGO
Меню сайта
Категории каталога
Кодинг новичкам [11]
Кодинг в интернете [1]
Локальный кодинг [0]
Прочее [0]
Наш опрос
Какой операционной системой вы пользуетесь

[ Результаты · Архив опросов ]

Всего ответов: 131
Главная » Файлы » Програмирование » Кодинг новичкам

Ищем XSS в get vars? Бог и Perl в помощь!
[ ] 2006-11-06, 10:12 PM

Приветствую читателей.
Статья будет короткой, но полезной.
Часто, читая багтрак,
я вижу, что в веб-движках преобладают XSS
(CSS) уязвимости. Как-то открыв ][хакер,
я прочитал, что XSS - одна из самых распространенных
уязвимостей. Но искать их - долго и нудно. Как
облегчить себе участь? Это вопрос. С помощью Perl.
Это ответ. Сейчас мы напишем сканер, который будет
искать XSS-ки в GET-переменных. Как он будет работать?
Сканеру будут передаваться 4 параметра: URL сервера
(с префиксом http://), путь к скрипту (если скрипт
в корне, то просто /), название удаленного скрипта и
файл, в котором прописаны GET-переменные (1 переменная
на строку, а поискать эти переменные придется "ручками",
т.е. самим с помощью браузера). Наш сканер, используя
модуль LWP (рулезная вещь для работы с WEB) будет
изменять значения GET-переменных на текст, позволяющий
выявить XSS. В случае удачи он будет сообщать названия
переменных и показывать полные запросы к скрипту. Но
довольно теории - идем в практику!

#!/usr/bin/perl
#5p4x2knet's CSS scanner (for GET variables)
#only for article
#ну вот, когда формальности соблюдены, займемся делом =))
use LWP::Simple; #подключаем LWP
if(@ARGV != 4) #если количество параметров не в норме
{
die "Use: n
script_name url(with_"http://") path remote_script_name file_with_GET_variablesn
for example: n
xss.pl victim.gov / index.php vars.txt n
file with variables:n
one variable = one stringnnnnnn";
#говорим, как надо делать, затем выходим
}
$url = $ARGV[0].$ARGV[1].$ARGV[2]; #полный адрес скрипта
open(FILE, "; #в массив его
close(FILE); #закрываем
print "$url ...n vullnerability:nn"; #это просто любезность =)
foreach $line(@gets) #создаем цикл Foreach
{
$line =~ s/n//; #убираем из GET-переменных переводы строки
$line =~ s/ //; #и пробелы (позже я узнал, что есть такая штука, как chomp=))
$req = get "$url?$line=x55, x55, x55!0ur 5c4nn3r c001";
#подставляем в переменную строку, которая поможет узнать, уязвима ли
#переменная, но подставляем такую строку, которую ни один нормальный
#админ не напишет в трезвом виде =)))
if($req =~ /x55, x55, x55!0ur 5c4nn3r c001/i) #если уязвимость есть
{
print "$line ($url?$line=x55, x55, x55!0ur 5c4nn3r c001)n";
#выводим название переменной, а также сделанный запрос
}
}
print "Done n"; #сообщаем о конце сканирования

На портале статья отобразилась косячно, сделай вот что:
на 9-й строке поставь обратные слеши перед кавычками, будут еще баги - исправляй, ошибки при компиляции/интерпретации
отлавливаются быстро. Надеюсь, ты также поймешь, где я писал n, а где хакзона убила бэкслеш в переводе строки =))))
Вот, мы написали этот сканер. Это делается очень легко, т.к. модуль LWP - очень хорошая вещь для веба; как вероятно заметил читатель, я использовал функцию get. Она получает код странички (слабо сделать "Наш ответ lynx"? =))), принимая в качестве аргумента URL. Что-нибудь вроде этого можно сделать и на сокетах (соединяться на 80-й порт, посылать запросы, обрабатывать ответ сервера...), но это сложно и совершенно нам не нужно. Ладно, до встречи в виртуальности, только не забывай, что я не несу никакой ответственности за твои исследования ;)

Категория: Кодинг новичкам | Добавил: bshack
Просмотров: 1174 | Загрузок: 0 | Комментарии: 2 | Рейтинг: 0.0/0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024Сайт управляется системой uCoz