Записки потомственного it'шника
275 subscribers
509 photos
40 videos
204 files
1.65K links
Краткость — сестра таланта.
Автоматизация — мать порядка.
Ransomware'щики — боги.
Батя — программист over 80+ level.
Мать — бухгалтер, соскачившая с цифр на контдитерские изделия.
Ну а я — бакалавр ИБ по собственной воле.
Update: уже магистр.
Download Telegram
Последнее время то там, то тут слышишь про "Фиолетовые команды", видимо, "Красными" и\или "Синими" уже никого не удивишь 😁 Вот попался неплохой BOK по превращению "фиолетового движения" из ad-hoc в системную работу:
https://github.com/scythe-io/purple-team-exercise-framework
This media is not supported in your browser
VIEW IN TELEGRAM
🗜 Смотрите какой клёвый pastebin сервис, работающий по SSH и доступный как в tui, так и в веб-морде... https://snips.sh/

А ещё, всё это можно развернуть на собственном сервере, судя по всему:

https://github.com/robherley/snips.sh

#tui #pastebin #ssh
Forwarded from Cybred
Разработчики любят писать микросервисы для "перекладывания JSON". Стандарт устоявшийся и, как правило, не сулит проблем. Но так ли это на самом деле?

Возьмем небольшое приложение с двумя микросервисами:
— Cart — реализует бизнес-логику корзины
— Payment — используется для обработки платежей

Cart написан на Python с Flask и принимает ID товаров с их количеством. Попробуем отправить в него запрос с двумя одинаковыми ключами:
"cart": [
{
"id": 0,
"qty": 5
},
{
"id": 1,
"qty": -1,
"qty": 1
}
]

Сервис провалидирует JSON в соответствии со схемой jsonschema.validate(instance=data, schema=schema). Убедится, что id: 0 <= x <= 10 and qty: >= 1. На этом этапе не будет ошибки (не смотря на то, что один из отправленных qty не подходит под условие), поскольку Flask использует стандартный JSON-парсер из Python, а тот сериализует данные, отдавая приоритет последнего ключа (qty = 1).

Дальше провалидированный JSON отправляется в микросервис Payment.

А микросервис Payment написан уже на Go и использует другой парсер buger/jsonparser. Он уже не валидирует JSON (ведь валидация была на предыдущем шаге), но использует приоритет первого ключа (qty = -1). Считает итоговую сумму total = total + productDB[id]["price"].(int64) * qty и генерирует чек.

Мы смотрим в чек, который вернулся в ответе, и видим ошибку. Нам будет отправлено шесть товаров стоимостью 700 долларов, но с нас взяли только 300 долларов, из-за расчетов со вторым ключом.

Такие ошибки возникают из-за того, что существует много стандартов JSON:
1. json.org
2. IETF RFC 4627
3. ECMAScript 262
4. ECMA 404
5. IETF RFC 7158
6. IETF RFC 7159
7. JSON5
8. HJSON

И в каждом из них свои правила парсинга JSON: о том, как обрабатывать дублирующие ключи, что делать с большими числами с плавающей точкой, что считать валидным, а что нет. И на каждом из этих этапов могут возникнуть коллизии, позволяющие обходить средства защиты или вызывающие баги в бизнес логике.

Полезные ссылки:
— https://seriot.ch/json/parsing.html — большая таблица-сравнение: как разные парсеры обрабатывают разные значения.
— https://bishopfox.com/blog/json-interoperability-vulnerabilities — я рассказал только об одном баге, но их гораздо больше: здесь можно почитать обо всех остальных.
— https://github.com/a1phaboy/JsonDetect — расширение для Burp для определения того, какой парсер используется.
👍1
Forwarded from Cybred
https://github.com/Hackmanit/TInjA

TInjA (the Template INJection Analyzer) — CLI-утилита для проверки веб-приложений на наличие уязвимостей инъекции шаблонов.

Она поддерживает 44 наиболее актуальных шаблонизатора (по состоянию на 2023 год) для восьми различных языков программирования и поддерживает поиск как SSTI, так и CSTI.
Forwarded from BeholderIsHere Media HUB (Beholder Is Here)
Очень интересный канал Дэрека Джемисона раскрывающий весь потенциал flipper zero
Смотрел я вчера старенький фильм "На грани" 🐻 с Энтони Хопкинсом и вспомнил ситуацию, в которую как-то попал и я, а именно отбился с товарищем от туристической группы и два дня мы были одни, без какой-либо помощи, без нормального снаряжения, а еще лил дождь. И вот это натолкнуло меня на мысль, которую можно применить в команде ИБ, особенно если вы ее руководитель, или вы ментор какого-либо специалиста по ИБ.

Нынешнее "поколение ЕГЭ" привыкает отвечать по готовым скриптам ☑️ и теряет способность искать ответы самостоятельно. Критическое мышление тоже куда-то улетучивается. Поэтому так важно воспитывать этот навык у своих "падаванов". И для этого можно дать несколько советов:
1️⃣ Регулярно "пропадайте". Когда ваш подчиненный понимает, что тот, в кого он верил, исчез, ему остается только верить в себя и начать хоть что-то делать, а не ждать, когда добрый CISO всех спасет и возьмет ответственность на себя.
2️⃣ Не надо обсуждать проблемы - обсуждайте способы их решения, которые предложил ваш подчиненный. Если у него нет решения, возвращаемся в начало этого пункта.
3️⃣ Совершенно неважно, насколько решение вашего подчиненного хорошо. Ваша задача - перестроить его мозги так, чтобы он был всегда способен искать и находить решения проблем. Да, ваш опыт часто позволяет вам найти решение лучше, но незашоренность может помочь найти нестандартное решение. Этот принцип особенно активно проявляется в штабных киберучениях, в которых я всегда с самого начала говорю, что нет неправильных решений.
4️⃣ Никогда не надо говорить, правильное решение или неправильное. ИБ - это не ЕГЭ, где все просто. ИБ - это жизнь и никаких заранее известных ответов часто просто нет. Фокусировать подчиненных надо на смысле решаемой задаче, а не конкретном решении. Сегодня оно такое, завтра совсем иное. ИБ вообще вариативная штука.
5️⃣ Пусть подчиненные сами оценивают свои решения. Со временем придет и опыт, и уверенность, и экспертиза. В ИБ часто надо самому брать ответственность за свои же решения и переложить ее на кого-то не удастся. Чем раньше подчиненные это поймут, тем лучше.

ЗЫ. Тоже самое работает и с детьми и со студентами 😊

ЗЗЫ. Да, совсем тупые тоже бывают и с ними эта великолепная пятерка не работает. Но тут уж вам не повезло ☹️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Blue (h/c)at Café (Женя Белкин '";DROP DATABASE db_name();--)
📝 Аудит спецификаций API на наличие уязвимостей логики

Продолжаем разговор про тестирование API. На этот раз не будет докера, мне было максимально лениво разбираться с Rust, не с игрой, а языком (Go для умных).

Инструмент, которым я буду сам пользоваться называется CherryBomb.

🗣 Краткое описание:

- Написан на Rust
- Имеет варианты запуска (info, normal, intrusive(не работает) , passive, full
- Требуется файл OpenAPI v3  в формате json (можете ваши yml переводить в него тут)

📌

Тестирование проводил всё на том же VAmPI

🗣 Использование:

cherrybomb --file openapi.json --profile full --ignore-tls-errors true -o report.json --format json


🗣 Репорт файл:

Жаль, что я не могу делать развёрнутые посты с несколькими скринами и подобным, но если кратко - умеет в читаемый вид (table), а также в формате json

📌

В скором времени напишу парсер в sarif или для defect dojo


🗣Работа с конфигурационным файлом:

У инструмента есть возможность запуска сканирования через конфигурационный файл

cherrybomb -c config.json


Пример для полного сканирования и авторизации через basic auth, с игнорированием ошибок tls и параметром логирования "normal":

{
"file" : "open-api.json",
"verbosity" : "normal,
"profile" : " "full",
"security": [{
"auth_type": "Basic",
"auth_value" : token_value,
"auth_scope" : scope_name
}],
"ignore_tls_errors" : true,
}



#opensource #devsecops
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
О, тогда такой финт можно и с docker.socket провернуть!
Forwarded from Cybred
Интересный факт: Nginx умеет проксировать запросы не только на HTTP, но и на локальные Unix-сокеты.

Вот у нас есть конфигурация
location ~ /static/(.*)/(.*.js) {
proxy_pass http://$1-example.s3.amazonaws.com/$2;
}

Разработчики используют ее, чтобы проксировать запросы на Javascript-файлы в S3-бакет. Мы контролируем ту часть URI, что идет после http://, поэтому можем использовать это, чтобы эксплуатировать SSRF или HTTP Splitting в чейне с другими уязвимостями, благодаря слабой регулярке.

НО! Мы хотим выжать из этого максимум и прокрутить что-то необычное, зная еще один интересный факт — на виртуалке, помимо Nginx, где-то рядом крутится еще и Redis.

А у него ещё и поднят свой сокет. Достаточно отправить в proxy_pass GET-запросом строку http://unix:/run/redis/redis.sock, и все, что идет после нее, попадет прямиком в Redis.

А вот как раскрутить это дальше, обойти механизмы защиты и добиться эксфильтрации — читаем в последней статье уходящего года из полюбившегося цикла с мисконфигами Nginx.

После прочтения, советую следом разобрать райтап с Uni CTF, где обыгрывался кейс не только с дампом, но и с RCE в сложном эксплойте с PHP https://www.hackthebox.com/blog/uni-ctf-2022-spell-orsterra-writeup.
👍1
Forwarded from linkmeup
​Очередное покаяние уровня "Да как я вообще раньше жил без этого" - проект Atuin. Замещает собой стандартный хистори лог консоли, позволяя вытворять какие-то совершенно неприличные вещи, вроде синхронизации истории между разными машинами.
Смело брать, ставить, привыкать и в конце года делать atuin stats year.
https://github.com/atuinsh/atuin
Forwarded from Real profit
SSH-Snake: is a self-propagating, self-replicating, file-less script that automates the post-exploitation task of SSH private key and host discovery
https://github.com/MegaManSec/SSH-Snake
Forwarded from Offensive Xwitter
😈 [ Steve Campbell @lpha3ch0 ]

I felt like httpx was missing the ability to parse Nmap reports for http/s services and it made more sense to create a standalone utility. Nmapurls parses Nmap xml reports and outputs a list of URL's.

🔗 https://github.com/sdcampbell/nmapurls

🐥 [ tweet ]