Вкуриваем QR. Как сделать QR-код с сюрпризом - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Наш опрос



Наши новости

      
      
  • 24 марта 2016, 16:20
5-08-2020, 20:00
Вкуриваем QR. Как сделать QR-код с сюрпризом - «Новости»
Рейтинг:
Категория: Новости

QR-код сейчас совершенно обыденная вещь — они встречаются повсюду, их используют как один из способов авторизации крупные сервисы вроде WhatsApp, Яндекса и AliExpress, встречаются QR-коды для подключения к Wi-Fi. Но насколько надежна эта технология? Можно ли создать такой QR-код, при сканировании которого выполнится нагрузка на девайсе жертвы? Этот вопрос мы сегодня разберем подробнее.

QR-код (англ. Quick Response Code — код быстрого реагирования) — это матричный или двумерный штрих-код, который может содержать до 4296 символов ASCII. То есть, проще говоря, картинка, в которой зашифрован текст.


История вектора атаки



В мае 2013 года специалисты компании по сетевой безопасности Lookout Mobile разработали специальные QR-коды, которые смогли скомпрометировать очки Google Glass. На тот момент очки сканировали все фотографии, «которые могут быть полезны их владельцу», — и предоставили взломщикам полный удаленный доступ к устройству. Исследователи сообщили в Google о данной уязвимости, и ее закрыли буквально за несколько недель. К счастью, исправить успели до того, как ее можно было использовать вне лаборатории, ведь взлом очков реального пользователя мог привести к большим проблемам.



В 2014 году программа Barcode Scanner для мобильных устройств из проекта ZXing практически не проверяла тип URI, передаваемый через QR-код. В результате любой эксплоит, который мог быть исполнен браузером (например, написанный на jаvascript), можно было передать через QR.



Сканер пытался отфильтровать опасные виды атак с помощью регулярных выражений, требуя, чтобы URI имел период с последующим продлением как минимум на два символа, транспортный протокол длиной не менее двух символов, за которым следует двоеточие, и чтобы в URI не было пробелов.



Если содержимому не соответствует хотя бы одному из требований, то оно определяется как обычный текст, а не URI. Этот механизм блокирует атаки вроде jаvascript;alert("You have won 1000 dollars! Just Click The Open Browser Button");, РЅРѕ, внеся пару простых изменений РІ РєРѕРґ, РјС‹ получаем вариант, который программа исполняла РІ браузере, ведь РѕРЅР° считала JS-РєРѕРґ обыкновенным, «нормальным» URI!



Вот как это выглядело.



Вариант кода, который блокировался защитным механизмом сканера
Вариант кода, который блокировался защитным механизмом сканера
Модифицированный URI, который программа не могла отфильтровать
Модифицированный URI, который программа не могла отфильтровать


Как мы можем увидеть, уведомление появилось в браузере, а значит, URI с потенциально вредоносным кодом был выполнен. Однако выполняется данный JS-код лишь тогда, когда пользователь нажимает Open Browser (то есть «Открыть в браузере»).



Еще РѕРґРёРЅ интересный пример РёР· 2012 РіРѕРґР°: эксперт РїРѕ информационной безопасности Равишанкар Боргаонкар (Ravishankar Borgaonkar) продемонстрировал, как сканирование простейшего QR может привести Рє форматированию устройств Samsung! Что Р¶Рµ было внутри? MMI-РєРѕРґ для СЃР±СЂРѕСЃР° РґРѕ заводских настроек: *2767*3855#, а также префикс tel: для совершения USSD-запроса.



Самое опасное здесь — что человек без предварительной подготовки не может узнать содержимое кода, не отсканировав его. А человек очень любопытен: в различных исследованиях большинство испытуемых (которые, кстати, даже не знали об эксперименте) сканировали QR-код именно из любопытства, забывая о собственной безопасности. Поэтому всегда будь внимателен!



WWW



Если Сѓ тебя нет сканера РєРѕРґРѕРІ, РЅРѕ СѓР№РјР° СЃРІРѕР±РѕРґРЅРѕРіРѕ времени — РјРѕР¶РЅРѕ попробовать расшифровать РєРѕРґ вручную. Р?нструкция есть РЅР° Хабре.





 

QRGen — каждому по коду



Для демонстрации средств работы с QR-кодами я буду использовать Kali Linux 2019.2 с установленным Python версии 3.7 — это необходимо для корректной работы утилит.




WARNING




Не забывай про уголовную ответственность за создание и распространение вредоносных программ, к которым в широком смысле относятся и наши «заряженные» QR-коды.






Начнем с утилиты QRGen, которая позволяет создавать QR-коды с закодированными в них скриптами. Эта утилита (и вектор атаки) направлена на проверку незащищенного и непопулярного ПО либо же узкоспециализированных инструментов вроде складских QR-сканеров, отправляющих SQL-запросы к базе данных компании. Большинство современных сканеров из соображений безопасности не выполняют находящийся в QR-коде скрипт.



Соответственно, вариантов развития событий после сканирования два: сканер просто выводит содержимое нашего изображения (что для нас совсем невыгодно) либо исполняет код, спрятанный в изображении, отправляя SQL-запрос к СУБД или Web API, чтобы хакер смог его захватить.



QRGen позволяет использовать готовые варианты либо задать их самому.



Устанавливаем QRGen, копируя репозиторий, и переходим в папку с содержимым.



git clone https://github.com/h0nus/QRGen
cd QRGen && ls


Вкуриваем QR. Как сделать QR-код с сюрпризом - «Новости»
INFO

QRGen требует Python версии 3.6 и выше. Если возникает ошибка, попробуй обновить интерпретатор.


Устанавливаем все зависимости и запускаем сам скрипт.



pip3 install -r requirements.txt
## или python3 -m pip install -r requirements.txt
python3 qrgen.py


Видим справку.



Справка QRGen

Аргумент -h выведет то Р¶Рµ самое, Р° РІРѕС‚ запуск СЃ ключом -l приведет к генерации QR-кодов из определенной категории. Всего их восемь.



  1. SQL-инъекции.

  2. XSS.

  3. Инъекции команд.

  4. QR с форматированной строкой.

  5. XXE.

  6. Фаззинг строк.

  7. SSI-инъекции.

  8. LFI или получение доступа к скрытым каталогам.


Возможные атаки



Теперь давай посмотрим на примеры из каждой категории, а также разберемся, какой урон и каким устройствам они могут нанести.



  1. 0'XOR(if(now()=sysdate(),sleep(6),0))XOR'Z

  2. <svg onload=alert(1)>

  3. cat /etc/passwd

  4. %d%d%d%d%d%d%d%d%d%d

  5. <!ENTITY % xxe SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd" >

  6. "A" x 33

  7. <pre><!--#exec cmd="ls" --></pre>

  8. ../../../../../../etc/passwd

Посмотреть текстовые файлы со всеми вариантами «начинки» QR-кодов ты можешь в папке words (РѕРЅРё разделены РїРѕ категориям, указанным выше).



Теперь пара слов о последствиях атак подобными нагрузками.



Первый класс атак — SQL-инъекции — используют при взломе БД и нарушении работы веб-сайтов. Например, запрос может вызывать зависание сайта.



Следующий пример (под номером 2) демонстрирует эксплуатацию XSS-уязвимости при атаке на веб-приложения с использованием SVG (Scalable Vector Graphic). К чему может привести XSS, ты, думаю, и без меня прекрасно знаешь, так что подробно на этом останавливаться не буду.



Третий РїСѓРЅРєС‚ выводит РЅР° экран жертвы содержимое файла /etc/passwd: список аккаунтов Linux-based-систем и дополнительную информацию о них (раньше — хеши паролей этих учетных записей). В подобных случаях обычно стараются получить /etc/shadow Рё конфигурацию сервера, РЅРѕ РІСЃРµ очень сильно зависит РѕС‚ цели, так что какие файлы читать — решай сам.



Четвертый пример представляет собой выражение, которое вызовет переполнение буфера (buffer overflow). Оно возникает, когда объем данных для записи или чтения больше, чем вмещает буфер, и способно вызвать аварийное завершение или зависание программы, ведущее к отказу в обслуживании (denial of service, DoS). Отдельные виды переполнений дают злоумышленнику возможность загрузить и выполнить произвольный машинный код от имени программы и с правами учетной записи, от которой она выполняется, что делает эту ошибку довольно опасной.



Пятый РїРѕ счету класс атак (XXE Injections) представляет СЃРѕР±РѕР№ вариант получения скрытой информации веб-сервера СЃ помощью анализа вывода XML-файлов. Конкретно РІ нашем примере РїСЂРё запросе Рє серверу тот ответит зашифрованным РІ Base64 содержимым файла /etc/passwd, который уже упоминался. Однако расшифровать его не составит труда — достаточно лишь воспользоваться встроенной в большинство дистрибутивов Linux утилитой base64 либо Р¶Рµ онлайн-конвертером.



Атаки форматной строки (пример 6) — это класс уязвимостей, который включает РІ себя предоставление специфичных для языка маркеров формата для выполнения произвольного РєРѕРґР° или СЃР±РѕСЏ программы. Вместо этого маловразумительного объяснения предлагаю РґСЂСѓРіРѕРµ: это класс атак, РєРѕРіРґР° приложение некорректно очищает пользовательский РІРІРѕРґ РѕС‚ управляющих конструкций, которые Рё выполняются. Если ты программировал РЅР° РЎ, то, конечно, помнишь те интересности СЃ выводом переменных через printf: надо было в первом аргументе (который строка) указать на тип выводимого значения (%d для десятичного числа Рё так далее).



Седьмой РїСѓРЅРєС‚ представляет СЃРѕР±РѕР№ вариант command injection, которая выполняет определенный РєРѕРґ РЅР° стороне сервера. Р’ моем примере будет выполнена команда ls, которая покажет содержимое текущей директории, но, конечно, там может быть гораздо более опасный код.



И наконец, последняя категория — это LFI-уязвимости (Local File Inclusion; включение локальных файлов), позволяющие просмотреть на уязвимых (или неправильно настроенных) серверах файлы и папки, которые не должны были быть видны всем. Один из возможных вариантов — просмотреть файл /etc/passwd, о котором мы с тобой уже не раз говорили. Это может выглядеть вот так.





Обрати внимание, что в качестве тестового веб-приложения используется DVWA (Damn Vulnerable Web Application), который был специально разработан для обучения пентесту. Многие атаки на веб-приложения можно отработать на нем.


Практика



А сейчас перейдем к практике — протестируем эту утилиту сами.

Цитирование статьи, картинки - фото скриншот - Rambler News Service.
Иллюстрация к статье - Яндекс. Картинки.
Есть вопросы. Напишите нам.
Общие правила  поведения на сайте.

QR-код сейчас совершенно обыденная вещь — они встречаются повсюду, их используют как один из способов авторизации крупные сервисы вроде WhatsApp, Яндекса и AliExpress, встречаются QR-коды для подключения к Wi-Fi. Но насколько надежна эта технология? Можно ли создать такой QR-код, при сканировании которого выполнится нагрузка на девайсе жертвы? Этот вопрос мы сегодня разберем подробнее. QR-код (англ. Quick Response Code — код быстрого реагирования) — это матричный или двумерный штрих-код, который может содержать до 4296 символов ASCII. То есть, проще говоря, картинка, в которой зашифрован текст. История вектора атаки В мае 2013 года специалисты компании по сетевой безопасности Lookout Mobile разработали специальные QR-коды, которые смогли скомпрометировать очки Google Glass. На тот момент очки сканировали все фотографии, «которые могут быть полезны их владельцу», — и предоставили взломщикам полный удаленный доступ к устройству. Исследователи сообщили в Google о данной уязвимости, и ее закрыли буквально за несколько недель. К счастью, исправить успели до того, как ее можно было использовать вне лаборатории, ведь взлом очков реального пользователя мог привести к большим проблемам. В 2014 году программа Barcode Scanner для мобильных устройств из проекта ZXing практически не проверяла тип URI, передаваемый через QR-код. В результате любой эксплоит, который мог быть исполнен браузером (например, написанный на jаvascript), можно было передать через QR. Сканер пытался отфильтровать опасные виды атак с помощью регулярных выражений, требуя, чтобы URI имел период с последующим продлением как минимум на два символа, транспортный протокол длиной не менее двух символов, за которым следует двоеточие, и чтобы в URI не было пробелов. Если содержимому не соответствует хотя бы одному из требований, то оно определяется как обычный текст, а не URI. Этот механизм блокирует атаки вроде jаvascript;alert(
Просмотров: 960
Комментариев: 0:   5-08-2020, 20:00
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме: