WebSecHack
173 subscribers
9 photos
1 video
9 links
Рассказываю об исследованиях безопасности веб-приложений, Bug Bounty и немного про пентест!

Автор: @Mike_n1

Все посты - исключительно мое мнение и представлены только в образовательных и информационных целях.
Download Telegram
Channel created
Channel photo updated
👀 Мой старт в Bug Bounty!

Удивительно, но моя первая уязвимость, которую я отправил через 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
🔍 CVE-2023-22515 - почему она возникает?

Компания 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 и добавить нового администратора приложения.

Для детектирования атаки я бы советовал внимательнее смотреть за путями:

🛑 /server-info.action - через него есть возможность устанавливать свойства объекта;
🛑 /setup/setupadministrator.action - тут обычно создают нового администратора.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🎤 Bug Bounty hacking за 10 лет!

Интересная презентация с конференции BSides Ahmedabad 2023 за авторством сильного ресерчера известного под ником shubs

В материале он рассказывает о его становлении в сфере Bug Bounty и некоторых его исследованиях. Доклад не содержит большого количества технической информации, однако отлично показывает его подход к поиску уязвимостей и путь в этой сфере. Особенно интересно будет тем, кто задает вопросы:
● Как начать в Bug Bounty?
● А что, там сразу все крутые репорты шлют и миллионы зарабатывают?”

Из технического я бы отметил любопытный мисконфиг IIS веб-сервера при использовании функционала "directory <-> virtual host routing".
Если на сервере используется такой роутинг:

/sso/ → 10.1.1.1
/admin/ → 10.1.1.2

то используя path

/sso/..%2ftools/monitor/configsettings.aspx

есть возможность обратиться к скрипту

/tools/monitor/configsettings.aspx на сервере 10.1.1.1.

Это чем-то похоже на nginx alias traversal или же на трюк с ..;/ в Tomcat и Jetty.

🔗Ссылка на презентацию: https://drive.google.com/file/d/1aeNq_5wVwHRR1np1jIRQM1hocrgcZ6Qu/view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🖥 WebSecNews - начинаем день с него!

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

Для этой цели я сделал сайт websecnews.github.io, который в автоматическом режиме наполняется информацией из различных источников.

Сейчас на нем отображаются:

🛑Посты из блогов;
🛑Новые CVE, которые вышли сегодня и вчера;
🛑Свежие раскрытые репорты с h1.

В будущем сайт будет покрывать большее кол-во источников и иметь новые фичи (идеи для этого есть).

А пока, если есть предложения, какие RSS фиды добавить, то пишите. И, конечно, посещайте сайт.

🔗 https://websecnews.github.io
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🎉2🤩2
🔥 Свежие уязвимости в Bitrix24

Сегодня просматривал актуальные CVE и заметил несколько новых уязвимостей, которые связаны с Bitrix24. Выдача CVE для багов в этом продукте — большая редкость, но еще удивительнее, что недостатки были обнаружены компанией из Сингапура (потихоньку ресерчат и российское ПО).

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

Вот список того, что удалось найти исследователям:

🛑RCE via Insecure Temporary File Creation
🛑RCE via Unsafe Variable Extraction
🛑Stored XSS via Improper Input Neutralization on Invoice Edit Page
🛑XSS via Client-side Prototype Pollution
🛑DoS via Improper File Stream Access
🛑Insecure Global Variable Extraction
🛑Stored XSS via File Upload

Все адвайзори от этой компании можно посмотреть тут: https://starlabs.sg/advisories/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤔1🤯1🫡1
⚠️ Уязвимости в ownCloud

Совсем недавно (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

Уязвимость предоставляет два варианта:
🛑Неавторизованный пользователь может получить доступ к WEBDAV и по безумному стечению обстоятельств иногда докрутить до RCE;
🛑Пользователь с низкими привилегиями имеет возможность повыситься до админа и уже от него выполнить произвольную команду.

🔍 В качестве дорка для shodan можно использовать: http.html:owncloud

🔗 Более подробно можно почитать тут: https://www.ambionics.io/blog/owncloud-cve-2023-49103-cve-2023-49105
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤔1
☄️ Account Takeover в Gitlab CE/EE - CVE-2023-7028

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

PoC для уязвимости уже был опубликован:
user[email][]=valid@email.com&user[email][]=attacker@email.com


Уязвимые версии:
🛑16.1 до 16.1.5
🛑16.2 до 16.2.8
🛑16.3 до 16.3.6
🛑16.4 до 16.4.4
🛑16.5 до 16.5.6
🛑16.6 до16.6.4
🛑16.7 до 16.7.2

В адвизе от вендора можно найти чуть больше информации, включая детекты эксплуатации уязвимости: 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
🔥 CVE-2024-53677 — Загрузка произвольных файлов в Apache Struts

Уязвимость позволяет загружать файлы в произвольное место на сервере с использованием атаки 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 Vulnerability

Наверняка, многие из вас читали крутой ресерч про 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
👍31
💡 Расширяем поверхность атаки для XXE в PHP

Совсем недавно в блоге PTSWARM мы опубликовали интересный ресерч моего коллеги про эксплуатацию XXE. На мой взгляд, это наиболее качественное исследование, посвященное такому типу уязвимости, за последнее время.

🤔 Что интересного?

Согласно документации PHP, следующий код будет уязвим к XXE только при использовании loadXML с атрибутом LIBXML_DTDVALID или LIBXML_NOENT.

$doc = new \DOMDocument('1.0', 'UTF-8');
$doc->loadXML($xml);


Отчасти они были правы: для полноценной XXE-атаки с использованием известных пейлоадов действительно требуются именно эти атрибуты. Однако исследование показало, что уязвимость можно эксплуатировать и при наличии следующих атрибутов, что значительно расширяет поверхность для атаки:
🛑LIBXML_DTDLOAD
🛑LIBXML_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