OWASP Sicherheitstest-Checkliste

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