вольтаж
1.1K subscribers
38 photos
6 videos
7 files
63 links
Кибершумные заметки о безопасности веба, инфры и головы

связь - @w0ltage
Download Telegram
КАК УЧИТЬСЯ С CTF

Уже как пару недель подряд участвую в CTF соревнованиях по выходным, но лишь во время CTF кубка россии, в полночь, решил поискать "как же всё же играть в стф и чему-то учиться".

Нашёл видео от LiveOverflow, рассказывающего методологию решения тасков:
- тыкаешь таск, записываешь свои мысли по решению и "что уже попробовал для решения"
- если решил, то ты крутой.
- если не решил, то жди writeup. по появлению райтапов, находи свой таск и сравнивай решение со своими заметками.
- - изучай технологии, добавляй записи в свои заметки и размышляй "как надо было думать, чтобы дойти до такого"

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

Ранее я пытался решать стф на основе знаний в голове и своей базе знаний, но не мог сформировать общую картинку.

Полагаю, если постоянно следовать методологии и копить базу решенных тасков + свои мысли, то при встрече с новыми тасками - голова начнёт вспоминать уже встречавшиеся паттерны, решение которых можно будет подсмотреть в своих же заметках

UPD: видео, как ответ на вопрос "как писать заметки во время стф"

#ctf #guide
11
Написал гайд на реверс шелл к локальному компьютеру с помощью ngrok aka ответ на вопрос "как подключиться к локальному компьютеру из внешней сети?"

https://telegra.ph/How-to-reverse-shell-using-ngrok-11-30

Был бы этот гайд был под рукой на прошедшей MireaCTF, то вошли бы в топ 10 команд. Впрочем, как раз для такого и нужен CTF - чтобы заполнять пробелы в знаниях

#ctf #guide
whatis @hackthishit

Меня бесит мерцающий курсор, но больше всего меня бесят статьи и отчеты формата

я впервые вижу это, но знаю точно, что если отправить 0xYAA на предпоследний порт, то получу шелл


Это неидеальный, и порой даже грубый, канал про offense / defense / dev веба, инфры и головы. Здесь будут повторяться недочеты, нестабильные скрипты, объяснения базы, шутки и явные screwups.

Хочу передавать знания, нежели показывать "step-by-step гайд по взлому тостера". хотя, взлом тостера звучит как неплохая статья

Маппинг хэштегов:
#guide = гайды
#tricks = техники
#invite = приглашаю тебя к соучастию в Х

#recon = разведка
#bypass = обходы СЗИ (WAF, AV, etc.)

#web = веб-приложения
#client_side
#server_side

#infra = инфраструктура
#mobile = мобилки, включая #android и #ios

#machineops = оптимизация работы за компом
#lifeops = как я упрощаю / усложняю себе жизнь
#aiops = как пользуюсь ИИ
#mindops = мысли и перестройка мыслительных процессов

#ctf = про захват флага на проде
#tool = занимательные инструменты (мои и чужие)
#ai = контент про ИИ
#teach = как обучать других

#me = инфа обо мне (привет осинтер)
вольтаж
КАК УЧИТЬСЯ С CTF Уже как пару недель подряд участвую в CTF соревнованиях по выходным, но лишь во время CTF кубка россии, в полночь, решил поискать "как же всё же играть в стф и чему-то учиться". Нашёл видео от LiveOverflow, рассказывающего методологию…
ПРИМЕР ОТЧЁТА ПО РЕШЕНИЮ CTF

Ранее в канале, расписывал "как учиться с CTF", пересказывая ролик LiveOverflow, суть которого можно свести к "пиши отчёт по ходу решения". Вышло так, что все праздники решал CTF'ки для ШКИБ. Решил 4 задачи (1, 2, 5, 7) из 7. К каждой задаче писал отчёт по ходу решение, одним из которых хочу поделиться.

Отчёт по 7 задаче, суть которой в вызове Reflected XSS. Рекомендую сначала попробовать самостоятельно потыкать. Писал отчёт в Obsidian.

Зачем делюсь?
Чтобы ты мог использовать отчёт в качестве шаблона для своих отчётов или чтобы вдохновился наконец начать описывать ход решения задачки. Самое главное - пиши для себя.

Твои отчёты являются твоим потоком мыслей и должны помогать тебе. Их необязательно разъяснять кому-то. Главное, чтобы ты сам понял, что написал вчера. Этот отчёт изначально писался без мысли, что его будет читать кто-то ещё.

#ctf #guide #web #client_side
Простое управление .dotfiles через "bare" репозитории

dotfiles - конфигурационные файлы, чьи названия начинаются с точки (ex: .zshrc, .profile, .config).

Недавно решил перекинуть конфиги с хоста на пару виртуалок, но не хотелось костыльно и долго копировать файлы через расшаренную папку между виртуалками.

tl;dr: и нашёл метод "bare git репозитория". для реализации сначала надо запустить скрипт инициализации чистого репозитория, после можешь добавить .файлы к отслеживанию, далее commit, пуш, потом уже раскатывай на новой системе ещё одним скриптом.

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

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

На том же Github, репозиторий с .файлами, использующий "чистые репозитории" будет выглядить как обычный. Однако, локальный "чистый репозиторий" не будет содержать в себе файлов. Он только знает какие файлы по системе отслеживать.

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


Создание чистого репозитория и настройка оболочки
Использую zsh шелл, но если ты bashник, то замени .zshrc на .bashrc

Репозиторий будет в ~/.dotfiles. Для взаимодействия с ним определи алиас "config" и выключи отображение ещё не отслеживаемых файлов, иначе погрязнешь в перечислении файлов домашней директории

```shell
$ git init --bare $HOME/.dotfiles
$ echo "alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
$ source .zshrc
$ config config --local status.showUntrackedFiles no


```Добавление файлов в репозиторий

```shell
$ config status
$ config add .vimrc .zshrc .config/tmux/tmux.conf
$ config commit -m "Add .vimrc, .zshrc and tmux.conf"
$ config remote add origin <remote-repo-url>
$ config push -u origin <branch>

```Если команда "config" не отрабатывает, то проверь применился ли алиас.
Если всё ок и команда успешно запушила репозиторий, то поздравляю с великолепием!

Теперь git, скрываемый под config, будет сам подхватывать все изменения в отслеживаемых файлах. Тебе понадобится только коммитить и добавлять в отслеживание новые .файлы

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


Раскатывание .файлов на новой системе

$ echo "alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
$ config config --local status.showUntrackedFiles no
$ source $HOME/.zshrc
$ git clone --bare <git-repo-url> $HOME/.dotfiles
$ config checkout

Последняя команда может провалиться из-за существующих конфигов в новой системе. Если текущие конфиги в новой системе не важны - удаляй их. В противном случае делай бекап. Для удобства пользуйся скриптом от Atlassian:
```shell
mkdir -p .config-backup && \
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
xargs -I{} mv {} .config-backup/{}

```Теперь пробуй вновь
$ git checkout


Дополнительные заметки

- если в ранее отслеживаемой папки добавились новые файлы, то новый файл или всю директорию понадобится добавить вновь к отслеживанию
- чтобы добавить в удаленный Github репозиторий README.md или дополнительные файлы, не относящиеся напрямую к dotfiles, то перенеси их в $HOME/.github, после чего добавь в отслеживание саму папку .github
— Github сам распарсит папку .github и отобразит README оттуда на главной странице репозитория

Источники
- snovvcrash - dotfiles and personalization
- articles, tools and tricks to manage dotfiles
- atlassian - how to manage dotfiles with bare git repo
- мои dotfiles для bspwm, picom, polybar, zsh, tmux и тд

#guide
❤‍🔥4🔥1
вольтаж
На этом OFFZONE буду выступать с докладом, в дуэте с коллегой @Su9r3m3. Расскажем про RAG в LLM, его архитектуру, вектора атак, разберём пару инцидентов и закончим защитой от подобного. 22 августа в AI.ZONE с 16:50 - 17:30 Для полноты картины, рекомендую…
Нулевой в ML?
За пару дней до конфы, обязательно посмотри вводный доклад про LLM, длиною в 60 минут.

Узнаешь что модели из себя представляют, в чем трудности обучения, как много индусов надо чтобы сделать AI-ассистента и даже про базовые атаки найдёшь.

После, подписывайся на @pwnai, ведь теперь ты будешь понимать о чём Артём пишет в своих постах и использовать это!

Без его помощи этого доклада могло бы и не быть, поэтому благодарим подписочкой

#guide #ai
9💅3
это мы читаем, применяем и собираем слёзы вендоров с битриксом

#web #server_side #guide
💅6❤‍🔥2
file://localhost/etc/passwd
что вернёт?

Да, вернётся /etc/passwd.

В RFC 8089, верный формат протокола описан как file://<host>/<path>, в то время как все шпоры на LFR при SSRF говорят лишь о file:///<path>

Причём, в <host> возможно вписать домен. Система резолвнет его, и если тот указывает на 127.0.0.1, то вернётся содержимое файла. В противном случае получишь лишь отстук в DNS.

питон пок

from urllib.request import urlopen

content = urlopen(
"file://yoogle.com/etc/passwd", timeout=2,
).read().decode('utf-8')

print(content)


Представил сколько возможностей для обхода фильтров? И это не последний твой приступ FOMO за сегодня.

В статье The Minefield Between Syntaxes от @yeswehack, автор вскрывает проблемы разных синтаксисов и как парсеры выживают с ними.

Представим, ты нашёл SSTI, но WAF блокирует символ $
Что делать?


Неприятно, но не критично, ведь в Python / Perl возможно представить символ через \N{CHARACTER NAME}.

Пример обхода фильтра
\N{dollar sign}{7*7} == ${7*7} == 49


Уже на стену лезешь? Погоди, я с тобой ещё не закончил.

Давай дальше по загрузке файлов. Видел же в Content-Disposition есть параметр filename?

В RFC 6266 описан базовый подход с именем файла, но RFC 8187 вышибает дверь с... чего.. какие юникод байты 😱


# RFC 6266
filename="image.png"

# RFC 8187
filename*=UTF8''image%0a.png


RFC 8187 вводит новые правила для filename параметра, включая поддержку всего Unicode + способности кодировать произвольные байты через %

То есть, ты можешь закодировать перенос строки (%0a == \n) и всячески ломать как парсинг имени файла, так и куда тот запишется.

. . .

FOMO карусель закрыта.
Как восстановишь силы, пробегись по статье автора ради:
⚀ разбор CVE из-за проблем синтаксиса [^]

⚀ кейс бб, из cache poisoning в stored xss через пролом валидации parse_url в PHP [^]

⚀ кейс бб, из слепого чтения файлов через SSRF в arbitrary file read [^]


Затем разнеси CTF по ресерчу
1. обход фильтров SSTI [^]

2. иной подход к протоколу file:// [^]

3. пролом parse_url в PHP [^]


#web #bypass #server_side #guide
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
32248