HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.12.2019, 19:47
CYBRED
Новичок
Регистрация: 01.12.2019
Сообщений: 10
Провел на форуме:
2330

Репутация: 0
По умолчанию



Межсайтовый скриптинг (XSS) - одна из самых распространенных уязвимостей, которую можно обнаружить чуть ли не на любом сайте в сети интернет (на некоторых, вроде Google и Amazon, придется хорошо поискать - в этих компаниях работают много разработчиков с большим опытом за плечами). Однако, иногда возникают проблемы - например, проблема в количестве символов, которое мы можем ввести, для эксплуатации данной уязвимости. В этом посте мы рассмотрим, как можно решить такую проблему, уложившись, например, лишь в 20 символов.

Совместимость с юникодом

В Unicode одни и те же сложные буквы, вроде Й, Ё, Ç и т.д., можно представить в двух формах - в виде одной буквы или в виде одной базовой буквы (например, «C») и модификаторов. Такой подход был введен в стандарт для обеспечения совместимости с существующими ранее стандартными наборами символов. Таким образом, стандарт нормализации Unicode описывает два вида отношений между символами: Canonical и Compatibility.

Каноническая эквивалентность предполагает, что последовательность двух кодовых пунктов является полностью взаимозаменяемой. Т.е., комбинация из двух символов может быть канонически эквивалентна одному символу - n (маленькая латинская "n" - U+006E) + ◌̃ (тильда - U+0303) = ñ (маленькая латинская "ñ" - U + 00F1).

Совместимая эквивалентность предполагает, что две совместимые последовательности кодовых пунктов выглядят по-разному, но в некоторых ситуациях могут быть взаимозаменяемыми. Например, два латинских символа f, т.е. "ff" (U + 0066 U + 0066), имеют эквивалент одному символу "ff" (U+FB00), но не всегда. По сути, мы видим один и тот же текст, однако последовательность символов не является строго эквивалентной (до тех пор, пока мы не проведем нормализацию).




Проблема с лимитом ввода в 20 символов

Итак, мы нашли уязвимый сайт. Наш пейлоад выглядит так:

HTML:


Код:

Это то, что мы смогли сделать, имея лимит в 20 символов - остальная часть, что бы мы не вводили, обрезается. Таким образом, мы имеем проблему, ведь "alert" - это не серьезно, мы же просто выведем пустое сообщение на экран. Подгрузка скрипта со своего домена (в обход CORS, конечно же) была бы идеальной и дала бы нам гораздо больше преимуществ для подготовки более сложной атаки.


Особенности Unicode в браузерах

Не для кого не секрет, что в современных браузерах нет никаких проблем с кодировками, как это было раньше. А это значит, что нам ничего не помешает реализовать нашу шалость.

Рассмотрим следующий пейлоад:

HTML:


Код:

Попробуйте скопировать символы, находящиеся между слезшем и точкой. Заметили? В примере выше, "ff" - это один символ, однако выглядит он как две латинских "f". В таком случае, браузер поведет себя так - он просто интерпретирует "ff" как два символа. Это дает нам огромное преимущество.

Вот ещё примеры символов, которые мы можем использовать:
  • ff экивалентен ff
  • ℠ экивалентен sm
  • ㏛ экивалентен sr
  • st экивалентен st
  • ㎭ экивалентен rad
  • ℡ экивалентен tel
Ещё не все! Больше таких символов можно найти тут.



Реализация

Давайте купим домен telsr.pw.




Как видите, стоит он не дорого - всего 1.28$.

Если мы будем использовать в нашем пейлоаде только стандартные символы, получится, что мы превысим допустимый лимит в 20 символов.




Заменим их на эквиваленты:



HTML:


Код:

Кажется, мы добились поставленной задачи.




Дальнейшие шаги

Выглядит отлично, но мы не учли одну деталь - если на уязвимом сайте будет использоваться HTTPS-протокол, то при импорте любого скрипта, он будет подружаться по этому же протоколу.

Я задумал реализовать DNS-редирект с telsr.pw на xsshunter.com.

И тут появляется ещё одна проблема - так как используется протокол HTTPS, если мы выполним перенаправление при помощи DNS на другой сайт, произойдет несоответствие сертификата, и файл Javascript не будет загружен.




Решается такая проблема следующим образом:
  1. Покупаем хостинг для нашего домена, я использую namecheap.com за 1.44$/месяц.
  2. Выпускаем для него HTTPS сертификат (бесплатно от Let's Encrypt)
  3. Загружаем простой HTML-файл c соответствующим мета тегом для редиректа, либо пишем PHP-скрипт, либо используем .htaccess. Тут уже дело вкуса. Объяснять, как это делается, я не буду - все гуглится одной строчкой, реализация аналогична.
4. Из - за того, что мы уже не используем DNS-редирект, XSS успешно эксплуатируется.



 
Ответить с цитированием

  #2  
Старый 03.12.2019, 00:16
WhiteHacK
Новичок
Регистрация: 13.09.2019
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

Капец, если бы я знал как решить эту проблему с сертификатом еще три года тому назад, когда я впервые с ней столкнулся

Ну а если по существу то примного благодарен за статью, очень полезно!
 
Ответить с цитированием

  #3  
Старый 03.12.2019, 01:52
memad17
Новичок
Регистрация: 27.11.2019
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

Есть у кого лист юников для домена ?
 
Ответить с цитированием

  #4  
Старый 03.12.2019, 03:57
larchik
Новичок
Регистрация: 07.06.2019
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

Спасибо за статью! )

Про
Код:
ffff
не знал, пиши еще ))
 
Ответить с цитированием

  #5  
Старый 03.12.2019, 11:40
JIBRIL
Новичок
Регистрация: 02.12.2019
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

Спасибо статейка вышла на славу
 
Ответить с цитированием

  #6  
Старый 05.12.2019, 01:44
Aleks Binakril
Новичок
Регистрация: 04.12.2019
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

прочитал вашу статью и появился вопрос, а возможны ли коллизии, как с мд5 в в этих цифровых сертификатах или нет?
 
Ответить с цитированием

  #7  
Старый 10.12.2019, 19:40
Aleks Binakril
Новичок
Регистрация: 04.12.2019
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

весьма странно что автор пропал - на вопросы не отвечает?
 
Ответить с цитированием

  #8  
Старый 13.12.2019, 21:33
☠xrahitel☠
Новичок
Регистрация: 09.12.2016
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

Цитата:

Aleks Binakril сказал(а):

весьма странно что автор пропал - на вопросы не отвечает?

не чего странного статья не его так понимаю тыц
 
Ответить с цитированием

  #9  
Старый 13.12.2019, 22:09
Aleks Binakril
Новичок
Регистрация: 04.12.2019
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

☠xrahitel☠,о благодарю за первоисточник
 
Ответить с цитированием

  #10  
Старый 28.12.2019, 17:15
OBLIVIONNN
Новичок
Регистрация: 22.08.2017
Сообщений: 0
Провел на форуме:
0

Репутация: 0
По умолчанию

Цитата:

CYBRED сказал(а):

Подгрузка скрипта со своего домена (в обход CORS, конечно же)

Можно тут поподробнее. Как обходить CORS при выполнений AJAX запросов ?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.