Уязвимости №1 | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой уникальный скрипт?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Уязвимости №1

locky

Сеньор
Автор темы
25 Дек 2022
31
25
18
Всех приветствую!
Сегодня мы поговорим об уязвимостях и глянем на одну из них.


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

Распространенные веб-уязвимости:
  • CSRF​

  • XSS​

  • CSS Injection​

  • Vulnerable components​

  • Unvalidated redirects​


После рассмотрения уязвимостей мы можем задаться вопросом:"А как и где мы их возьмем?"
Существует CVE - словарь известных угроз/уязвимостей,к нему мы и обратимся.
На примере возьмём угрозу CVE-2021-1732 - что же за цифры после "CVE" - после слова идет год,а далее номер,присовенный CNA(разработчик,который нашел эту уязвимость)

CVE-2021-1732
Уязвимость в Windows Win32k подсистеме. Win32k — самая популярная подсистема для повышения привилегий. Данная уязвимость не стала исключением. Основные проблемы, которые преследуют эту подсистему — рассинхронизация создания и уничтожения объектов, с которыми работают алгоритмы. Практически всегда это элементы пользовательского интерфейса, которые создаются со случайными значениями параметров инициализации.

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

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

Итак, чтобы повысить привилегии для пользователя, эксплойт выполняет следующие этапы:

  1. Создание и инициализация фэйковых объектов подсистемы Win32k
  2. Использование уязвимости или стандартного механизма ОС для получения маппинга оперативной памяти ядра ОС
  3. Поиск primary Token в памяти запущенного процесса
  4. Модификация привилегий напрямую или с использованием донорского процесса, как правило это процесс System.exe
Эксплойт с самого начала использует механизм поиска базовых адресов в оперативной памяти. Для этого используется функция HmValidateHandle. На основании данных от этой функции собирается примитив для чтения памяти:

QWORD MyRead64(QWORD qwDestAddr)
{
MENUBARINFO pmbi = {};
pmbi.cbSize = sizeof(MENUBARINFO);
if (g_bIsInit)
{

}
else
{
QWORD *pTemp = (QWORD*)LocalAlloc(0x40u, 0x200ui64);
memset(pTemp, 0, 0x200);
QWORD qwBase = 0x000000400000000;
QWORD qwAdd = 0x0000000800000008;
for (int i = 0; i < 0x40; i++)
{
*(pTemp + i) = qwBase + qwAdd*i;
}
*(QWORD *)ref_g_pMem5 = (QWORD)pTemp;
GetMenuBarInfo(g_hWndMax, -3, 1, &pmbi);
g_pmbi_rcBar_left = pmbi.rcBar.left;
bool g_bIsInit = 1;
}

*(QWORD *)ref_g_pMem5 = qwDestAddr - g_pmbi_rcBar_left;
GetMenuBarInfo(g_hWndMax, -3, 1, &pmbi);
return (unsigned int)pmbi.rcBar.left + ((__int64)pmbi.rcBar.top << 32);
}
В качестве примитива на запись используется функция SetWindowLongPtrA. Далее перезатирается токен для выполнения команд с повышенными привелегиями.

Автор материала по уязвимости А.Колесников.



В данной небольшой теме мы разобрались о общем понятии уязвимости и рассмотрели "работающую" из них.
Уязвимости пронумерованы поскольку будут темы по уязвимостям.
 
Like
  • 2
Реакции: 1 users
Активность:
Пока что здесь никого нет