
Verwundbare REST-API mit den OWASP Top 10 Schwachstellen für Sicherheitstests
Die verwundbare API (Based on OpenAPI 3)

VAmPI ist eine verwundbare API, die mit Flask erstellt wurde und enthält Schwachstellen aus den OWASP Top 10 Schwachstellen für APIs. Es wurde erstellt, weil ich eine verwundbare API wollte, um die Effizienz von Tools zu bewerten, die Sicherheitsprobleme in APIs erkennen. Es enthält einen Ein-/Ausschalter, um die API während des Testens verwundbar oder nicht verwundbar zu machen. Dies ermöglicht eine bessere Abdeckung der Fälle von Falsch-Positiven/Negativen. VAmPI kann auch für Lern-/Lehrzwecke verwendet werden. Weitere Details zu den Schwachstellen finden Sie auf erev0s.com.
Der Ablauf der Aktionen von VAmPI ist wie folgt: Ein nicht registrierter Benutzer kann minimale Informationen über die in der API enthaltenen Dummy-Benutzer sehen. Ein Benutzer kann sich registrieren und dann anmelden, um den während der Anmeldung erhaltenen Token zum Posten eines Buches zu verwenden. Für ein gepostetes Buch werden der Titel und ein Geheimnis über dieses Buch akzeptiert. Jedes Buch ist für jeden Benutzer einzigartig und nur der Besitzer des Buches sollte das Geheimnis sehen dürfen.
Eine kurze Übersicht der enthaltenen Aktionen ist in der folgenden Tabelle zu sehen:
Für weitere Details können Sie entweder VAmPI ausführen und http://127.0.0.1:5000/ui/ besuchen oder einen Dienst wie den Swagger Editor verwenden, indem Sie die OpenAPI-Spezifikation bereitstellen, die im Verzeichnis openapi_specs zu finden ist.
Es ist eine Flask-Anwendung, daher können Sie alle Abhängigkeiten installieren und dann die app.py ausführen.
Um alle Abhängigkeiten zu installieren, führen Sie einfach pip3 install -r requirements.txt und dann python3 app.py aus.
Oder wenn Sie bevorzugen, können Sie es auch über Docker oder Docker Compose ausführen.
docker run -p 5000:5000 erev0s/vampi:latest
[Hinweis: Wenn Sie Docker auf neueren Versionen von macOS ausführen, verwenden Sie -p 5001:5000, um Konflikte mit dem AirPlay-Empfängerdienst zu vermeiden. Alternativ können Sie den AirPlay-Empfängerdienst in Ihren Systemeinstellungen -> Freigaben deaktivieren.]
docker-compose enthält zwei Instanzen, eine mit der sicheren Konfiguration auf Port 5001 und eine weitere mit unsicherer auf Port 5002:
docker-compose up -d
Besuchen Sie den Pfad /ui der ausgeführten API, und eine Swagger UI wird verfügbar sein, um Ihnen den Einstieg zu erleichtern!
http://127.0.0.1:5000/ui/
Wenn Sie das Timeout des nach der Anmeldung erstellten Tokens ändern oder die Umgebung so ändern möchten, dass sie nicht verwundbar ist, können Sie je nachdem, wie Sie die Anwendung ausführen, einige Möglichkeiten nutzen.
python3 app.py ausführen, müssen Sie nur die in der app.py definierten Variablen alive und vuln bearbeiten. Die Variable alive wird in Sekunden gemessen. Wenn Sie also 100 eingeben, läuft der Token nach 100 Sekunden ab. Die Variable vuln ist wie ein Boolean. Wenn Sie sie auf 1 setzen, ist die Anwendung verwundbar, und wenn Sie sie auf 0 setzen, ist die Anwendung nicht verwundbar.docker run-Befehl übergeben oder die Dockerfile bearbeiten und neu erstellen.
Docker run Beispiel: docker run -d -e vulnerable=0 -e tokentimetolive=300 -p 5000:5000 erev0s/vampi:latest
/createdb senden, um die Datenbank zu befüllen.| Aktion | Pfad | Details |
|---|
| GET | /createdb | Erstellt und befüllt die Datenbank mit Dummy-Daten |
| GET | / | VAmPI-Startseite |
| GET | /me | Zeigt den angemeldeten Benutzer an |
| GET | /users/v1 | Zeigt alle Benutzer mit grundlegenden Informationen an |
| GET | /users/v1/_debug | Zeigt alle Details für alle Benutzer an |
| POST | /users/v1/register | Neuen Benutzer registrieren |
| POST | /users/v1/login | Bei VAmPI anmelden |
| GET | /users/v1/{username} | Zeigt Benutzer nach Benutzername an |
| DELETE | /users/v1/{username} | Löscht Benutzer nach Benutzername (nur Administratoren) |
| PUT | /users/v1/{username}/email | E-Mail eines einzelnen Benutzers aktualisieren |
| PUT | /users/v1/{username}/password | Passwort des Benutzers aktualisieren |
| GET | /books/v1 | Ruft alle Bücher ab |
| POST | /books/v1 | Neues Buch hinzufügen |
| GET | /books/v1/{book} | Ruft Buch nach Titel zusammen mit Geheimnis ab |
vulnerable=1 auf einem anderen Port starten und einfach zwischen den beiden wechseln können.In der Dockerfile finden Sie zwei gesetzte Umgebungsvariablen: ENV vulnerable=1 und ENV tokentimetolive=60. Ändern Sie diese nach Belieben, bevor Sie den Docker-Build-Befehl ausführen.