OWASP oder Open Web Security Project ist eine gemeinnützige Organisation, die sich auf die Verbesserung der Sicherheit von Software und Webanwendungen konzentriert.
Die Organisation veröffentlicht eine Liste der wichtigsten Sicherheitslücken im Web, basierend auf den Daten verschiedener Sicherheitsorganisationen.
Die Sicherheitslücken im Web werden je nach Ausnutzbarkeit, Erkennbarkeit und Auswirkungen auf die Software priorisiert.
- Ausnutzbarkeit -
Was ist erforderlich, um die Sicherheitslücke auszunutzen? Höchste Ausnutzbarkeit, wenn der Angriff nur einen Webbrowser benötigt, und die niedrigste ist erweiterte Programmierung und Tools.
- Erkennbarkeit -
Wie einfach ist es, die Bedrohung zu erkennen? Am höchsten sind die Informationen, die auf URL, Formular oder Fehlermeldung angezeigt werden, und am niedrigsten ist der Quellcode.
- Aufprall oder Beschädigung -
Wie viel Schaden wird angerichtet, wenn die Sicherheitslücke aufgedeckt oder angegriffen wird? Am höchsten ist ein vollständiger Systemabsturz und am niedrigsten ist überhaupt nichts.
Das Hauptziel von OWASP Top 10 ist es, die Entwickler, Designer, Manager, Architekten und Organisationen über die wichtigsten Sicherheitslücken aufzuklären.
Die Top 10 Sicherheitslücken gemäß OWASP Top 10 sind:
- SQL-Injektion
- Cross Site Scripting
- Unterbrochene Authentifizierung und Sitzungsverwaltung
- Unsichere direkte Objektreferenzen
- Fälschung von Cross Site Request
- Sicherheitsfehlkonfiguration
- Unsicherer kryptografischer Speicher
- Fehler beim Einschränken des URL-Zugriffs
- Unzureichender Transportschichtschutz
- Nicht validierte Weiterleitungen und Weiterleitungen
SQL-Injektion
Beschreibung
Injection ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, Backend-SQL-Anweisungen durch Manipulation der vom Benutzer angegebenen Daten zu ändern.
Die Injektion erfolgt, wenn die Benutzereingabe als Teil eines Befehls oder einer Abfrage an einen Interpreter gesendet wird und der Interpreter dazu verleitet wird, unbeabsichtigte Befehle auszuführen, und Zugriff auf nicht autorisierte Daten gewährt.
Der SQL-Befehl, der bei Ausführung durch eine Webanwendung auch die Back-End-Datenbank verfügbar machen kann.
Implikation
- Ein Angreifer kann schädliche Inhalte in die anfälligen Felder einfügen.
- Vertrauliche Daten wie Benutzernamen, Passwörter usw. können aus der Datenbank gelesen werden.
- Datenbankdaten können geändert werden (Einfügen / Aktualisieren / Löschen).
- Administrationsvorgänge können in der Datenbank ausgeführt werden
Gefährdete Objekte
- Eingabefelder
- URLs, die mit der Datenbank interagieren.
Beispiele:
- SQL-Injection auf der Anmeldeseite
Anmelden bei einer Anwendung ohne gültige Anmeldeinformationen.
Ein gültiger Benutzername ist verfügbar und ein Kennwort ist nicht verfügbar.
Test-URL: http://demo.testfire.net/default.aspx
Benutzername: sjones
Passwort: 1 = 1 'oder pass123
SQL-Abfrage erstellt und wie folgt an Interpreter gesendet
SELECT * FROM Users WHERE User_Name = sjones AND Password = 1 = 1 'oder pass123;
Empfehlungen
- Weiße Auflistung der Eingabefelder
- Vermeiden Sie es, detaillierte Fehlermeldungen anzuzeigen, die für einen Angreifer nützlich sind.
Cross Site Scripting
Beschreibung
Cross Site Scripting wird in Kürze auch als XSS bezeichnet.
XSS-Schwachstellen zielen auf Skripte ab, die in eine Seite eingebettet sind und auf der Clientseite ausgeführt werden, dh auf dem Benutzerbrowser und nicht auf dem Server. Diese Fehler können auftreten, wenn die Anwendung nicht vertrauenswürdige Daten ohne ordnungsgemäße Überprüfung an den Webbrowser sendet.
Angreifer können XSS verwenden, um schädliche Skripts für die Benutzer in diesem Fall auszuführen. Da der Browser nicht wissen kann, ob das Skript vertrauenswürdig ist oder nicht, wird das Skript ausgeführt, und der Angreifer kann Sitzungscookies entführen, Websites entstellen oder den Benutzer auf unerwünschte und böswillige Websites umleiten.
XSS ist ein Angriff, mit dem der Angreifer die Skripte im Browser des Opfers ausführen kann.
Implikation:
- Wenn ein Angreifer diese Sicherheitslücke ausnutzt, kann er Skripte in die Anwendung einfügen, Sitzungscookies stehlen, Websites entstellen und Malware auf den Computern des Opfers ausführen.
Gefährdete Objekte
- Eingabefelder
- URLs
Beispiele
1. http://www.vulnerablesite.com/home?" < script > alert(" xss") script >
Wenn das obige Skript in einem Browser ausgeführt wird, wird ein Meldungsfeld angezeigt, wenn die Site für XSS anfällig ist.
Der schwerwiegendere Angriff kann ausgeführt werden, wenn der Angreifer Sitzungscookies anzeigen oder speichern möchte.
2. http://demo.testfire.net/search.aspx?txtSearch width = 500 height 500> iframe>
Wenn das obige Skript ausgeführt wird, lädt der Browser einen unsichtbaren Frame, der auf http://google.com verweist .
Der Angriff kann schwerwiegend gemacht werden, indem ein schädliches Skript im Browser ausgeführt wird.
Empfehlungen
- White Listing Eingabefelder
- Eingabe Ausgabe Codierung
Unterbrochene Authentifizierung und Sitzungsverwaltung
Beschreibung
Die Websites erstellen normalerweise ein Sitzungscookie und eine Sitzungs-ID für jede gültige Sitzung. Diese Cookies enthalten vertrauliche Daten wie Benutzername, Passwort usw. Wenn die Sitzung entweder durch Abmelden beendet oder der Browser abrupt geschlossen wird, sollten diese Cookies für jede Sitzung ungültig werden Es sollte einen neuen Cookie geben.
Wenn die Cookies nicht ungültig werden, sind die sensiblen Daten im System vorhanden. Wenn ein Benutzer beispielsweise einen öffentlichen Computer (Cyber Cafe) verwendet, werden die Cookies der anfälligen Site auf dem System gespeichert und einem Angreifer ausgesetzt. Ein Angreifer verwendet nach einiger Zeit denselben öffentlichen Computer. Die vertraulichen Daten sind gefährdet.
Auf die gleiche Weise schließt ein Benutzer, der einen öffentlichen Computer verwendet, den Browser abrupt, anstatt sich abzumelden. Ein Angreifer verwendet dasselbe System. Wenn er dieselbe anfällige Site durchsucht, wird die vorherige Sitzung des Opfers geöffnet. Der Angreifer kann tun, was er will, indem er Profilinformationen, Kreditkarteninformationen usw. stiehlt.
Es sollte eine Überprüfung durchgeführt werden, um die Stärke der Authentifizierung und des Sitzungsmanagements zu ermitteln. Schlüssel, Sitzungstoken und Cookies sollten ordnungsgemäß implementiert werden, ohne dass Kennwörter beeinträchtigt werden.
Gefährdete Objekte
- Sitzungs-IDs, die auf der URL verfügbar gemacht werden, können zu einem Angriff auf die Sitzungsfixierung führen.
- Sitzungs-IDs vor und nach dem Abmelden und Anmelden gleich.
- Sitzungszeitlimits sind nicht korrekt implementiert.
- Die Anwendung weist jeder neuen Sitzung dieselbe Sitzungs-ID zu.
- Authentifizierte Teile der Anwendung werden mit SSL geschützt und Kennwörter werden in gehashtem oder verschlüsseltem Format gespeichert.
- Die Sitzung kann von einem Benutzer mit geringen Berechtigungen wiederverwendet werden.
Implikation
- Mithilfe dieser Sicherheitsanfälligkeit kann ein Angreifer eine Sitzung entführen und unbefugten Zugriff auf das System erhalten, wodurch nicht autorisierte Informationen offengelegt und geändert werden können.
- Die Sitzungen können mit gestohlenen Cookies oder mit XSS aufgebockt werden.
Beispiele
- Die Flugreservierungsanwendung unterstützt das Umschreiben von URLs und fügt Sitzungs-IDs in die URL ein:
http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (Verkauf von Tickets nach Malediven)
Ein authentifizierter Benutzer der Website möchte seine Freunde über den Verkauf informieren und sendet eine E-Mail an. Die Freunde erhalten die Sitzungs-ID und können verwendet werden, um nicht autorisierte Änderungen vorzunehmen oder die gespeicherten Kreditkartendaten zu missbrauchen.
- Eine Anwendung ist für XSS anfällig, wodurch ein Angreifer auf die Sitzungs-ID zugreifen und die Sitzung entführen kann.
- Anwendungszeitlimits sind nicht richtig eingestellt. Der Benutzer verwendet einen öffentlichen Computer und schließt den Browser, anstatt sich abzumelden, und geht weg. Der Angreifer verwendet einige Zeit später denselben Browser und die Sitzung wird authentifiziert.
Empfehlungen
- Alle Authentifizierungs- und Sitzungsverwaltungsanforderungen sollten gemäß dem OWASP Application Security Verification Standard definiert werden.
- Stellen Sie niemals Anmeldeinformationen in URLs oder Protokollen bereit.
- Es sollten auch große Anstrengungen unternommen werden, um XSS-Fehler zu vermeiden, die zum Stehlen von Sitzungs-IDs verwendet werden können.
Unsichere direkte Objektreferenzen
Beschreibung
Dies tritt auf, wenn ein Entwickler einen Verweis auf ein internes Implementierungsobjekt wie eine Datei, ein Verzeichnis oder einen Datenbankschlüssel wie in der URL oder als FORM-Parameter verfügbar macht. Der Angreifer kann diese Informationen verwenden, um auf andere Objekte zuzugreifen, und einen zukünftigen Angriff erstellen, um auf die nicht autorisierten Daten zuzugreifen.
Implikation
- Mit dieser Sicherheitsanfälligkeit kann ein Angreifer auf nicht autorisierte interne Objekte zugreifen, Daten ändern oder die Anwendung gefährden.
Gefährdete Objekte
- In der URL.
Beispiele:
Durch Ändern der "Benutzer-ID" in der folgenden URL kann ein Angreifer die Informationen anderer Benutzer anzeigen.
http://www.vulnerablesite.com/userid=123 Geändert zu http://www.vulnerablesite.com/userid=124
Ein Angreifer kann andere Informationen anzeigen, indem er den Benutzer-ID-Wert ändert.
Empfehlungen:
- Implementieren Sie Zugriffskontrollprüfungen.
- Vermeiden Sie es, Objektreferenzen in URLs verfügbar zu machen.
- Überprüfen Sie die Berechtigung für alle Referenzobjekte.
Fälschung von Cross Site Request
Beschreibung
Cross Site Request Forgery ist eine gefälschte Anfrage, die von der Cross Site stammt.
CSRF-Angriff ist ein Angriff, der auftritt, wenn eine böswillige Website, E-Mail oder ein Programm dazu führt, dass der Browser eines Benutzers eine unerwünschte Aktion auf einer vertrauenswürdigen Site ausführt, für die der Benutzer derzeit authentifiziert ist.
Ein CSRF-Angriff zwingt den Browser eines angemeldeten Opfers, eine gefälschte HTTP-Anfrage, einschließlich des Sitzungscookies des Opfers und aller anderen automatisch enthaltenen Authentifizierungsinformationen, an eine anfällige Webanwendung zu senden.
Der Angreifer sendet einen Link an das Opfer, wenn der Benutzer auf die URL klickt, wenn er auf der ursprünglichen Website angemeldet ist. Die Daten werden von der Website gestohlen.
Implikation
- Wenn Sie diese Sicherheitsanfälligkeit als Angreifer verwenden, können Sie Benutzerprofilinformationen ändern, den Status ändern, einen neuen Benutzer im Namen des Administrators erstellen usw.
Gefährdete Objekte
- Benutzerprofilseite
- Benutzerkontoformulare
- Geschäftstransaktionsseite
Beispiele
Das Opfer wird mit gültigen Anmeldeinformationen auf einer Bank-Website angemeldet. Er erhält eine E-Mail von einem Angreifer mit der Aufschrift "Bitte klicken Sie hier, um 1 US-Dollar zu spenden."
Wenn das Opfer darauf klickt, wird eine gültige Anfrage erstellt, um 1 USD an ein bestimmtes Konto zu spenden.
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1
Der Angreifer erfasst diese Anforderung, erstellt die folgende Anforderung und bettet sie in eine Schaltfläche mit der Aufschrift "I Support Cause" ein.
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000
Da die Sitzung authentifiziert ist und die Anfrage über die Bank-Website eingeht, würde der Server dem Angreifer 1000 Dollar überweisen.
Empfehlung
- Fordern Sie die Anwesenheit des Benutzers bei der Ausführung vertraulicher Aktionen an.
- Implementieren Sie Mechanismen wie CAPTCHA, Neuauthentifizierung und eindeutige Anforderungstoken.
Sicherheitsfehlkonfiguration
Beschreibung
Die Sicherheitskonfiguration muss für die Anwendung, die Frameworks, den Anwendungsserver, den Webserver, den Datenbankserver und die Plattform definiert und bereitgestellt werden. Wenn diese ordnungsgemäß konfiguriert sind, kann ein Angreifer unbefugten Zugriff auf vertrauliche Daten oder Funktionen haben.
Manchmal führen solche Fehler zu einem vollständigen Systemkompromiss. Die Software auf dem neuesten Stand zu halten, ist ebenfalls eine gute Sicherheit.
Implikation
- Mithilfe dieser Sicherheitsanfälligkeit kann der Angreifer die zugrunde liegenden Versionsinformationen der Technologie und des Anwendungsservers sowie die Datenbankinformationen auflisten und Informationen über die Anwendung abrufen, um einige weitere Angriffe auszuführen.
Gefährdete Objekte
- URL
- Formularfelder
- Eingabefelder
Beispiele
- Die Administrationskonsole des Anwendungsservers wird automatisch installiert und nicht entfernt. Standardkonten werden nicht geändert. Der Angreifer kann sich mit Standardkennwörtern anmelden und unbefugten Zugriff erhalten.
- Die Verzeichnisliste ist auf Ihrem Server nicht deaktiviert. Der Angreifer erkennt und kann einfach Verzeichnisse auflisten, um eine beliebige Datei zu finden.
Empfehlungen
- Eine starke Anwendungsarchitektur, die eine gute Trennung und Sicherheit zwischen den Komponenten bietet.
- Ändern Sie die Standardbenutzernamen und -kennwörter.
- Deaktivieren Sie Verzeichnislisten und implementieren Sie Zugriffskontrollprüfungen.
Unsicherer kryptografischer Speicher
Beschreibung
Unsicherer kryptografischer Speicher ist eine häufige Sicherheitsanfälligkeit, die besteht, wenn die vertraulichen Daten nicht sicher gespeichert werden.
Die Benutzeranmeldeinformationen, Profilinformationen, Gesundheitsdaten, Kreditkarteninformationen usw. werden unter vertraulichen Daten auf einer Website angezeigt.
Diese Daten werden in der Anwendungsdatenbank gespeichert. Wenn diese Daten nicht ordnungsgemäß gespeichert werden, ohne Verschlüsselung oder Hashing * zu verwenden, sind sie für die Angreifer anfällig.
(* Hashing ist die Umwandlung der Zeichenfolgen in kürzere Zeichenfolgen fester Länge oder einen Schlüssel. Um die Zeichenfolge zu entschlüsseln, sollte der zur Bildung des Schlüssels verwendete Algorithmus verfügbar sein.)
Implikation
- Durch die Verwendung dieser Sicherheitsanfälligkeit kann ein Angreifer solche schwach geschützten Daten stehlen, ändern, um Identitätsdiebstahl, Kreditkartenbetrug oder andere Straftaten durchzuführen.
Gefährdete Objekte
- Anwendungsdatenbank.
Beispiele
In einer der Bankanwendungen verwendet die Kennwortdatenbank ungesalzene Hashes *, um alle Kennwörter zu speichern. Ein SQL-Injection-Fehler ermöglicht es dem Angreifer, die Kennwortdatei abzurufen. Alle ungesalzenen Hashes können in kürzester Zeit brutal erzwungen werden, während die gesalzenen Passwörter Tausende von Jahren dauern würden.
(* Ungesalzene Hashes - Salt sind zufällige Daten, die an die Originaldaten angehängt werden. Salt wird vor dem Hashing an das Passwort angehängt.)
Empfehlungen
- Stellen Sie geeignete starke Standardalgorithmen sicher. Erstellen Sie keine eigenen kryptografischen Algorithmen. Verwenden Sie nur zugelassene öffentliche Algorithmen wie AES, RSA-Kryptografie mit öffentlichem Schlüssel und SHA-256 usw.
- Stellen Sie sicher, dass Offsite-Sicherungen verschlüsselt sind, die Schlüssel jedoch separat verwaltet und gesichert werden.
Fehler beim Einschränken des URL-Zugriffs
Beschreibung
Webanwendungen überprüfen die URL-Zugriffsrechte, bevor sie geschützte Links und Schaltflächen rendern. Anwendungen müssen bei jedem Zugriff auf diese Seiten ähnliche Zugriffskontrollprüfungen durchführen.
In den meisten Anwendungen werden die privilegierten Seiten, Speicherorte und Ressourcen den privilegierten Benutzern nicht angezeigt.
Durch eine intelligente Vermutung kann ein Angreifer auf Berechtigungsseiten zugreifen. Ein Angreifer kann auf vertrauliche Seiten zugreifen, Funktionen aufrufen und vertrauliche Informationen anzeigen.
Implikation
- Wenn Sie diesen Sicherheitsanfälligkeits-Angreifer verwenden, können Sie auf die nicht autorisierten URLs zugreifen, ohne sich bei der Anwendung anzumelden und die Sicherheitsanfälligkeit auszunutzen. Ein Angreifer kann auf vertrauliche Seiten zugreifen, Funktionen aufrufen und vertrauliche Informationen anzeigen.
Gefährdete Objekte:
- URLs
Beispiele
- Der Angreifer bemerkt, dass die URL die Rolle als "/ user / getaccounts" angibt. Er ändert sich als "/ admin / getaccounts".
- Ein Angreifer kann der URL eine Rolle hinzufügen.
http://www.vulnerablsite.com kann als http://www.vulnerablesite.com/admin geändert werden
Empfehlungen
- Implementieren Sie strenge Zugriffskontrollprüfungen.
- Authentifizierungs- und Autorisierungsrichtlinien sollten rollenbasiert sein.
- Beschränken Sie den Zugriff auf unerwünschte URLs.
Unzureichender Transportschichtschutz
Beschreibung
Beschäftigt sich mit dem Informationsaustausch zwischen dem Benutzer (Client) und dem Server (Anwendung). Anwendungen übertragen häufig vertrauliche Informationen wie Authentifizierungsdetails, Kreditkarteninformationen und Sitzungstoken über ein Netzwerk.
Durch die Verwendung schwacher Algorithmen oder die Verwendung abgelaufener oder ungültiger Zertifikate oder die Nichtverwendung von SSL kann die Kommunikation nicht vertrauenswürdigen Benutzern zugänglich gemacht werden, wodurch eine Webanwendung gefährdet und vertrauliche Informationen gestohlen werden können.
Implikation
- Mithilfe dieser Sicherheitsanfälligkeit im Web kann ein Angreifer die Anmeldeinformationen legitimer Benutzer abrufen und Zugriff auf die Anwendung erhalten.
- Kann Kreditkarteninformationen stehlen.
Gefährdete Objekte
- Daten, die über das Netzwerk gesendet werden.
Empfehlungen
- Aktivieren Sie sicheres HTTP und erzwingen Sie die Übertragung von Anmeldeinformationen nur über HTTPS.
- Stellen Sie sicher, dass Ihr Zertifikat gültig und nicht abgelaufen ist.
Beispiele:
1. Bei einer Anwendung, die kein SSL verwendet, überwacht ein Angreifer einfach den Netzwerkverkehr und beobachtet ein authentifiziertes Sitzungscookie für Opfer. Ein Angreifer kann diesen Cookie stehlen und einen Man-in-the-Middle-Angriff ausführen.
Nicht validierte Weiterleitungen und Weiterleitungen
Beschreibung
Die Webanwendung verwendet nur wenige Methoden, um Benutzer für einen bestimmten Zweck umzuleiten und auf andere Seiten weiterzuleiten.
Wenn beim Weiterleiten auf andere Seiten keine ordnungsgemäße Überprüfung erfolgt, können Angreifer dies nutzen und Opfer auf Phishing- oder Malware-Websites umleiten oder den Zugriff auf nicht autorisierte Seiten weiterleiten.
Implikation
- Ein Angreifer kann eine URL an den Benutzer senden, die eine echte URL enthält, an die eine verschlüsselte schädliche URL angehängt ist. Ein Benutzer, der nur den Originalteil der vom Angreifer gesendeten URL sieht, kann diese durchsuchen und möglicherweise Opfer werden.
Beispiele
1. http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com
Geändert zu
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com
Empfehlungen
- Vermeiden Sie einfach die Verwendung von Weiterleitungen und Weiterleitungen in der Anwendung. Verwenden Sie bei Verwendung keine Benutzerparameter zur Berechnung des Ziels.
- Wenn die Zielparameter nicht vermieden werden können, stellen Sie sicher, dass der angegebene Wert gültig und für den Benutzer autorisiert ist.
Dieser Artikel wurde von Prasanthi Eati verfasst