Удивительно, но моя первая уязвимость, которую я отправил через Bug Bounty платформу, была XXE c "Critical" уровнем опасности, и она принесла мне 3,000$.
В 2016 году, когда я только начал работать в компании и заниматься анализом защищенности веб-приложений, от старшего коллеги я узнал про json2xml.
Техника json2xml заключается в том, чтобы изменить
content-type запроса с "application/json" на "application/xml" и вместе с этим поменять тело запроса, чтобы оно стало валидным xml-документом.Например, json
{"a":"1"} станет <a>1</a> в формате XML.При парсинге запроса приложение увидит, что типа контента "application/xml" и может начать обрабатывать тело, как обычный XML-документ, чтобы получить параметры и их значения. Если же парсер XML сконфигурирован неправильно и разрешены внешние сущности, то есть возможность провести стандартную XXE атаку.
Используя эту технику, я успешно прочитал файл
/etc/hosts, затем написал и отправил отчет. В это же день уязвимость взяли в работу, а на следующий - был фикс и выплачена награда за находку.Для быстрой конвертации тела запроса в Burp Suite есть плагин Content Type Converter.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Компания Atlassian отнесла эту уязвимость к категории "Broken Access Control". Эксплуатация данного недостатка приводила к тому, что любой внешний атакующий имел возможность создать нового пользователя с правами администратора.
На самом деле, это один из импактов, которого удалось добиться, используя интересную первопричину возникновения данной возможности.
Как все работало:
1️⃣ Confluence воспринимал HTTP параметры как OGNL-выражения при обращении к action’ам, которые были зарегистрированы в struts.xml. Но не все параметры, а только те, что проходили по фильтрам;
2️⃣ Используя OGNL, была возможность изменять свойства класса, который доступен в текущем контексте;
3️⃣ Таким образом, параметр
bootstrapStatusProvider.applicationConfig.setupComplete=0 позволял вернуть инстанс в доустановочное состояние(функция isSetup возвращала false);4️⃣ Поскольку
isSetup становилось false, то пользователь мог обратиться к сценарию /setup/setupadministrator.action и добавить нового администратора приложения.Для детектирования атаки я бы советовал внимательнее смотреть за путями:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Интересная презентация с конференции BSides Ahmedabad 2023 за авторством сильного ресерчера известного под ником shubs
В материале он рассказывает о его становлении в сфере Bug Bounty и некоторых его исследованиях. Доклад не содержит большого количества технической информации, однако отлично показывает его подход к поиску уязвимостей и путь в этой сфере. Особенно интересно будет тем, кто задает вопросы:
● Как начать в Bug Bounty?
● А что, там сразу все крутые репорты шлют и миллионы зарабатывают?”
Если на сервере используется такой роутинг:
/sso/ → 10.1.1.1то используя path
/admin/ → 10.1.1.2
/sso/..%2ftools/monitor/configsettings.aspx
есть возможность обратиться к скрипту /tools/monitor/configsettings.aspx на сервере 10.1.1.1.Это чем-то похоже на nginx alias traversal или же на трюк с
..;/ в Tomcat и Jetty.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Людям, которые работают или просто интересуются практическим инфобезом (ресерчеры, пентестеры, багхантеры и т.д.) важно быть в курсе актуальных новостей. Причем я не столько говорю про новости из различных изданий, сколько про актуальные посты в блогах, раскрытые уязвимости на Bug Bounty площадках или другую техническую информацию.
Для этой цели я сделал сайт websecnews.github.io, который в автоматическом режиме наполняется информацией из различных источников.
Сейчас на нем отображаются:
В будущем сайт будет покрывать большее кол-во источников и иметь новые фичи (идеи для этого есть).
А пока, если есть предложения, какие RSS фиды добавить, то пишите. И, конечно, посещайте сайт.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🎉2🤩2
Сегодня просматривал актуальные CVE и заметил несколько новых уязвимостей, которые связаны с Bitrix24. Выдача CVE для багов в этом продукте — большая редкость, но еще удивительнее, что недостатки были обнаружены компанией из Сингапура (потихоньку ресерчат и российское ПО).
Вместо краткой информации, как это обычно бывает при публикации CVE, исследователи подробно рассказали у себя в блоге о причинах возникновения багов, показали участки кода с уязвимостью, а также приложили готовый PoC для каждой из них.
Вот список того, что удалось найти исследователям:
Все адвайзори от этой компании можно посмотреть тут: https://starlabs.sg/advisories/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤔1🤯1🫡1
Совсем недавно (21 ноября) Owncloud исправили две уязвимости в своем продукте CVE-2023-49103 и CVE-2023-49105. Данный софт часто встречается у вендоров на Bug Bounty, поэтому легко можно собрать low hanging fruit даже на российских платформах
CVE-2023-49103
Используя обход фильтра в .htaccess, любой внешний атакующий имеет возможность получить вывод
phpinfo(), если перейдет по пути /apps/graphapi/vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php/a.css. На первый взгляд бага не критичная, однако если owncloud запущен из докера, то в выводе phpinfo() можно найти логин и пароль администратора в переменных среды.CVE-2023-49105
Уязвимость предоставляет два варианта:
http.html:owncloud Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤔1
Сегодня ночью Gitlab сообщил о фиксе нескольких уязвимостей в своем продукте. Самая интересная из них - возможность завладеть любым аккаунтом системы, если знать email-адрес пользователя. Уязвимость возникает при сбросе пароля, если передать вместо одного email массив из нескольких адресов, куда и будет отправлена ссылка для сброса пароля.
PoC для уязвимости уже был опубликован:
user[email][]=valid@email.com&user[email][]=attacker@email.com
Уязвимые версии:
В адвизе от вендора можно найти чуть больше информации, включая детекты эксплуатации уязвимости: https://about.gitlab.com/releases/2024/01/11/critical-security-release-gitlab-16-7-2-released/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤯1
Уязвимость позволяет загружать файлы в произвольное место на сервере с использованием атаки Path Traversal. Согласно адвайзори, одного обновления Struts до версии >6.4.0 недостаточно для обеспечения безопасности. Необходимо также перейти на новый механизм загрузки файлов.
Если в вашем приложении по-прежнему используется
FileUploadInterceptor для обработки загружаемых файлов, уязвимость сохраняется, независимо от версии Struts. Сегодня вышла отличная статья (на китайском), где детально разбирается уязвимость и ее эксплуатация. Через OGNL можно обойти логику фреймворка и передать параметр с путем файла, минуя функцию преобразования
getCanonicalName. Это позволяет атакующему использовать символы ../ для загрузки файлов в произвольное место на сервере. Автор статьи (@Y4tacker) демонстрирует, что вместо стандартного параметра
uploadFileName можно использовать альтернативные:
top.UploadFileName
uploadFileName[0]
Для лабораторного изучения уязвимости можно использовать тестовое приложение, разработанное ранее для демонстрации эксплуатации похожей уязвимости в Struts.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Наверняка, многие из вас читали крутой ресерч про Spring View Manipulation от artsploit. Один из примеров эксплуатации затрагивает такой уязвимый код в Spring-приложениях:
@GetMapping("/fragment")
public String fragment(@RequestParam String section) {
return "welcome :: " + section;
}В этом случае автор предлагает следующий пейлоад для вызова calc.exe:
GET /fragment?section=__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("calc").getInputStream()).next()}__::.x HTTP/1.1Этот ресерч появился ещё в 2020 году. Тогда разработчики Thymeleaf оперативно закрыли возможность эксплуатации, и пейлоад перестал работать в версиях шаблонизатора <3.0.12 (декабрь 2020 года).
Однако недавно я наткнулся на исследование, где описывается эксплуатация аналогичной уязвимости уже в Thymeleaf 3.1.1. Пейлоад работал до июля 2023 года (его работоспособность можно увидеть на картинке к посту). Оказалось, что в китайском сегменте активно искали байпасы, а разработчики фиксили каждый новый обход.
Последние тренды в этой "гонке" связаны с поиском классов, использование которых может привести к RCE. Например, в коммите от декабря 2024 года разработчики запретили следующие классы:
java.lang.ClassLoader
org.springframework.web.reactive.result.view.RequestContext
org.springframework.core.io.ResourceLoader
Скорее всего, один из последних рабочих пейлоадов использовал именно их.
На данный момент актуальная версия Thymeleaf — 3.1.3. Пока что я не видел рабочий PoC, который обходит все текущие фиксы, но эта область остаётся интересным полем для ресерча.
Если вы интересуетесь безопасностью, это отличный шанс исследовать эту тему! Возможно, именно вы найдёте новый способ обхода фиксов, который, конечно же, позже закроют разработчики.
Оставляю ссылки на другие ресерчи этой темы от китайских исследователей:
[1]
[2]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Совсем недавно в блоге PTSWARM мы опубликовали интересный ресерч моего коллеги про эксплуатацию XXE. На мой взгляд, это наиболее качественное исследование, посвященное такому типу уязвимости, за последнее время.
Согласно документации PHP, следующий код будет уязвим к XXE только при использовании
loadXML с атрибутом LIBXML_DTDVALID или LIBXML_NOENT.$doc = new \DOMDocument('1.0', 'UTF-8');
$doc->loadXML($xml);Отчасти они были правы: для полноценной XXE-атаки с использованием известных пейлоадов действительно требуются именно эти атрибуты. Однако исследование показало, что уязвимость можно эксплуатировать и при наличии следующих атрибутов, что значительно расширяет поверхность для атаки:
LIBXML_DTDLOADLIBXML_DTDATTRОтдельно интересно наблюдать, как формировалась финальная полезная нагрузка - использовались техники wrapwrap и lighyear, а так же была обнаружена новая особенность парсинга XML файлов библиотекой libxml2.
Ещё одним важным открытием стало то, что атрибут LIBXML_NONET является полностью бесполезным в PHP, хотя в документации написано, что он отключает доступ к сети при обработке XML.
Я подсветил наиболее интересные на свой взгляд моменты, но это далеко не все, что есть в статье. Материал совсем не для тех, кто любит low hanging fruits, в ней много выдержек кода и технического контента.
Это мой must read, если вы интересуетесь безопасностью веб-приложений.
Статья: https://swarm.ptsecurity.com/impossible-xxe-in-php/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🙈1
