CVE-2009-0229-PoC
PoC для CVE-2009-0229 "Уязвимость чтения файлов через диспетчер печати" LPE AFR (связано с CVE-2020-1048)
Детали
- Автор: Andrei Costin ([email protected])
- Дата PoC: 2010-xx-xx
- Дата публикации: 2020-05-14 (напомнило/вдохновило CVE-2020-1048 — да, я опоздал на вечеринку :D)
- TL;DR
- Если хотите 0days, копайтесь в подсистеме печати и факсов ОС :) — много устаревшего кода по историческим причинам — уязвимостей хватит на всех =)
Заметки
-
Примечание1: Не подтверждено — не уверен на 100%, что это та же ошибка, что вызывает CVE-2009-0229
-
Примечание2: Не подтверждено — может работать на новых системах, таких как Windows Server 2012 и Windows Server 2016
-
Примечание3: Все выпуски Windows поставляются с 4 файлами "Разделительная страница" по умолчанию
- pcl.sep
- pscript.sep
- sysprint.sep
- sysprtj.sep
-
Примечание4: Этот трюк старше Windows 95 =), почти уверен, что он использовался профессионалами для "скрытого восстановления информации" ;)
Предварительные требования
- (локальный атакующий без прав администратора) имеет "права управления принтером"
- вариант1: может добавить новый принтер
- вариант2: может изменить настройки существующего "общесистемного" принтера (часто так бывает)
- "произвольный файл" для эксфильтрации не имеет явного запрета на чтение ("Deny Read")
- крайне маловероятно, так как это сделало бы доступ к файлам для жертвы действительно непрактичным/непригодным к использованию
Выполнение PoC
-
Локальный атакующий настраивает любой принтер, к которому у него есть доступ, чтобы он использовал файл "Разделительная страница", предоставленный атакующим (attack.sep) — теперь у атакующего есть "вооруженный принтер"
- См. раздел "Ссылки на разделительные страницы Windows" ниже для подробностей
-
Локальный атакующий создает файл "Разделительная страница" (attack.sep), используя оператор "@F"/"$F", следующим образом, где предполагается, что файл для эксфильтрации — "C:\secret.txt" (обратите внимание на \ и прямое присоединение к оператору @F)
@
@FC:\\secret.txt
-
Локальному атакующему нужно что-то распечатать с помощью указанного выше "вооруженного" принтера
- Например, локальный атакующий открывает Блокнот, печатает пустой документ через принтер, настроенный выше с файлом разделительной страницы
- Локальный атакующий использует опцию "печать в файл" (например, c:\temp\exfiltrated.out) при печати — есть "печать в файл" .ps в большинстве версий Windows + .xps в новых (http://ps-2.kev009.com/pcpartnerinfo/ctstips/e94a.htm)
- Это делается для того, чтобы содержимое эксфильтрованного файла не попало на принтер (хотя это тоже вариант), а стало немедленно доступно атакующему
-
Улучшение атаки: один файл разделительной страницы может содержать список наиболее распространенных путей/имен файлов для перебора
-
Также есть оператор @L :)
Мелочи
-
Обнаружено еще в 2010 году, когда я проводил исследование/выступления "Взлом принтеров ради интереса и выгоды"
-
Я почти уверен, что подсистемы печати и факсов усеяны уязвимостями еще со времен Windows 3.1 (по историческим причинам)
Ссылки по безопасности
- "Microsoft Security Bulletin MS09-022 - Critical"
- CVE-2009-0229
- CVE-2020-1048
Ссылки на разделительные страницы Windows
- Так выглядят диалоговые окна "Разделительная страница" в различных версиях Windows
- Так выглядит "Печать в файл" в некоторых версиях Windows
- "Separator Page" in "Hands-On Microsoft Windows Server 2016 By Michael Palmer"
- "Create Custom Separator Pages in Windows Server 2012/2016"
- "Use a Separator Page When Printing in Windows"
- "How do I configure a Print Separator Page?"