OWASP Sicherheitstest-Checkliste für Webanwendungen
Diese Checkliste wird vom WP STAGING Entwicklungsteam verwendet, um die Anwendung gegen bösartige Angriffe abzusichern.
Informationssammlung
- Die Website manuell erkunden
- Spider/Crawl nach übersehenen oder versteckten Inhalten durchführen
- Auf Dateien prüfen, die Inhalte offenlegen, wie robots.txt, sitemap.xml, .DS_Store
- Caches der großen Suchmaschinen auf öffentlich zugängliche Websites prüfen
- Auf Unterschiede im Inhalt basierend auf dem User Agent prüfen (z.B. mobile Websites, Zugriff als Suchmaschinen-Crawler)
- Web Application Fingerprinting durchführen
- Verwendete Technologien identifizieren
- Benutzerrollen identifizieren
- Einstiegspunkte der Anwendung identifizieren
- Clientseitigen Code identifizieren
- Mehrere Versionen/Kanäle identifizieren (z.B. Web, mobiles Web, mobile App, Webservices)
- Co-gehostete und verwandte Anwendungen identifizieren
- Alle Hostnamen und Ports identifizieren
- Von Drittanbietern gehostete Inhalte identifizieren
Konfigurationsmanagement
- Auf häufig verwendete Anwendungs- und Administrations-URLs prüfen
- Auf alte, Backup- und nicht referenzierte Dateien prüfen
- Unterstützte HTTP-Methoden und Cross Site Tracing (XST) prüfen
- Behandlung von Dateierweiterungen testen
- Auf Sicherheits-HTTP-Header testen (z.B. CSP, X-Frame-Options, HSTS)
- Auf Richtlinien testen (z.B. Flash, Silverlight, robots)
- Auf Nicht-Produktionsdaten in der Live-Umgebung testen und umgekehrt
- Auf sensible Daten im clientseitigen Code prüfen (z.B. API-Schlüssel, Zugangsdaten)
Sichere Übertragung
- SSL-Version, Algorithmen und Schlüssellänge prüfen
- Gültigkeit des digitalen Zertifikats prüfen (Dauer, Signatur und CN)
- Prüfen, dass Zugangsdaten nur über HTTPS übermittelt werden
- Prüfen, dass das Login-Formular über HTTPS ausgeliefert wird
- Prüfen, dass Session-Tokens nur über HTTPS übermittelt werden
- Prüfen, ob HTTP Strict Transport Security (HSTS) verwendet wird
Authentifizierung
- Auf Benutzeraufzählung testen
- Auf Umgehung der Authentifizierung testen
- Auf Brute-Force-Schutz testen
- Passwortqualitätsregeln testen
- „Angemeldet bleiben“-Funktion testen
- Auf Autovervollständigung bei Passwortformularen/-eingaben testen
- Passwortzurücksetzung und/oder -wiederherstellung testen
- Passwortänderungsprozess testen
- CAPTCHA testen
- Multi-Faktor-Authentifizierung testen
- Auf Vorhandensein der Logout-Funktion testen
- Auf Cache-Management bei HTTP testen (z.B. Pragma, Expires, Max-age)
- Auf Standard-Logins testen
- Auf benutzerzugängliche Authentifizierungshistorie testen
- Auf Out-of-Channel-Benachrichtigungen bei Kontosperrungen und erfolgreichen Passwortänderungen testen
- Auf konsistente Authentifizierung über Anwendungen mit gemeinsamer Authentifizierung / SSO testen
Session-Management
- Feststellen, wie das Session-Management in der Anwendung gehandhabt wird (z.B. Tokens in Cookies, Token in URL)
- Session-Tokens auf Cookie-Flags prüfen (httpOnly und secure)
- Geltungsbereich des Session-Cookies prüfen (path und domain)
- Dauer des Session-Cookies prüfen (expires und max-age)
- Session-Beendigung nach maximaler Lebensdauer prüfen
- Session-Beendigung nach relativem Timeout prüfen
- Session-Beendigung nach Logout prüfen
- Testen, ob Benutzer mehrere gleichzeitige Sessions haben können
- Session-Cookies auf Zufälligkeit testen
- Bestätigen, dass neue Session-Tokens bei Login, Rollenwechsel und Logout ausgegeben werden
- Auf konsistentes Session-Management über Anwendungen mit gemeinsamer Session-Verwaltung testen
- Auf Session Puzzling testen
- Auf CSRF und Clickjacking testen
Autorisierung
- Auf Path Traversal testen
- Auf Umgehung des Autorisierungsschemas testen
- Auf vertikale Zugriffskontrollprobleme testen (auch bekannt als Privilege Escalation)
- Auf horizontale Zugriffskontrollprobleme testen (zwischen zwei Benutzern auf derselben Berechtigungsebene)
- Auf fehlende Autorisierung testen
Datenvalidierung
- Auf Reflected Cross Site Scripting testen
- Auf Stored Cross Site Scripting testen
- Auf DOM-basiertes Cross Site Scripting testen
- Auf Cross Site Flashing testen
- Auf HTML Injection testen
- Auf SQL Injection testen
- Auf LDAP Injection testen
- Auf ORM Injection testen
- Auf XML Injection testen
- Auf XXE Injection testen
- Auf SSI Injection testen
- Auf XPath Injection testen
- Auf XQuery Injection testen
- Auf IMAP/SMTP Injection testen
- Auf Code Injection testen
- Auf Expression Language Injection testen
- Auf Command Injection testen
- Auf Overflow testen (Stack, Heap und Integer)
- Auf Format String testen
- Auf inkubierte Schwachstellen testen
- Auf HTTP Splitting/Smuggling testen
- Auf HTTP Verb Tampering testen
- Auf Open Redirection testen
- Auf Local File Inclusion testen
- Auf Remote File Inclusion testen
- Client- und serverseitige Validierungsregeln vergleichen
- Auf NoSQL Injection testen
- Auf HTTP Parameter Pollution testen
- Auf Auto-Binding testen
- Auf Mass Assignment testen
- Auf NULL/Ungültigen Session-Cookie testen
Denial of Service
- Auf Anti-Automatisierung testen
- Auf Kontosperrung testen
- Auf HTTP-Protokoll-DoS testen
- Auf SQL-Wildcard-DoS testen
Geschäftslogik
- Auf Funktionsmissbrauch testen
- Auf fehlende Nichtabstreitbarkeit testen
- Auf Vertrauensbeziehungen testen
- Auf Datenintegrität testen
- Aufgabentrennung testen
Kryptographie
- Prüfen, ob Daten, die verschlüsselt sein sollten, es nicht sind
- Auf falsche Algorithmenverwendung je nach Kontext prüfen
- Auf Verwendung schwacher Algorithmen prüfen
- Auf korrekte Verwendung von Salting prüfen
- Auf Zufallsfunktionen prüfen
Risikofunktionalität – Datei-Uploads
- Testen, dass akzeptable Dateitypen auf einer Whitelist stehen
- Testen, dass Dateigrößenlimits, Upload-Häufigkeit und Gesamtdateianzahl definiert und durchgesetzt werden
- Testen, dass Dateiinhalte dem definierten Dateityp entsprechen
- Testen, dass alle Datei-Uploads eine Antivirus-Prüfung durchlaufen.
- Testen, dass unsichere Dateinamen bereinigt werden
- Testen, dass hochgeladene Dateien nicht direkt im Web-Root zugänglich sind
- Testen, dass hochgeladene Dateien nicht über denselben Hostnamen/Port ausgeliefert werden
- Testen, dass Dateien und andere Medien in das Authentifizierungs- und Autorisierungsschema integriert sind
Risikofunktionalität – Kartenzahlung
- Auf bekannte Schwachstellen und Konfigurationsprobleme bei Webserver und Webanwendung testen
- Auf Standard- oder erratbare Passwörter testen
- Auf Nicht-Produktionsdaten in der Live-Umgebung testen und umgekehrt
- Auf Injection-Schwachstellen testen
- Auf Buffer Overflows testen
- Auf unsichere kryptographische Speicherung testen
- Auf unzureichenden Transportschichtschutz testen
- Auf unsachgemäße Fehlerbehandlung testen
- Auf alle Schwachstellen mit einem CVSS v2 Score > 4.0 testen
- Auf Authentifizierungs- und Autorisierungsprobleme testen
- Auf CSRF testen
HTML 5
- Web Messaging testen
- Auf Web Storage SQL Injection testen
- CORS-Implementierung prüfen
- Offline-Webanwendung prüfen