Linux Privilege Escalation Cheatsheet
Эта шпаргалка с примерами, предназначена тех, кто готовится к OSCP, чтобы помочь им понять различные методы повышения привилегий на компьютерах под управлением Linux и CTFS. Существует несколько способов выполнения одной и той же задачи.
В материале разбираются следующие темы:
➖ Абьюз прав Sudo
➖ SUID Binaries
➖ Capabilities
➖ Эскалация привилегий Lxd
➖ Эскалация привилегий Docker
➖ Эксплоит джобов Cron
➖ Запись в /etc/passwd
➖ Неправильно сконфигурированный NFS
➖ Эксплоит Wildcard
➖ Эскалация привилегий LD_Preload
➖ Эксплоит PATH Variable
➖ Python Library Hijacking
➖ Polkit (CVE 2021-3560)
➖ PwnKit (CVE 2021-4034)
➖ DirtyPipe (CVE 2022-0847)
#туториал
Эта шпаргалка с примерами, предназначена тех, кто готовится к OSCP, чтобы помочь им понять различные методы повышения привилегий на компьютерах под управлением Linux и CTFS. Существует несколько способов выполнения одной и той же задачи.
В материале разбираются следующие темы:
➖ Абьюз прав Sudo
➖ SUID Binaries
➖ Capabilities
➖ Эскалация привилегий Lxd
➖ Эскалация привилегий Docker
➖ Эксплоит джобов Cron
➖ Запись в /etc/passwd
➖ Неправильно сконфигурированный NFS
➖ Эксплоит Wildcard
➖ Эскалация привилегий LD_Preload
➖ Эксплоит PATH Variable
➖ Python Library Hijacking
➖ Polkit (CVE 2021-3560)
➖ PwnKit (CVE 2021-4034)
➖ DirtyPipe (CVE 2022-0847)
#туториал
❤🔥13👍8👏2❤1
SadServers — это SaaS, где пользователи могут проверить свои навыки устранения неполадок на реальных серверах Linux.
Там есть наборы сценариев, описание того, что не так, и тест, чтобы проверить, была ли проблема решена. Сервер запускается на лету, пользователи получают SSH через веб (уничтожаемый по истечении отведенного на решение задачи времени), а затем можно пытаться решить проблему.
Проблемы включают в себя распространенное ПО, работающее под управлением Linux, такое как БД или веб-сервера. Также включены сценарии, в которых необходимо быть знакомым с технологией, связанной с проблемой, например, вопросы по Docker. Задачи по большей части соответствуют «боевым», из реальной серверной.
Сервис ориентирован на пользователей, которые являются профессиональными разработчиками ПО, системными администраторами, инженерами DevOps/SRE и смежными должностями, требующими навыков отладки серверов и устранения неполадок.
#полезный софт
Там есть наборы сценариев, описание того, что не так, и тест, чтобы проверить, была ли проблема решена. Сервер запускается на лету, пользователи получают SSH через веб (уничтожаемый по истечении отведенного на решение задачи времени), а затем можно пытаться решить проблему.
Проблемы включают в себя распространенное ПО, работающее под управлением Linux, такое как БД или веб-сервера. Также включены сценарии, в которых необходимо быть знакомым с технологией, связанной с проблемой, например, вопросы по Docker. Задачи по большей части соответствуют «боевым», из реальной серверной.
Сервис ориентирован на пользователей, которые являются профессиональными разработчиками ПО, системными администраторами, инженерами DevOps/SRE и смежными должностями, требующими навыков отладки серверов и устранения неполадок.
#полезный софт
👍19👏2
Очередной #дайджест, но теперь с уроками по Django для админов
🌕 Что это такое, порядок установки. Что из себя представляет фреймворк, создание виртуального окружения и способы запуска тестового веб-сервера
🌕 Маршрутизация, обработка исключений запросов. Определение шаблонов для маршрутов, типы параметров: int, str, slug, uuid, path, функция re_path()
🌕 CRUD — основы ORM. Рассматриваются базовые операции добавления, чтения, изменения и удаления записей из таблицы БД с использованием ORM-интерфейса
🌕 Формирование URL-адресов. Способы формирования динамических и статических маршрутов в шаблонах с помощью тега url и метода модели get_absolute_url()
🌕 ForeignKey. Узнаете как создавать связи между таблицами (моделями) БД
🌕 Что это такое, порядок установки. Что из себя представляет фреймворк, создание виртуального окружения и способы запуска тестового веб-сервера
🌕 Маршрутизация, обработка исключений запросов. Определение шаблонов для маршрутов, типы параметров: int, str, slug, uuid, path, функция re_path()
🌕 CRUD — основы ORM. Рассматриваются базовые операции добавления, чтения, изменения и удаления записей из таблицы БД с использованием ORM-интерфейса
🌕 Формирование URL-адресов. Способы формирования динамических и статических маршрутов в шаблонах с помощью тега url и метода модели get_absolute_url()
🌕 ForeignKey. Узнаете как создавать связи между таблицами (моделями) БД
❤🔥14🔥3👍2
#вопрос_с_собеседования
Где физически находятся inodes
Будет зависеть от файловой системы. Например, в ext2, ext3 хранится перед блоками данных. Это атрибут не диска, а файловой системы.
Иноды хранятся в таблицах. В каждой группе блоков в разделе есть такая таблица.
Может быть каталог инодов и имен, которые с ними связаны. Но это также будет зависеть от файловой системы. В fat32 их нет.
Краткий ответ
Имена inodes (имена файлов, каталогов, устройств и т. д.) хранятся на диске в каталогах. В каталоге хранятся только имена и соответствующие номера inode. Фактическое дисковое пространство для именованных данных хранится в пронумерованном индексном узле, а не в каталоге. Айнода просто указывает на файл и каталог
Где физически находятся inodes
❤17🥱2⚡1🔥1😁1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤3
🧑🎓😎 Еще одна серия с мероприятия OFFZONE 2023
Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.
MikroTik Nightmare
Авторское исследование о безопасности оборудования MikroTik в жанре offensive. Будут рассмотрены недостатки безопасности RouterOS, техники пивотинга, постэксплуатации, MitM‑атак, угона трафика, а также специальный ремикс на работу s0i37, в рамках которого спикер нашел новый способ L2‑туннелирования против машин на Windows с использованием маршрутизатора MikroTik
Смотреть
#видео
Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.
MikroTik Nightmare
Авторское исследование о безопасности оборудования MikroTik в жанре offensive. Будут рассмотрены недостатки безопасности RouterOS, техники пивотинга, постэксплуатации, MitM‑атак, угона трафика, а также специальный ремикс на работу s0i37, в рамках которого спикер нашел новый способ L2‑туннелирования против машин на Windows с использованием маршрутизатора MikroTik
Смотреть
#видео
🔥7
Поговорим о команде enable. Она включает или отключает встроенные команды оболочки.
Отключение встроенных команды позволяет выполнить дисковую команду, имеющую то же имя, что и встроенная команда оболочки, без указания полного пути, даже если оболочка ищет встроенные команды перед дисковыми командами.
Запускаем:
И видим: test is a shell builtin. То есть используется команда test встроенная в оболочку. А не та что лежит на пути в test: /usr/bin/test. Воспользуемся дисковой версией этой утилиты:
И получим такое: test is /usr/bin/test. Получается мы сделали некое переключение. И по факту используем разные версии test.
Чтобы включить обратно встроенную команду test в оболочке, выполняем:
Можно подгрузить расширения поставляемые с оболочкой. Некие плагины, экстеншены. Для этого эти экстеншены нужно установить:
Оно установится в папку /usr/lib/bash/. В ней будут всякие mkdir, rm, sleep и т.п. По сути это те же дисковые команды, только экстеншены для оболочки.
Для начала узнаем дисковую версию команды mkdir:
mkdir (GNU coreutils) 8.32
Теперь загружаем экстеншен в оболочку:
Получаем такое: -bash: mkdir: --: invalid option
Теперь запускаем:
Видим: mkdir is a shell builtin, то есть теперь mkdir используется не системный (дисковый), а тот что подгружен в оболочку bash.
Например, мы снесли все системные бинарники и остался только bash. Через подгрузку экстеншенов можно без проблем обслуживать свою операционную систему, даже если в системе пропал mkdir и т.п.
Чтобы посмотреть что вообще подгружено в оболочку, воспользуемся командой:
Получим отчет по текущему процессу, что подгружено в данный момент в оболочку и используется.
С версии 4.4 в bash появилась переменная BASH_LOADABLES_PATH, с помощью нее можно задать путь для поиска экстеншенов. Тогда при подгрузке этих модулей, не нужно будет использовать полные пути.
#гайд
Отключение встроенных команды позволяет выполнить дисковую команду, имеющую то же имя, что и встроенная команда оболочки, без указания полного пути, даже если оболочка ищет встроенные команды перед дисковыми командами.
Запускаем:
bash
type test
И видим: test is a shell builtin. То есть используется команда test встроенная в оболочку. А не та что лежит на пути в test: /usr/bin/test. Воспользуемся дисковой версией этой утилиты:
enable -n test
type test
И получим такое: test is /usr/bin/test. Получается мы сделали некое переключение. И по факту используем разные версии test.
Чтобы включить обратно встроенную команду test в оболочке, выполняем:
enable test
Можно подгрузить расширения поставляемые с оболочкой. Некие плагины, экстеншены. Для этого эти экстеншены нужно установить:
apt/yum install bash-builtins
Оно установится в папку /usr/lib/bash/. В ней будут всякие mkdir, rm, sleep и т.п. По сути это те же дисковые команды, только экстеншены для оболочки.
Для начала узнаем дисковую версию команды mkdir:
mkdir --version
mkdir (GNU coreutils) 8.32
Теперь загружаем экстеншен в оболочку:
enable -f /usr/lib/bash/mkdir mkdir
mkdir --version
Получаем такое: -bash: mkdir: --: invalid option
Теперь запускаем:
type mkdir
Видим: mkdir is a shell builtin, то есть теперь mkdir используется не системный (дисковый), а тот что подгружен в оболочку bash.
Например, мы снесли все системные бинарники и остался только bash. Через подгрузку экстеншенов можно без проблем обслуживать свою операционную систему, даже если в системе пропал mkdir и т.п.
Чтобы посмотреть что вообще подгружено в оболочку, воспользуемся командой:
lsof +fg -p $$
Получим отчет по текущему процессу, что подгружено в данный момент в оболочку и используется.
С версии 4.4 в bash появилась переменная BASH_LOADABLES_PATH, с помощью нее можно задать путь для поиска экстеншенов. Тогда при подгрузке этих модулей, не нужно будет использовать полные пути.
BASH_LOADABLES_PATH=/usr/lib/bash/
enable -f sleep sleep
#гайд
👍14🎉3🤩3🔥2👏2
Книга Ansible for DevOps: Server and configuration management for humans
Ansible — система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Если у вас есть опыт работы в сфере DevOps, при помощи данного руководства вы узнаете, как, используя Ansible, автоматизировать поставку программного обеспечения, управлять конфигурацией и развёртывать приложения.
В книге рассматриваются следующие темы:
✔️Базовые команды;
✔️Основные инструменты;
✔️Работа с плейбуками;
✔️Безопасность и многие другие.
Преимущества:
➕ Множество примеров кода;
➕ Широкий спектр тем.
Недостатки:
➖ Не замечено.
Взять ее можно тут
#книги
Ansible — система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Если у вас есть опыт работы в сфере DevOps, при помощи данного руководства вы узнаете, как, используя Ansible, автоматизировать поставку программного обеспечения, управлять конфигурацией и развёртывать приложения.
В книге рассматриваются следующие темы:
✔️Базовые команды;
✔️Основные инструменты;
✔️Работа с плейбуками;
✔️Безопасность и многие другие.
Преимущества:
➕ Множество примеров кода;
➕ Широкий спектр тем.
Недостатки:
➖ Не замечено.
Взять ее можно тут
#книги
🔥6👍2🥰1
#вопросы_с_собеседования
Где хранится информация об именах файлов, директорий?
Inodes не содержат имён файлов, только другие метаданные файла.
Каталоги Unix представляют собой списки ассоциативных структур, каждая из которых содержит одно имя файла и один номер индекса.
Драйвер файловой системы должен найти каталог, ищущий определенное имя файла, а затем преобразовать имя файла в правильный соответствующий номер индекса.
Таким образом имя файла/директории хранится в информационной структуре каталогов.
Где хранится информация об именах файлов, директорий?
👍5🔥3
🧐🔎 Отслеживание изменений базы данных SQLite в Git
В статье описан простой метод использования git для хранения изменений, внесённых в sqlite базу данных.
SQLite хранит данные в двоичном формате. Если вы запустите cat mydb.sqlite, вы увидите кучу непонятностей, которая совсем не похожа на структурированные данные. Если хотите отслеживать изменения и обновления БД с помощью Git, вы не сможете увидеть полные различия. Вы увидите, что файл изменился, а не то, что именно изменилось:
Есть ли способ обойти это? Есть, и объяснение его ждет вас тут
#гайд
В статье описан простой метод использования git для хранения изменений, внесённых в sqlite базу данных.
SQLite хранит данные в двоичном формате. Если вы запустите cat mydb.sqlite, вы увидите кучу непонятностей, которая совсем не похожа на структурированные данные. Если хотите отслеживать изменения и обновления БД с помощью Git, вы не сможете увидеть полные различия. Вы увидите, что файл изменился, а не то, что именно изменилось:
diff --git a/mydb.sqlite b/mydb.sqlite
index f412c72..8f49ea5 100644
Binary files a/mydb.sqlite and b/mydb.sqlite differ
Есть ли способ обойти это? Есть, и объяснение его ждет вас тут
#гайд
🔥14👍6
🤔 Подготовили #дайджест материалов по безопасности и полезным тулзам
🔹 Security Insights Specification — механизм для представления информации о безопасности проекта
🔹 k'exp — научитесь понимать Kubernetes с помощью визуала
🔹 Kuik: kube-image-keeper — автоматизированное управление cache’ем для всех используемых образов
🔹 Управление Linux-сервером — почему настройка и управление Linux-сервером на своём собственном железе/хостинге это круто
🔹 Практическое руководство по созданию Helm чарта — опыт создания Helm чарта и его запуска, а также методы деплоя приложения без Helm
🔹 Security Insights Specification — механизм для представления информации о безопасности проекта
🔹 k'exp — научитесь понимать Kubernetes с помощью визуала
🔹 Kuik: kube-image-keeper — автоматизированное управление cache’ем для всех используемых образов
🔹 Управление Linux-сервером — почему настройка и управление Linux-сервером на своём собственном железе/хостинге это круто
🔹 Практическое руководство по созданию Helm чарта — опыт создания Helm чарта и его запуска, а также методы деплоя приложения без Helm
❤14👏6👍3🥰3🎉3
✏️🧑🎓 Как использовать Cluster API для развертывания кластеров Kubernetes
В статье объясняются основы Cluster API — что это такое, как оно работает, и основные концепции, которые определяют его дизайн.
Покажут вам, как настроить локальный кластер управления, который позволит вам развертывать новые кластеры у облачного провайдера, такого как AWS, а еще, как подготовить кластер и взаимодействовать с ним с помощью Lens.
Читать статью
#туториал
В статье объясняются основы Cluster API — что это такое, как оно работает, и основные концепции, которые определяют его дизайн.
Покажут вам, как настроить локальный кластер управления, который позволит вам развертывать новые кластеры у облачного провайдера, такого как AWS, а еще, как подготовить кластер и взаимодействовать с ним с помощью Lens.
Читать статью
#туториал
👍4
SOC-Forum
Данное мероприятие — это ключевое событие в сфере информационной безопасности в России.
Вас ждет:
👉 2 дня кибербеза
👉 5 тематических секций
👉 90 докладов
Среди докладов будет следующее:
🔹 Какие задачи стоят перед CISO? Защита ключевых бизнес-процессов и способность влиять на них со стороны безопасности. Необходимые шаги и примеры из жизни
🔹 Роль ИБ в ИТ
🔹 Киберучения с организациями финансовой сферы
🔹 Стратегия ИБ в условиях цифровой трансформации
🔹 Как небольшим организациям защититься от больших угроз
🔹 Исследование группировки Lazarus при атаке на промышленные предприятия
🔹 Malware and Cryptography
и это лишь малая часть того, что будет происходить
Регистрация тут
#мероприятие
Данное мероприятие — это ключевое событие в сфере информационной безопасности в России.
Вас ждет:
👉 2 дня кибербеза
👉 5 тематических секций
👉 90 докладов
Среди докладов будет следующее:
🔹 Какие задачи стоят перед CISO? Защита ключевых бизнес-процессов и способность влиять на них со стороны безопасности. Необходимые шаги и примеры из жизни
🔹 Роль ИБ в ИТ
🔹 Киберучения с организациями финансовой сферы
🔹 Стратегия ИБ в условиях цифровой трансформации
🔹 Как небольшим организациям защититься от больших угроз
🔹 Исследование группировки Lazarus при атаке на промышленные предприятия
🔹 Malware and Cryptography
и это лишь малая часть того, что будет происходить
Регистрация тут
#мероприятие
❤2👍2🔥2
Есть инструмент set -xve для отладки bash скриптов. Это мастхев фича именно на момент, создания чего-либо т. к. не всегда логика может работать правильно, а с set -xve, можно вовремя увидеть все значения переменных и т.п. не используя мусорные конструкции, например, echo «Error in function xxx».
Конструкцию, обычно, используют так:
Ключи команды set:
x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.
Рассмотрим пример:
Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
После выполнения скрипта, получаем нумерацию строк:
Теперь если скрипт где-то вылетает с плохим статусом (либо происходит что-то другое), всегда можно узнать в какой строке это приключилось, не бегая по огромному куску кода.
Немного украшательств, экспортируем PS4:
Происходит подкрашивание запускаемых строчек.
С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.
#гайд
Конструкцию, обычно, используют так:
#!/bin/bash -xve
set -xve
Ключи команды set:
x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.
Рассмотрим пример:
Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
#!/bin/bash -xve
PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
bar=10
echo ${bar}
echo $((6 + 6))
После выполнения скрипта, получаем нумерацию строк:
bar=10
+(./script.sh:6): foo=10
echo ${bar}
+(./script.sh:7): echo 10
10
echo $((6 + 6))
+(./script.sh:8): echo 12
4
Теперь если скрипт где-то вылетает с плохим статусом (либо происходит что-то другое), всегда можно узнать в какой строке это приключилось, не бегая по огромному куску кода.
Немного украшательств, экспортируем PS4:
PS4='\033[0;33m+(${BASH_SOURCE}:${LINENO}):\033[0m ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
Происходит подкрашивание запускаемых строчек.
С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.
#гайд
❤🔥17🔥12❤3
Подборка лучших статей «Библиотеки devops’а» за октябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
☁️🧩 ТОП-10 бессерверных фреймворков
🛡️ 8 способов защиты от манипуляций на работе
📚 ТОП-8 книг по DevOps в 2023 году
❔ Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
🤔 9 мифов об IT и найме айтишников
☁️🧩 ТОП-10 бессерверных фреймворков
🛡️ 8 способов защиты от манипуляций на работе
📚 ТОП-8 книг по DevOps в 2023 году
❔ Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
🤔 9 мифов об IT и найме айтишников
👍6🔥1