{% hint style="success" %}
Lernen Sie & üben Sie AWS-Hacking: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Lernen Sie & üben Sie GCP-Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
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-Repositorys einreichen.
{% endhint %}
# ECB
(ECB) Electronic Code Book - symmetrisches Verschlüsselungsschema, das **jeden Block des Klartexts** durch den **Block des Geheimtexts** ersetzt. Es ist das **einfachste** Verschlüsselungsschema. Die Hauptidee besteht darin, den Klartext in **Blöcke von N Bits** (abhängig von der Größe des Eingabedatenblocks, des Verschlüsselungsalgorithmus) aufzuteilen und dann jeden Block des Klartexts mit dem einzigen Schlüssel zu verschlüsseln (entschlüsseln).
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png)
Die Verwendung von ECB hat mehrere Sicherheitsimplikationen:
* **Blöcke aus der verschlüsselten Nachricht können entfernt werden**
* **Blöcke aus der verschlüsselten Nachricht können verschoben werden**
# Erkennung der Schwachstelle
Stellen Sie sich vor, Sie melden sich mehrmals bei einer Anwendung an und erhalten **immer denselben Cookie**. Dies liegt daran, dass der Cookie der Anwendung **`|`** ist.\
Dann generieren Sie zwei neue Benutzer, beide mit dem **gleichen langen Passwort** und **fast** dem **gleichen** **Benutzernamen**.\
Sie stellen fest, dass die **Blöcke von 8B**, in denen die **Informationen beider Benutzer** gleich sind, **gleich** sind. Dann stellen Sie sich vor, dass dies daran liegen könnte, dass **ECB verwendet wird**.
Wie im folgenden Beispiel. Beachten Sie, wie diese **2 decodierten Cookies** mehrmals den Block **`\x23U\xE45K\xCB\x21\xC8`** enthalten.
```
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
```
Das liegt daran, dass der **Benutzername und das Passwort dieser Cookies mehrmals den Buchstaben "a" enthielten** (zum Beispiel). Die **Blöcke**, die **unterschiedlich** sind, sind Blöcke, die **mindestens 1 unterschiedliches Zeichen** enthielten (vielleicht das Trennzeichen "|" oder einen notwendigen Unterschied im Benutzernamen).
Nun muss der Angreifer nur noch herausfinden, ob das Format `` oder `` ist. Um das zu tun, kann er einfach **mehrere Benutzernamen** mit **ähnlichen und langen Benutzernamen und Passwörtern generieren, bis er das Format und die Länge des Trennzeichens findet:**
| Länge des Benutzernamens: | Länge des Passworts: | Länge von Benutzername+Passwort: | Länge des Cookies (nach dem Decodieren): |
| ------------------------- | --------------------- | --------------------------------- | --------------------------------------- |
| 2 | 2 | 4 | 8 |
| 3 | 3 | 6 | 8 |
| 3 | 4 | 7 | 8 |
| 4 | 4 | 8 | 16 |
| 7 | 7 | 14 | 16 |
# Ausnutzung der Schwachstelle
## Entfernen ganzer Blöcke
Nachdem das Format des Cookies bekannt ist (`|`), um den Benutzernamen `admin` zu übernehmen, erstellen Sie einen neuen Benutzer namens `aaaaaaaaadmin` und erhalten Sie den Cookie und decodieren Sie ihn:
```
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
```
Wir können das Muster `\x23U\xE45K\xCB\x21\xC8`, das zuvor mit dem Benutzernamen erstellt wurde, der nur `a` enthielt, sehen.\
Dann können Sie den ersten Block von 8B entfernen und Sie erhalten ein gültiges Cookie für den Benutzernamen `admin`:
```
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
```
## Verschieben von Blöcken
In vielen Datenbanken ist es gleich, nach `WHERE username='admin';` oder nach `WHERE username='admin ';` zu suchen _(Beachten Sie die zusätzlichen Leerzeichen)_
Eine weitere Möglichkeit, den Benutzer `admin` zu imitieren, wäre also:
* Generieren Sie einen Benutzernamen, der folgendes erfüllt: `len() + len(` 2 Blöcke von 8Bs generieren wird.
* Generieren Sie dann ein Passwort, das eine genaue Anzahl von Blöcken ausfüllt, die den Benutzernamen und Leerzeichen enthalten, wie z.B.: `admin `
Das Cookie dieses Benutzers wird aus 3 Blöcken bestehen: die ersten 2 Blöcke sind die Blöcke des Benutzernamens + Trennzeichen und der dritte Block ist das Passwort (das den Benutzernamen fälscht): `Benutzername |admin `
**Dann ersetzen Sie einfach den ersten Block durch den letzten und werden den Benutzer `admin` imitieren: `admin |Benutzername`**
## Referenzen
* [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\))