AppSecs – Telegram
Довольно непримечательный ресурс (по крайней мере я про него раньше не знал) с лабами по инфобезу: https://attackdefense.pentesteracademy.com

После прохождения лаб по докеру в kontra (где бесплатно доступно пару лаб по каждой теме), можно полазить по топику CONTAINER SECURITY, где все бесплатно (тут даже есть лабы на знакомство с технологией, например с тем же докером).

Пример лабы - Misconfigured Docker Socket, где используется сокет движка docker для администрирования.

На странице есть сразу же ответы, как решать таски (в виде pdf файла или видео).

Помимо докера есть такие топики, как:
- WINDOWS SECURITY
- CLOUD SECURITY
- LINUX SECURITY
- WEBAPP PENTESTING BASICS
- ADVANCED PRIV-ESC
- WIFI SECURITY
- DEVSECOPS
- REVERSE ENGINEERING
и др.

В качестве знакомства с новыми темами может быть полезно.
Наткнулся сегодня на вот такой пост. Оказывается компания PortSwigger выпустила еще один сканер, но на этот раз DAST - Dastardly.

Судя по описанию из видео, его достаточно легко интегрировать в CI/CD pipeline'ы. Вот пример из того же поста:

Integration is easy, simply include this Docker run command in your pipeline noscript:

docker run --user $(id -u) --rm -v $(pwd):/dastardly -e \
BURP_START_URL=https://ginandjuice.shop -e \
BURP_REPORT_FILE_PATH=/dastardly/dastardly-report.xml \
https://lnkd.in/esJuB8m8
Come back is real…

Решил на досуге посмотреть доклады и наткнулся на крутой доклад по продвинутым Client-Side атакам. Основная тема — профит от XSS без кук.

Узнал про:
- Service Worker, который работает как прокси-сервер и который может пересылать чувствительные данные на зловредный ресурс.
В докладе показан пример XSS без кук с использованием Service Worker в Sandbox Domain (конкретно c S3 Bucket).

- Early Hints — механизм, предложенный в рамках HTTP/2, который позволяет серверам предоставлять клиентам предварительные подсказки (hints) о ресурсах, которые будут необходимы для отображения запрошенной страницы.

Его особенность в том, что он поддерживается в HTTP/1.1, а его реализация в Chromium сделана так, что (цитата): «Если ответ HTTP начинается на 103 Early Hints, он просто пропускает все байты, которые идут до строчки HTTP/1.1 200 OK»

HTTP/1.1 103 Early Hints
Link: </style.css>; rel=preload; as=style
Link: </noscript.js>; rel=preload; as=noscript

HTTP/1.1 200 OK
Date: Fri, 08 Dec 2017 12:28:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1234

(тело документа)

Такой ответ ломает даже бурп.

- CSP можно не только байпасить, но и использовать как вектор атаки с помощью атрибута csp в iframe, т.к. это позволяет манипулировать CSP ресурса. Однако это не байпас, т.к. работает это, если делать политику строже. В качестве impact’а, например, реагирование на редирект по ресурсам (у пользователя есть доступ к какому-то ресурсу со UUID в URL).

- XS Leaks (Cross-Site Leaks) — это класс уязвимостей в веб-приложениях, которые позволяют атакующему извлекать конфиденциальную информацию о пользователе или его действиях на других сайтах. В качестве примера — Link Injection в Express, где можно выйти за пределы угловых скобок.

#js #study
Может быть полезно.
Ресурс https://devdocs.io — онлайн-инструмент с удобным интерфейсом для доступа к документации множества языков программирования, библиотек, фреймворков и инструментов разработки.

Например, эволюция HTTP и дока по Angular разных версий

#docs #study
Интересная статья про поиск ручек через стат. анализ в JS файлах.

Кстати, из нее можно узнать некоторые особенности таких open source сканеров как Semgrep и CodeQL:
В случае Semgrep разработчики сделали только внутрипроцедурный анализ - то есть Semgrep не понимает как данные передаются между функциями, в том числе через аргументы и возвращаемые значения. То есть уже для вот такого кода Semgrep не поймёт что в вызов fetch() попадает URL "/abc123":

function f(x) {
fetch(x);
}

function g() {
var u = '/abc123';
f(u);
}

CodeQL и Joern более продвинутые, в них есть межпроцедурный анализ. Однако, внутри анализа у них очень простое представление для строк — они не умеют вычислять новые строки на основе существующих (как и числа, кстати). То есть, для вот такого кода они не смогут определить, какое значение получила переменная u:

function f(param) {
var baseURL = '/api/2.0/';
var u = baseURL + 'action?param=' + param;
fetch(u);
}

function main() {
var v = 'abc123';
f(v);
}



https://blog.secsem.ru/ru/mining-requests-from-js-with-static-analysis/
Forwarded from SecLab Blog
Майнинг HTTP-запросов из клиентского JS с помощью статического анализа — часть 2

В предыдущем посте мы посмотрели на базовую идею работы алгоритма и даже построили небольшой анализатор, основанный на ней. В этом посте расскажу ещё часть принципов устройства нашего алгоритма, включая поиск значений аргументов функций и хендлинг объектов типа инстансов XMLHttpRequest, а ещё кое-что про поддерживаемые операции.

Читать пост
А вы знали, что у semgrep есть своя академия?
Forwarded from DevSecOps Talks
Semgrep Academy: новые курсы!

Всем привет!

Недавно мы писали про Semgrep Academy (вот тут). На тот момент, курсов было немного, но! Недавно их стало больше!

Были добавлены:
🍭 API Security Mini Course (16 уроков, 30 минут видео)
🍭 Secure Coding (70 уроков, 2 часа виде)
🍭 Semgrep 101 (27 уроков, 1 час видео)

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

Надеемся, что проект будет развиваться, появятся лабораторные работы и, возможно, экзамены ☺️
Forwarded from HaHacking
🟥  #мероприятия #заметки #offense #defense

➡️На YouTube канале Positive Events уже выкладываются записи докладов с прошедшего киберфестиваля PHDays 2; Представляю Вашему вниманию перечень докладов, запавших мне в сердце😊

🧩 Плейлист ‟Киберфестиваль PHDays 2
🧩 Трансляция на сайте PHDays [ru/en]


🔥 OFFENSE

⭐️Вам письмо: старые новые атаки на почту
(@hahacking 🐇 + @slonser_notes 🐘 )
Уязвимость современной электронной почты к инъекциям;


⭐️Учат в школе” (@webpwn 💣)
Поиск и эксплуатация уязвимостей в системах обучения хакеров;


⭐️Trust no one: red-teaming-инфраструктура на стероидах” (@purple_medved)
Создание архитектуры и администрирование инфраструктуры для проведения пентестов в формате red teaming, инструменты автоматизации malware development и развертывание атакующей инфраструктуры;


⭐️Регионы памяти, или Как я не туда шеллкод загрузил” (@RedTeambro)
О важности определения верного места для полезной нагрузки, о предотвращении множества детектов антивирусом и о том, как атакующему оставаться скрытым от глаз защитных средств;


⭐️Без лица: предъявите вашу кавычку
Риски безопасности биометрических считывателей;

      ...


🔗 DEFENSE

⭐️Операция «Триангуляция»: почему не надо атаковать исследователей
История о самой сложной цепочке атак и шпионском ПО, которые когда-либо были обнаружены специалистами «Лаборатории Касперского»;


⭐️Не самые типичные методы и инструменты, которые использовали злоумышленники в атаках на российские организации

⭐️RCE-уязвимость в Managed ClickHouse глазами специалиста SOC в Yandex Cloud

⭐️Было ваше — стало наше: что полезного можно найти на серверах злоумышленников

   ⭐️  ‟SCA, или как правильно создавать и анализировать SBOM под каждый используемый язык”  (@bh_cat)
Мир управления зависимостями и безопасности открытого программного обеспечения;

...


Спасибо организаторам за организацию площадки, а докладчикам – за их труд и ценный вклад в сообщество!

➡️Приятного просмотра!

   @HaHacking  🐇
Please open Telegram to view this post
VIEW IN TELEGRAM
Доклад был хорош
Вы наверняка знаете, но если вдруг не знаете, то PayloadsAllTheThings — это уникальный репозиторий, наполненный полезными payload-ами и методами обхода.

Например, вот кейс его использования.

#cheatsheet #payload
Forwarded from PurpleBear (Vadim Shelest)
Меня иногда просят посоветовать self-hosted лабы по различным доменам знаний деятельности пентестеров для наработки и совершенствования навыков на практике, поэтому ловите небольшую подборку:

☑️ Kubernetes Goat - Vulnerable by design Kubernetes cluster
☑️ GOAD - Game of Active Directory
☑️
DVWA - Damn Vulnerable Web Application
☑️ DVWS - Damn Vulnerable Web Sockets
☑️ DVHMA - Damn Vulnerable Hybrid Mobile App (Android)
☑️ DVIA - Damn Vulnerable iOS App
☑️ DVIA2 - Damn Vulnerable iOS App v2
☑️ CI/CD Goat - Vulnerable CI/CD environment
☑️ DVGA - Damn Vulnerable GraphQL Application
☑️ VAmPI - Vulnerable REST API
☑️ DVSA - Damn Vulnerable Serverless Application
☑️ DVFaaS - Damn Vulnerable Functions as a Service (AWS Lambda)
☑️ AWS Goat - Damn Vulnerable AWS Infrastructure
☑️ DVCA - Damn Vulnerable Cloud Application (AWS privesc)
☑️ Azure Goat - Damn Vulnerable Azure Infrastructure
☑️ GCP Goat - Damn Vulnerable GCP Infrastructure
☑️ DVTA - Damn Vulnerable Thick Client App
☑️ DVJA - Damn Vulnerable Java (EE) Application
☑️ DVID - Damn Vulnerable IoT Device
☑️ DVAS - Damn Vulnerable Application Scanner
☑️ DVB - Damn Vulnerable Bank
☑️ DVWPS - Damn Vulnerable WordPress Site
☑️ DVNA - Damn Vulnerable NodeJS Application
☑️ DVGM - Damn Vulnerable Grade Management
☑️ Tiredful API - REST API intentionally designed broken App
☑️ DVCSharp - Damn Vulnerable C# Application (API)
☑️ DVRF - Damn Vulnerable Router Firmware
☑️ DVLLMP - Damn Vulnerable LLM Project
☑️ DVLLMA - Damn Vulnerable LLM Agent

Безусловно некоторые из них уже устарели и содержат не самые актуальные баги, а с некоторыми придется повозиться чтобы установить и развернуть, но все же это хорошая отправная точка для погружения в интересующую тематику😎
1🔥1
Взломали Google (почти)

Написал на коленке writeup на таск категории web прошедшего Google CTF.

Из интересного в статье:
- Схема data:,, и как ее можно использовать в своих целях
- Использование event listener
- Особенности fetch() запроса для получения в ответе подконтрольных данных
AppSecs
Взломали Google (почти) Написал на коленке writeup на таск категории web прошедшего Google CTF. Из интересного в статье: - Схема data:,, и как ее можно использовать в своих целях - Использование event listener - Особенности fetch() запроса для получения…
Вредный совет, как можно решать таски (и только таски ctf 🌚), в которых нужен подконтрольный ресурс для отправки эксплойта и получения флага — лабы portswigger, например csrf.

В client-side лабах как правило предоставляется временный сервер для эксплойта. Он доступен в глобальной сети и идеально подходит под такие таски.
Удобно, быстро и бесплатно.
Forwarded from Cybred
https://github.com/gracenolan/Notes

Я инженер по безопасности в Google, и это заметки, сделанные во время подготовки к собеседованиям. Это моя первая работа в сфере безопасности, и многие спрашивали меня, как я учился.

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

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


Learning Tips
Interviewing Tips
Networking
Web Application
Infrastructure (Prod / Cloud) Virtualisation
OS Implementation and Systems
Mitigations
Cryptography, Authentication, Identity
Malware & Reversing
Exploits
Attack Structure
Threat Modeling
Detection
Digital Forensics
Incident Management
Coding & Algorithms
Security Themed Coding Challenges
Почему такой Dockerfile считается плохой практикой?


FROM alpine
RUN echo "top-secret" > /password.txt
RUN rm /password.txt


Один слой создает файл, а следующий его удаляет. Если собрать этот образ и затем его запустить, то никаких следов файла password.txt вы не увидите:

vagrant@vagrant:~$ docker run --rm -it sensitive ls /password.txt
ls: /password.txt: No such file or directory


Однако не позволяйте ввести себя в заблуждение — конфиденциальные данные все равно попали в образ. Чтобы убедиться в этом, экспортируйте образ в файл tar с помощью команды docker save и разархивируйте его:


vagrant@vagrant:~$ docker save sensitive > sensitive.tar
vagrant@vagrant:~$ mkdir sensitive
vagrant@vagrant:~$ cd sensitive
vagrant@vagrant:~$ tar -xf ../sensitive.tar
vagrant@vagrant:~/sensitive$ ls
0c247e34f78415b03155dae3d2ec7ed941801aa8aeb3cb4301eab9519302a3b9.json
552e9f7172fe87f322d421aec2b124691cd80edc9ba3fef842b0564e7a86041e
818c5ec07b8ee1d0d3ed6e12875d9d597c210b488e74667a03a58cd43dc9be1a
8e635d6264340a45901f63d2a18ea5bc8c680919e07191e4ef276860952d0399
manifest.json


Где 0c24...json — конфигурация образа.

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


vagrant@vagrant:~/sensitive$ cat 0c247*.json | jq '.history'
[
{
"created": "2019-10-21T17:21:42.078618181Z",
"created_by": "/bin/sh -c #(nop) ADD
file:fe1f09249227e2da2089afb4d07e16cbf832eeb804120074acd2b8192876cd28 in / "
},
{
"created": "2019-10-21T17:21:42.387111039Z",
"created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\"]",
"empty_layer": true
},
{
"created": "2019-12-16T13:50:43.914972168Z",
"created_by": "/bin/sh -c echo \"top-secret\" > /password.txt"
},
{
"created": "2019-12-16T13:50:45.085349285Z",
"created_by": "/bin/sh -c rm /password.txt"
}
]


Внутри каталога каждого из слоев находится еще один файл tar с содержимым файловой системы на этом слое. Можно легко извлечь файл password.txt

из каталога соответствующего слоя:

vagrant@vagrant:~/sensitive$ tar -xf 55*/layer.tar
vagrant@vagrant:~/sensitive$ cat password.txt
top-secret

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

Звучит как таск на цтф 🙃️️️️️️
Подробнее можно почитать книгу O’Reily «Безопасность контейнеров»

#docker
Знали про такой прикол в JS?

j = -9007199254740991000
j === j +1 // true


Максимальное целое число, которое может быть точно представлено в JavaScript, равно 2^53−1, что соответствует 9007199254740991. Числа, превышающие этот предел, теряют точность. Когда вы пытаетесь добавить 1 к числу, значительно превышающему этот предел, происходит потеря точности, и результат остается прежним.

Где это можно применить? Например, в циклах, где можно контролировать начальное и конечное значение для итераций (например, это одна и та же переменная), тем самым вызвать DoS из-за бесконечного цикла.

#js
👍2🔥1