Как использовать User Agent для атак на сайты. Часть 1

Как использовать User Agent для атак на сайты. Часть 1

Life-Hack [Жизнь-Взлом]/Хакинг


#Обучение

Пользовательский агент (User Agent) — это строка текста, идентифицирующая браузер и операционную систему для веб-сервера. User Agent передаётся в HTTP заголовке когда браузер делает запрос к веб-серверу. 

Вы можете посмотреть передаваемые HTTP заголовки, в том числе User Agent в Инструментах разработчика веб-мастера. Например, в Chrome для этого нажмите F12, перейдите на вкладку Network и в окне General найдите Request Headers (заголовки запроса): 

Или можете сделать ещё проще — перейти на страницу одного из многочисленных сервисов, которые показывают User Agent: https://suip.biz/ru/?act=my-user-agent 

Пример User Agent: 

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 

Строка не особо понятная — ясно, что это Chrome и что его версия 86.

XSS уязвимости бывают: 

  • Хранимые (Постоянные) 
  • Отражённые (Непостоянные) 

Все показанные ниже XSS являются непостоянными, то есть показываются только пользователю, который их эксплуатирует, а следовательно, не являются опасными. Такие уязвимости обычно даже не принимают по Bounty программам (некоторые крупные компании дают вознаграждение за найденные уязвимости, если вы сообщили о них, это называется Bug Bounty). 

Начнём мы с простейшего способа менять User Agent — прямо в веб-браузере.

десь же просто напомним краткий алгоритм: 

 Google Chrome/Chromium 

  • Инструменты разработчика (F12
  • Нажмите кнопку меню справа от вкладки «Console» в нижней части панели инструментов разработчика и выберите «Network conditions» 
  • На вкладке «Network conditions» снимите флажок «Select automatically» рядом с «User agent». 
  • Затем вы можете выбрать пользовательский агент из списка или скопировать и вставить пользовательский агент в поле. 

 Firefox

  • Ведите about:config в адресную строку Firefox и нажмите Enter. 
  • Введите general.useragent.override в поле фильтра. Он, вероятно, не существует в вашей системе. Чтобы добавить эту настройку, переключитесь тип значения на «Строка» и нажмите + (плюс). 
  • Введите желаемый пользовательский агент. 

Если для сайта whatleaks.com ввести в качестве строки User Agent 

<script>alert(1)</script> 

То получим всплывающее окно alert. 

Это сайт whatsmyuseragent.org

Это сайт getright.com/useragent.html

Сайт manytools.org/http-html-text/user-agent-string/

На сайт amiunique.org/fp нет XSS инъекции, но поломался JavaScript код. 

В принципе, можно было бы далеко не ходить за примерами, у меня у самого на SuIP.biz была точно такая же проблема (https://suip.biz/ru/?act=my-user-agent), но я её починил. На самом деле, пользователь действительно может как угодно изменять показываемую ему страницу на лету. Если эту страницу кроме него никто не видит, то проблем нет. Другое дело, если значения User Agent сохраняются и затем могут сработать, то есть если значения User Agent сохраняются и затем показываются кому-либо ещё, например, владельцу сайта (скажем, при анализе статистики) или другим пользователям (например, виджете популярных или последних User Agent посетителей). 

Как делать SQL-инъекцию через User Agent 

Вы тоже уже успели об этом подумать? Если программисты забывают о том, что User Agent'у не стоит доверять как абсолютно всему остальному, приходящему от пользователей, то значит там могут не фильтроваться теги и специальные символы? Пример этому мы уже увидели — на всех приведённых выше сайтах не фильтруется и не заменяются специальные символы в теге <script>

А что если специальные символы тоже не фильтруются и значение User Agent сохраняется в базу данных? А это уже SQL-инъекция! Среди приложений, которые могут сохранять значения User Agent в базу данных: программы для сбора статистики веб-сайтов, метрики, виджеты «браузеры последних посетителей» и т. д. 

В bWAPP есть пример инъекции через User Agent. Там она называется «SQL Injection - Stored (User-Agent)». 

Если в качестве значения User Agent ввести что-нибудь вроде 

Chrome'

То на выходе мы получим замечательное сообщение: 

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Chrome', '192.168.0.89')' at line 1

онечно же, там где SQLi, там и sqlmap. Чтобы протестировать SQL-инъекцию в User Agent используйте опцию --user-agent, в которой место инъекции укажите символом * (звёздочкой). Пример команды: 

sqlmap -u 'http://192.168.0.96/bWAPP/sqli_17.php' --user-agent="Chrome*" --cookie 'PHPSESSID=a3400ca39ae4c6c1b25bb1eeb91c5410; security_level=0' --dbs 

Конечно же, уязвимость найдена и выведен список баз данных: 

На странице https://kali.tools/?p=816 вы найдёте ссылки на подробнейшие инструкции по sqlmap и скоро будет добавлена ещё одна — SQL инъекции в User Agent, Referer, Cookie и произвольные HTTP заголовки. 

Продолжение следует…​

Источник


Report Page