Sicherheitstests - Kurzanleitung
Sicherheitstests sind sehr wichtig, um das System vor böswilligen Aktivitäten im Web zu schützen.
Was ist Sicherheitstest?
Sicherheitstests sind eine Testmethode, mit der festgestellt wird, ob ein Informationssystem Daten schützt und die beabsichtigte Funktionalität beibehält. Sicherheitstests garantieren keine vollständige Sicherheit des Systems, es ist jedoch wichtig, Sicherheitstests als Teil des Testprozesses einzubeziehen.
Sicherheitstests ergreifen die folgenden sechs Maßnahmen, um eine sichere Umgebung bereitzustellen:
Confidentiality - Es schützt vor der Weitergabe von Informationen an unbeabsichtigte Empfänger.
Integrity - Es ermöglicht die Übertragung genauer und korrekter gewünschter Informationen von Sendern zu vorgesehenen Empfängern.
Authentication - Es überprüft und bestätigt die Identität des Benutzers.
Authorization - Es gibt Zugriffsrechte für die Benutzer und Ressourcen an.
Availability - Es stellt die Bereitschaft der Informationen auf Anforderung sicher.
Non-repudiation - Es wird sichergestellt, dass weder der Absender noch der Empfänger das Senden oder Empfangen der Nachricht verweigern.
Beispiel
Das Erkennen einer Sicherheitslücke in einer webbasierten Anwendung erfordert komplexe Schritte und kreatives Denken. Manchmal kann ein einfacher Test das schwerwiegendste Sicherheitsrisiko aufdecken. Sie können diesen sehr einfachen Test in jeder Webanwendung ausprobieren -
Melden Sie sich mit gültigen Anmeldeinformationen bei der Webanwendung an.
Melden Sie sich von der Webanwendung ab.
Klicken Sie im Browser auf die Schaltfläche ZURÜCK.
Überprüfen Sie, ob Sie aufgefordert werden, sich erneut anzumelden, oder ob Sie erneut zur angemeldeten Seite zurückkehren können.
Sicherheitstests können als kontrollierter Angriff auf das System angesehen werden, der Sicherheitslücken auf realistische Weise aufdeckt. Ziel ist es, den aktuellen Status eines IT-Systems zu bewerten. Es ist auch bekannt alspenetration test oder populärer als ethical hacking.
Der Penetrationstest wird in Phasen durchgeführt und hier in diesem Kapitel werden wir den gesamten Prozess diskutieren. In jeder Phase sollte eine ordnungsgemäße Dokumentation durchgeführt werden, damit alle zur Reproduktion des Angriffs erforderlichen Schritte sofort verfügbar sind. Die Dokumentation dient auch als Grundlage für den detaillierten Bericht, den Kunden am Ende eines Penetrationstests erhalten.
Penetrationstest - Workflow
Der Penetrationstest umfasst vier Hauptphasen:
- Fußabdruck
- Scanning
- Enumeration
- Exploitation
Diese vier Schritte werden mehrmals wiederholt, was mit dem normalen SDLC einhergeht.
Schädliche Software (Malware) ist jede Software, die dem Angreifer / Malware-Ersteller die teilweise bis vollständige Kontrolle über das System gibt.
Malwares
Verschiedene Formen von Malware sind unten aufgeführt -
Virus- Ein Virus ist ein Programm, das Kopien von sich selbst erstellt und diese Kopien in andere Computerprogramme, Datendateien oder in den Bootsektor der Festplatte einfügt. Nach erfolgreicher Replikation verursachen Viren schädliche Aktivitäten auf infizierten Hosts, z. B. den Diebstahl von Festplattenspeicher oder CPU-Zeit.
Worm - Ein Wurm ist eine Art von Malware, die eine Kopie von sich selbst im Speicher jedes Computers auf seinem Weg hinterlässt.
Trojan - Trojaner ist eine nicht selbstreplizierende Art von Malware, die schädlichen Code enthält, der bei der Ausführung zum Verlust oder Diebstahl von Daten oder zu möglichen Systemschäden führt.
Adware- Adware, auch als Freeware oder Pitchware bekannt, ist eine kostenlose Computersoftware, die kommerzielle Werbung für Spiele, Desktop-Symbolleisten und Dienstprogramme enthält. Es handelt sich um eine webbasierte Anwendung, die Webbrowserdaten sammelt, um Werbung, insbesondere Popups, gezielt anzusprechen.
Spyware- Spyware ist eine Infiltrationssoftware, die Benutzer anonym überwacht und es einem Hacker ermöglicht, vertrauliche Informationen vom Computer des Benutzers abzurufen. Spyware nutzt Benutzer- und Anwendungsschwachstellen aus, die häufig mit kostenlosen Online-Software-Downloads oder Links verbunden sind, auf die Benutzer klicken.
Rootkit - Ein Rootkit ist eine Software, die von einem Hacker verwendet wird, um Zugriff auf Administratorebene auf einen Computer / ein Netzwerk zu erhalten, der / die über ein gestohlenes Kennwort oder durch Ausnutzen einer Systemanfälligkeit ohne Wissen des Opfers installiert wird.
Vorsichtsmaßnahmen
Die folgenden Maßnahmen können ergriffen werden, um das Vorhandensein von Malware in einem System zu vermeiden:
Stellen Sie sicher, dass das Betriebssystem und die Anwendungen mit Patches / Updates auf dem neuesten Stand sind.
Öffnen Sie niemals seltsame E-Mails, insbesondere solche mit Anhängen.
Überprüfen Sie beim Herunterladen aus dem Internet immer, was Sie installieren. Klicken Sie nicht einfach auf OK, um Popup-Fenster zu schließen. Überprüfen Sie den Herausgeber, bevor Sie die Anwendung installieren.
Installieren Sie die Antivirensoftware.
Stellen Sie sicher, dass Sie die Antivirenprogramme regelmäßig scannen und aktualisieren.
Installieren Sie die Firewall.
Aktivieren und verwenden Sie immer Sicherheitsfunktionen, die von Browsern und Anwendungen bereitgestellt werden.
Anti-Malware-Software
Die folgende Software hilft beim Entfernen der Malware von einem System:
- Microsoft Security Essentials
- Microsoft Windows Defender
- AVG Internet Security
- Spybot - Suchen & Zerstören
- Avast! Home Edition für den persönlichen Gebrauch
- Panda Internet Security
- MacScan für Mac OS und Mac OS X.
Das Verständnis des Protokolls ist sehr wichtig, um einen guten Überblick über Sicherheitstests zu erhalten. Sie werden die Bedeutung des Protokolls erkennen können, wenn wir die Paketdaten zwischen dem Webserver und dem Client abfangen.
HTTP-Protokoll
Das Hypertext Transfer Protocol (HTTP) ist ein Protokoll auf Anwendungsebene für verteilte, kollaborative Hypermedia-Informationssysteme. Dies ist die Grundlage für die Datenkommunikation für das World Wide Web seit 1990. HTTP ist ein generisches und zustandsloses Protokoll, das auch für andere Zwecke verwendet werden kann, indem die Anforderungsmethoden, Fehlercodes und Header erweitert werden.
Grundsätzlich ist HTTP ein TCP / IP-basiertes Kommunikationsprotokoll, mit dem Daten wie HTML-Dateien, Bilddateien, Abfrageergebnisse usw. über das Web übertragen werden. Es bietet eine standardisierte Möglichkeit für Computer, miteinander zu kommunizieren. Die HTTP-Spezifikation gibt an, wie die angeforderten Daten der Clients an den Server gesendet werden und wie die Server auf diese Anforderungen reagieren.
Grundfunktionen
Es gibt drei grundlegende Funktionen, die HTTP zu einem einfachen, aber leistungsstarken Protokoll machen:
HTTP is connectionless- Der HTTP-Client, dh der Browser, initiiert eine HTTP-Anfrage. Nach einer Anfrage trennt sich der Client vom Server und wartet auf eine Antwort. Der Server verarbeitet die Anforderung und stellt die Verbindung zum Client wieder her, um die Antwort zurückzusenden.
HTTP is media independent- Jeder Datentyp kann per HTTP gesendet werden, sofern sowohl der Client als auch der Server wissen, wie mit dem Dateninhalt umzugehen ist. Dies ist sowohl für den Client als auch für den Server erforderlich, um den Inhaltstyp unter Verwendung des entsprechenden MIME-Typs anzugeben.
HTTP is stateless- HTTP ist verbindungslos und dies ist eine direkte Folge davon, dass HTTP ein zustandsloses Protokoll ist. Der Server und der Client kennen sich nur während einer aktuellen Anforderung. Danach vergessen sich beide. Aufgrund dieser Art des Protokolls können weder der Client noch der Browser Informationen zwischen verschiedenen Anforderungen auf den Webseiten speichern.
HTTP / 1.0 verwendet für jeden Anforderungs- / Antwortaustausch eine neue Verbindung, während die HTTP / 1.1-Verbindung für einen oder mehrere Anforderungs- / Antwortaustausche verwendet werden kann.
Die Architektur
Das folgende Diagramm zeigt eine sehr grundlegende Architektur einer Webanwendung und zeigt, wo sich HTTP befindet -
Das HTTP-Protokoll ist ein Anforderungs- / Antwortprotokoll, das auf der Client / Server-Architektur basiert, wobei Webbrowser, Roboter und Suchmaschinen usw. als HTTP-Clients und der Webserver als Server fungieren.
Client - Der HTTP-Client sendet eine Anforderung in Form einer Anforderungsmethode, eines URI und einer Protokollversion an den Server, gefolgt von einer MIME-ähnlichen Nachricht, die Anforderungsmodifikatoren, Clientinformationen und möglichen Textinhalt über eine TCP / IP-Verbindung enthält.
Server - Der HTTP-Server antwortet mit einer Statuszeile, einschließlich der Protokollversion der Nachricht und eines Erfolgs- oder Fehlercodes, gefolgt von einer MIME-ähnlichen Nachricht, die Serverinformationen, Entitätsmetainformationen und möglichen Entitätskörperinhalt enthält.
HTTP - Nachteile
HTTP ist kein vollständig gesichertes Protokoll.
HTTP verwendet Port 80 als Standardport für die Kommunikation.
HTTP wird auf der Anwendungsschicht ausgeführt. Es müssen mehrere Verbindungen für die Datenübertragung erstellt werden, was den Verwaltungsaufwand erhöht.
Für die Verwendung von HTTP sind keine Verschlüsselungs- / digitalen Zertifikate erforderlich.
Details zum HTTP-Protokoll
Um das HTTP-Protokoll eingehend zu verstehen, klicken Sie auf einen der folgenden Links.
HTTP Parameters
HTTP Messages
HTTP Requests
HTTP Responses
HTTP Methods
HTTP Status Codes
HTTP Header Fields
HTTP Security
HTTPS (Hypertext Transfer Protocol über Secure Socket Layer) oder HTTP über SSL ist ein von Netscape entwickeltes Webprotokoll. Es ist kein Protokoll, sondern nur das Ergebnis der Überlagerung von HTTP mit SSL / TLS (Secure Socket Layer / Transport Layer Security).
Kurz gesagt, HTTPS = HTTP + SSL
Wann ist HTTPS erforderlich?
Beim Surfen senden und empfangen wir normalerweise Informationen über das HTTP-Protokoll. Dies führt dazu, dass jeder das Gespräch zwischen unserem Computer und dem Webserver belauschen kann. Oft müssen wir vertrauliche Informationen austauschen, die gesichert werden müssen, und unbefugten Zugriff verhindern.
HTTP-Protokoll, das in den folgenden Szenarien verwendet wird -
- Bank-Websites
- Zahlungs-Gateways
- Shopping-Websites
- Alle Anmeldeseiten
- E-Mail-Apps
Grundlegende Arbeitsweise von HTTPS
Öffentlicher Schlüssel und signierte Zertifikate sind für den Server im HTTPS-Protokoll erforderlich.
Clientanfragen für die Seite https: //
Bei Verwendung einer https-Verbindung reagiert der Server auf die ursprüngliche Verbindung mit einer Liste der vom Webserver unterstützten Verschlüsselungsmethoden.
Als Antwort wählt der Client eine Verbindungsmethode aus und der Client und der Server tauschen Zertifikate aus, um ihre Identität zu authentifizieren.
Danach tauschen sowohl der Webserver als auch der Client die verschlüsselten Informationen aus, nachdem sichergestellt wurde, dass beide denselben Schlüssel verwenden und die Verbindung geschlossen ist.
Zum Hosten von https-Verbindungen muss ein Server über ein öffentliches Schlüsselzertifikat verfügen, in das Schlüsselinformationen mit einer Überprüfung der Identität des Schlüsselbesitzers eingebettet sind.
Fast alle Zertifikate werden von Dritten überprüft, sodass Kunden sicher sein können, dass der Schlüssel immer sicher ist.
Was ist Kodierung und Dekodierung?
Beim Codieren wird eine Folge von Zeichen wie Buchstaben, Zahlen und anderen Sonderzeichen für eine effiziente Übertragung in ein spezielles Format gebracht.
Beim Decodieren wird ein codiertes Format wieder in die ursprüngliche Zeichenfolge konvertiert. Es ist völlig anders als die Verschlüsselung, die wir normalerweise falsch interpretieren.
Codierung und Decodierung werden bei der Datenkommunikation und -speicherung verwendet. Die Codierung sollte NICHT zum Transport sensibler Informationen verwendet werden.
URL-Codierung
URLs können nur mit dem ASCII-Zeichensatz über das Internet gesendet werden. In einigen Fällen enthält die URL neben ASCII-Zeichen auch Sonderzeichen und muss codiert werden. URLs enthalten keine Leerzeichen und werden durch ein Pluszeichen (+) oder durch% 20 ersetzt.
ASCII-Codierung
Der Browser (clientseitig) codiert die Eingabe gemäß dem auf der Webseite verwendeten Zeichensatz, und der Standardzeichensatz in HTML5 ist UTF-8.
Die folgende Tabelle zeigt das ASCII-Symbol des Zeichens und sein gleiches Symbol und schließlich seinen Ersatz, der in der URL verwendet werden kann, bevor er an den Server übergeben wird.
ASCII | Symbol | Ersatz |
---|---|---|
<32 | Codieren Sie mit% xx, wobei xx die hexadezimale Darstellung des Zeichens ist. | |
32 | Raum | + oder% 20 |
33 | ! | % 21 |
34 | "" | % 22 |
35 | # | % 23 |
36 | $ | % 24 |
37 | %. | % 25 |
38 | & | % 26 |
39 | ' | % 27 |
40 | ( | % 28 |
41 | ) | % 29 |
42 | * * | * * |
43 | + | % 2B |
44 | , | % 2C |
45 | - - | - - |
46 | . | . |
47 | /. | % 2F |
48 | 0 | 0 |
49 | 1 | 1 |
50 | 2 | 2 |
51 | 3 | 3 |
52 | 4 | 4 |
53 | 5 | 5 |
54 | 6 | 6 |
55 | 7 | 7 |
56 | 8 | 8 |
57 | 9 | 9 |
58 | :: | % 3A |
59 | ;; | % 3B |
60 | > | % 3C |
61 | = | % 3D |
62 | > | % 3E |
63 | ? | % 3F |
64 | @ | % 40 |
65 | EIN | EIN |
66 | B. | B. |
67 | C. | C. |
68 | D. | D. |
69 | E. | E. |
70 | F. | F. |
71 | G | G |
72 | H. | H. |
73 | ich | ich |
74 | J. | J. |
75 | K. | K. |
76 | L. | L. |
77 | M. | M. |
78 | N. | N. |
79 | Ö | Ö |
80 | P. | P. |
81 | Q. | Q. |
82 | R. | R. |
83 | S. | S. |
84 | T. | T. |
85 | U. | U. |
86 | V. | V. |
87 | W. | W. |
88 | X. | X. |
89 | Y. | Y. |
90 | Z. | Z. |
91 | [ | % 5B |
92 | \. | % 5C |
93 | ]] | % 5D |
94 | ^ | % 5E |
95 | _ | _ |
96 | ` | % 60 |
97 | ein | ein |
98 | b | b |
99 | c | c |
100 | d | d |
101 | e | e |
102 | f | f |
103 | G | G |
104 | h | h |
105 | ich | ich |
106 | j | j |
107 | k | k |
108 | l | l |
109 | m | m |
110 | n | n |
111 | Ö | Ö |
112 | p | p |
113 | q | q |
114 | r | r |
115 | s | s |
116 | t | t |
117 | u | u |
118 | v | v |
119 | w | w |
120 | x | x |
121 | y | y |
122 | z | z |
123 | { | % 7B |
124 | | | % 7C |
125 | }} | % 7D |
126 | ~ | % 7E |
127 | % 7F | |
> 127 | Codieren Sie mit% xx, wobei xx die hexadezimale Darstellung des Zeichens ist |
Was ist Kryptographie?
Kryptographie ist die Wissenschaft zum Ver- und Entschlüsseln von Daten, mit der Benutzer vertrauliche Informationen speichern oder über unsichere Netzwerke übertragen können, sodass sie nur vom beabsichtigten Empfänger gelesen werden können.
Daten, die ohne besondere Maßnahmen gelesen und verstanden werden können, werden aufgerufen plaintext, während die Methode, Klartext zu verschleiern, um seine Substanz zu verbergen, aufgerufen wird encryption.
Verschlüsselter Klartext wird als Chiffretext bezeichnet, und der Vorgang des Zurücksetzens der verschlüsselten Daten in Klartext wird als bezeichnet decryption.
Die Wissenschaft, sichere Kommunikation zu analysieren und zu unterbrechen, ist als Kryptoanalyse bekannt. Die Leute, die das Gleiche tun, werden auch als Angreifer bezeichnet.
Die Kryptographie kann entweder stark oder schwach sein, und die Stärke wird anhand der Zeit und der Ressourcen gemessen, die zur Wiederherstellung des tatsächlichen Klartextes erforderlich wären.
Daher ist ein geeignetes Dekodierungswerkzeug erforderlich, um die stark verschlüsselten Nachrichten zu entschlüsseln.
Es gibt einige kryptografische Techniken, mit denen selbst eine Milliarde Computer, die eine Milliarde Prüfungen pro Sekunde durchführen, den Text nicht entschlüsseln können.
Da die Rechenleistung von Tag zu Tag zunimmt, müssen die Verschlüsselungsalgorithmen sehr stark gemacht werden, um Daten und kritische Informationen vor den Angreifern zu schützen.
Wie funktioniert die Verschlüsselung?
Ein kryptografischer Algorithmus arbeitet in Kombination mit einem Schlüssel (kann ein Wort, eine Zahl oder eine Phrase sein), um den Klartext zu verschlüsseln, und derselbe Klartext verschlüsselt mit unterschiedlichen Schlüsseln in unterschiedlichen Chiffretext.
Daher sind die verschlüsselten Daten vollständig abhängig von einigen Parametern wie der Stärke des kryptografischen Algorithmus und der Geheimhaltung des Schlüssels.
Kryptographietechniken
Symmetric Encryption- Konventionelle Kryptographie, auch als konventionelle Verschlüsselung bekannt, ist die Technik, bei der nur ein Schlüssel sowohl für die Verschlüsselung als auch für die Entschlüsselung verwendet wird. Zum Beispiel DES, Triple DES-Algorithmen, MARS von IBM, RC2, RC4, RC5, RC6.
Asymmetric Encryption- Bei der Kryptografie mit öffentlichem Schlüssel werden zwei Schlüssel zur Verschlüsselung verwendet: ein öffentlicher Schlüssel zum Verschlüsseln von Daten und ein privater Schlüssel zum Entschlüsseln. Der öffentliche Schlüssel wird für die Personen veröffentlicht, während der private Schlüssel geheim gehalten wird. Zum Beispiel RSA, Digital Signature Algorithm (DSA), Elgamal.
Hashing- Hashing ist eine EINWEG-Verschlüsselung, die eine verschlüsselte Ausgabe erzeugt, die nicht oder zumindest nicht einfach rückgängig gemacht werden kann. Zum Beispiel MD5-Algorithmus. Es wird verwendet, um digitale Zertifikate, digitale Signaturen, Speicherung von Passwörtern, Überprüfung der Kommunikation usw. zu erstellen.
Same Origin Policy (SOP) ist ein wichtiges Konzept im Sicherheitsmodell für Webanwendungen.
Was ist die Richtlinie für denselben Ursprung?
Gemäß dieser Richtlinie können Skripte auf Seiten ausgeführt werden, die von derselben Site stammen. Dies kann eine Kombination der folgenden sein:
- Domain
- Protocol
- Port
Beispiel
Der Grund für dieses Verhalten ist die Sicherheit. Wenn Sie try.com in einem Fenster und gmail.com in einem anderen Fenster haben, möchten Sie NICHT, dass ein Skript von try.com auf den Inhalt von gmail.com zugreift oder diesen ändert oder Aktionen im Kontext von gmail in Ihrem Namen ausführt.
Unten finden Sie Webseiten desselben Ursprungs. Wie bereits erläutert, berücksichtigt derselbe Ursprung Domäne / Protokoll / Port.
- http://website.com
- http://website.com/
- http://website.com/my/contact.html
Unten finden Sie Webseiten anderer Herkunft.
- http://www.site.co.uk (eine andere Domain)
- http://site.org (eine andere Domain)
- https://site.com (ein anderes Protokoll)
- http://site.com:8080 (ein anderer Port)
Gleiche Ursprungsrichtlinie Ausnahmen für IE
Internet Explorer hat zwei Hauptausnahmen zu SOP.
Der erste bezieht sich auf "Vertrauenswürdige Zonen". Wenn sich beide Domänen in einer Zone mit hoher Vertrauenswürdigkeit befinden, gilt die Richtlinie für denselben Ursprung nicht vollständig.
Die zweite Ausnahme im IE bezieht sich auf den Port. Der IE enthält keinen Port in der Same Origin-Richtlinie. Daher werden http://website.com und http://wesite.com:4444 vom selben Ursprung betrachtet und es werden keine Einschränkungen angewendet.
Was ist ein Cookie?
Ein Cookie ist eine kleine Information, die von einem Webserver gesendet wird, um sie in einem Webbrowser zu speichern, damit sie später vom Browser gelesen werden kann. Auf diese Weise speichert der Browser einige bestimmte persönliche Informationen. Wenn ein Hacker die Cookie-Informationen erhält, kann dies zu Sicherheitsproblemen führen.
Eigenschaften von Cookies
Hier sind einige wichtige Eigenschaften von Cookies -
Dies sind normalerweise kleine Textdateien mit ID-Tags, die im Browserverzeichnis Ihres Computers gespeichert sind.
Sie werden von Webentwicklern verwendet, um Benutzern zu helfen, effizient auf ihren Websites zu navigieren und bestimmte Funktionen auszuführen.
Wenn der Benutzer dieselbe Website erneut durchsucht, werden die im Cookie gespeicherten Daten an den Webserver zurückgesendet, um die Website über die vorherigen Aktivitäten des Benutzers zu informieren.
Cookies sind unvermeidlich für Websites mit riesigen Datenbanken, die Anmeldungen benötigen und anpassbare Themen haben.
Cookie-Inhalt
Der Cookie enthält die folgenden Informationen:
- Der Name des Servers, von dem das Cookie gesendet wurde.
- Die Lebensdauer des Cookies.
- Ein Wert - normalerweise eine zufällig generierte eindeutige Zahl.
Arten von Cookies
Session Cookies- Diese Cookies sind temporär und werden gelöscht, wenn der Benutzer den Browser schließt. Selbst wenn sich der Benutzer erneut anmeldet, wird ein neues Cookie für diese Sitzung erstellt.
Persistent cookies- Diese Cookies verbleiben auf der Festplatte, es sei denn, der Benutzer löscht sie oder sie verfallen. Der Ablauf des Cookies hängt davon ab, wie lange er dauern kann.
Cookies testen
Hier sind die Möglichkeiten, um die Cookies zu testen -
Disabling Cookies- Als Tester müssen wir den Zugriff auf die Website nach dem Deaktivieren von Cookies überprüfen und überprüfen, ob die Seiten ordnungsgemäß funktionieren. Navigieren Sie zu allen Seiten der Website und achten Sie auf App-Abstürze. Es ist auch erforderlich, den Benutzer darüber zu informieren, dass Cookies erforderlich sind, um die Website zu nutzen.
Corrupting Cookies- Ein weiterer durchzuführender Test besteht darin, die Cookies zu beschädigen. Um dasselbe zu tun, muss man den Speicherort des Cookies der Site finden und es manuell mit gefälschten / ungültigen Daten bearbeiten, die verwendet werden können, um auf interne Informationen aus der Domain zuzugreifen, die dann wiederum zum Hacken der Site verwendet werden können.
Removing Cookies - Entfernen Sie alle Cookies für die Website und überprüfen Sie, wie die Website darauf reagiert.
Cross-Browser Compatibility - Es ist auch wichtig zu überprüfen, ob Cookies in allen unterstützten Browsern von jeder Seite, die Cookies schreibt, ordnungsgemäß geschrieben werden.
Editing Cookies- Wenn die Anwendung Cookies zum Speichern von Anmeldeinformationen verwendet, sollten wir als Tester versuchen, den Benutzer in der Cookie- oder Adressleiste auf einen anderen gültigen Benutzer zu ändern. Durch das Bearbeiten des Cookies sollten Sie sich nicht bei einem anderen Benutzerkonto anmelden.
Anzeigen und Bearbeiten von Cookies
Moderne Browser unterstützen das Anzeigen / Bearbeiten der Cookie-Informationen im Browser selbst. Es gibt Plugins für Mozilla / Chrome, mit denen wir die Bearbeitung erfolgreich durchführen können.
- Bearbeiten Sie das Cookie-Plugin für Firefox
- Bearbeiten Sie dieses Cookie-Plugin für Chrome
Die Schritte sollten ausgeführt werden, um ein Cookie zu bearbeiten -
Laden Sie das Plugin für Chrome von hier
Bearbeiten Sie den Cookie-Wert, indem Sie wie unten gezeigt über Chrome auf das Plugin "Dieses Cookie bearbeiten" zugreifen.
Es gibt verschiedene Methoden / Ansätze, die wir als Referenz für die Durchführung eines Angriffs verwenden können.
Webanwendung - PenTesting-Methoden
Bei der Entwicklung eines Angriffsmodells können die folgenden Standards berücksichtigt werden.
In der folgenden Liste ist OWASP am aktivsten und es gibt eine Reihe von Mitwirkenden. Wir werden uns auf OWASP-Techniken konzentrieren, die jedes Entwicklungsteam vor dem Entwerfen einer Web-App berücksichtigt.
PTES - Penetration Testing Execution Standard
OSSTMM - Open Source-Handbuch für Sicherheitstestmethoden
OWASP-Testtechniken - Öffnen Sie das Sicherheitsprotokoll für Webanwendungen
OWASP Top 10
Das Open Web Application Security Protocol-Team hat die zehn häufigsten Sicherheitslücken veröffentlicht, die in den letzten Jahren im Web häufiger aufgetreten sind. Nachfolgend finden Sie eine Liste der Sicherheitslücken, die in einer webbasierten Anwendung häufiger auftreten.
Anwendung - Hands On
Um jede der Techniken zu verstehen, arbeiten wir mit einer Beispielanwendung. Wir werden den Angriff auf 'WebGoat' durchführen, die J2EE-Anwendung, die explizit mit Sicherheitslücken für Lernzwecke entwickelt wurde.
Die vollständigen Details zum Webgoat-Projekt finden Sie hier https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project. Navigieren Sie zum Herunterladen der WebGoat-Anwendung zuhttps://github.com/WebGoat/WebGoat/wiki/Installation-(WebGoat-6.0) und gehe zum Download-Bereich.
Stellen Sie zum Installieren der heruntergeladenen Anwendung zunächst sicher, dass auf Port 8080 keine Anwendung ausgeführt wird. Sie kann nur mit einem einzigen Befehl installiert werden: java -jar WebGoat-6.0.1-war-exec.jar. Weitere Informationen finden Sie unter WebGoat-Installation
Nach der Installation sollten wir in der Lage sein, auf die Anwendung zuzugreifen, indem wir zu navigieren http://localhost:8080/WebGoat/attack und die Seite wird wie unten gezeigt angezeigt.
Wir können die Anmeldeinformationen von Gast oder Administrator verwenden, die auf der Anmeldeseite angezeigt werden.
Web-Proxy
Um den Datenverkehr zwischen Client (Browser) und Server (System, in dem in unserem Fall die Webgoat-Anwendung gehostet wird) abzufangen, müssen wir einen Webproxy verwenden. Wir werden Burp Proxy verwenden, das von heruntergeladen werden kannhttps://portswigger.net/burp/download.html
Es ist ausreichend, wenn Sie die kostenlose Version der Burp Suite wie unten gezeigt herunterladen.
Burp Suite konfigurieren
Burp Suite ist ein Webproxy, der jedes Informationspaket abfangen kann, das vom Browser und vom Webserver gesendet und empfangen wird. Dies hilft uns, den Inhalt zu ändern, bevor der Client die Informationen an den Webserver sendet.
Step 1- Die App ist auf Port 8080 installiert und Burp ist auf Port 8181 installiert, wie unten gezeigt. Starten Sie die Burp-Suite und nehmen Sie die folgenden Einstellungen vor, um sie wie unten gezeigt in Port 8181 aufzurufen.
Step 2- Wir sollten sicherstellen, dass der Burp Port # 8080 abhört, auf dem die Anwendung installiert ist, damit die Burp-Suite den Datenverkehr abfangen kann. Diese Einstellungen sollten wie unten gezeigt auf der Registerkarte Bereich der Burp Suite vorgenommen werden.
Step 3- Nehmen Sie dann die Proxy-Einstellungen Ihres Browsers vor, um den Port 8181 (Burp Suite-Port) abzuhören. Daher haben wir den Webproxy so konfiguriert, dass der Datenverkehr zwischen dem Client (Browser) und dem Server (Webserver) wie unten gezeigt abgefangen wird.
Step 4 - Der Schnappschuss der Konfiguration wird unten mit Hilfe eines einfachen Workflow-Diagramms gezeigt, wie unten gezeigt
Die Injektionstechnik besteht aus dem Injizieren einer SQL-Abfrage oder eines Befehls unter Verwendung der Eingabefelder der Anwendung.
Webanwendung - Injektion
Eine erfolgreiche SQL-Injection kann vertrauliche Daten aus der Datenbank lesen, ändern und auch Daten aus einer Datenbank löschen. Außerdem kann der Hacker administrative Vorgänge für die Datenbank ausführen, z. B. das Herunterfahren des DBMS / Löschen von Datenbanken.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiele
Die Anwendung verwendet nicht vertrauenswürdige Daten bei der Erstellung des folgenden anfälligen SQL-Aufrufs:
String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";
Hands On
Step 1 - Navigieren Sie wie unten gezeigt zum Bereich SQL Injection der Anwendung.
Step 2- Wie in der Übung angegeben, verwenden wir String SQL Injection, um die Authentifizierung zu umgehen. Verwenden Sie SQL Injection, um sich als Boss ('Neville') anzumelden, ohne das richtige Passwort zu verwenden. Stellen Sie sicher, dass das Profil von Neville angezeigt werden kann und alle Funktionen verfügbar sind (einschließlich Suchen, Erstellen und Löschen).
Step 3 - Wir injizieren eine SQL so, dass wir das Passwort umgehen können, indem wir den Parameter als 'a' = 'a' oder 1 = 1 senden
Step 4 - Nach der Ausnutzung können wir uns wie unten gezeigt als Neville anmelden, der der Administrator ist.
Verhindern von SQL Injection
Es gibt viele Möglichkeiten, die SQL-Injection zu verhindern. Wenn Entwickler den Code schreiben, sollten sie sicherstellen, dass sie mit Sonderzeichen entsprechend umgehen. Es gibt Spickzettel / Präventionstechniken von OWASP, die definitiv ein Leitfaden für Entwickler sind.
- Verwenden parametrisierter Abfragen
- Escape alle vom Benutzer bereitgestellten Eingaben
- Aktivieren Sie die geringste Berechtigung für die Datenbank für die Endbenutzer
Wenn Authentifizierungsfunktionen für die Anwendung nicht korrekt implementiert sind, können Hacker Kennwörter oder Sitzungs-IDs kompromittieren oder andere Implementierungsfehler mithilfe der Anmeldeinformationen anderer Benutzer ausnutzen.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiel
An e-commerce application supports URL rewriting, putting session IDs in the URL −
http://example.com/sale/saleitems/jsessionid=2P0OC2JSNDLPSKHCJUN2JV/?item=laptop
Ein authentifizierter Benutzer der Website leitet die URL an seine Freunde weiter, um Informationen zu den reduzierten Verkäufen zu erhalten. Er sendet eine E-Mail an den obigen Link, ohne zu wissen, dass der Benutzer auch die Sitzungs-IDs preisgibt. Wenn seine Freunde den Link verwenden, verwenden sie seine Sitzung und seine Kreditkarte.
Hände an
Step 1- Melden Sie sich bei Webgoat an und navigieren Sie zum Abschnitt "Sitzungsverwaltungsfehler". Lassen Sie uns die Authentifizierung umgehen, indem wir den Cookie fälschen. Unten ist der Schnappschuss des Szenarios.
Step 2 - Wenn wir uns mit den Anmeldeinformationen webgoat / webgoat anmelden, stellen wir in Burp Suite fest, dass die JSESSION-ID C8F3177CCAFF380441ABF71090748F2E lautet, während AuthCookie = 65432ubphcfx bei erfolgreicher Authentifizierung.
Step 3 - Wenn wir uns mit dem Aspekt / Aspekt der Anmeldeinformationen anmelden, stellen wir in Burp Suite fest, dass die JSESSION-ID C8F3177CCAFF380441ABF71090748F2E lautet, während AuthCookie = 65432udfqtb bei erfolgreicher Authentifizierung.
Step 4- Jetzt müssen wir die AuthCookie-Muster analysieren. Die erste Hälfte '65432' ist für beide Authentifizierungen gleich. Daher sind wir jetzt daran interessiert, den letzten Teil der Authcookie-Werte wie - ubphcfx für Webgoat-Benutzer und udfqtb für Aspektbenutzer zu analysieren.
Step 5- Wenn wir uns die AuthCookie-Werte genauer ansehen, hat der letzte Teil die gleiche Länge wie der Benutzername. Daher ist es offensichtlich, dass der Benutzername mit einer Verschlüsselungsmethode verwendet wird. Bei Versuch und Irrtum / Brute-Force-Mechanismen stellen wir fest, dass nach dem Umkehren des Benutzernamens webgoat; Am Ende haben wir taogbew und dann wird das Vor-Alphabet-Zeichen als AuthCookie verwendet. dh ubphcfx.
Step 6- Wenn wir diesen Cookie-Wert übergeben und sehen, was passiert. Ändern Sie bei der Authentifizierung als Benutzer-Webgoat den AuthCookie-Wert, um den Benutzer Alice zu verspotten, indem Sie den AuthCookie für denselben suchen, indem Sie Schritt 4 und Schritt 5 ausführen.
Mechanismen verhindern
Entwickeln Sie eine starke Authentifizierungs- und Sitzungsverwaltungssteuerung, sodass alle Authentifizierungs- und Sitzungsverwaltungsanforderungen erfüllt werden, die im OWASP-Standard zur Überprüfung der Anwendungssicherheit definiert sind.
Entwickler sollten sicherstellen, dass sie XSS-Fehler vermeiden, die zum Stehlen von Sitzungs-IDs verwendet werden können.
Cross-Site Scripting (XSS) wird immer dann ausgeführt, wenn eine Anwendung nicht vertrauenswürdige Daten aufnimmt und diese ohne Validierung an den Client (Browser) sendet. Auf diese Weise können Angreifer schädliche Skripts im Browser des Opfers ausführen, was dazu führen kann, dass Benutzersitzungen entführt, Websites verunstaltet oder der Benutzer auf schädliche Websites umgeleitet wird.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Arten von XSS
Stored XSS - Gespeichertes XSS, auch als beständiges XSS bezeichnet, tritt auf, wenn Benutzereingaben auf dem Zielserver gespeichert sind, z. B. Datenbank / Nachrichtenforum / Kommentarfeld usw. Anschließend kann das Opfer die gespeicherten Daten aus der Webanwendung abrufen.
Reflected XSS - Reflektiertes XSS, auch als nicht persistentes XSS bezeichnet, tritt auf, wenn Benutzereingaben von einer Webanwendung sofort in einer Fehlermeldung / einem Suchergebnis oder den vom Benutzer im Rahmen der Anforderung bereitgestellten Eingaben zurückgegeben werden, ohne dass die vom Benutzer bereitgestellten Daten dauerhaft gespeichert werden.
DOM Based XSS - DOM-basiertes XSS ist eine Form von XSS, wenn sich die Datenquelle im DOM befindet, sich die Senke ebenfalls im DOM befindet und der Datenfluss den Browser niemals verlässt.
Beispiel
Die Anwendung verwendet nicht vertrauenswürdige Daten in der Konstruktion ohne Validierung. Die Sonderzeichen sollten maskiert werden.
http://www.webpage.org/task/Rule1?query=try
Der Angreifer ändert den Abfrageparameter in seinem Browser auf -
http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>
Hände an
Step 1- Melden Sie sich bei Webgoat an und navigieren Sie zum Abschnitt Cross-Site Scripting (XSS). Lassen Sie uns einen XSS-Angriff (Stored Cross-Site Scripting) ausführen. Unten ist der Schnappschuss des Szenarios.
Step 2- Melden Sie sich gemäß dem Szenario als Tom mit dem Kennwort 'tom' an, wie im Szenario selbst angegeben. Klicken Sie auf "Profil anzeigen" und wechseln Sie in den Bearbeitungsmodus. Da Tom der Angreifer ist, lassen Sie uns Java-Skript in diese Bearbeitungsfelder einfügen.
<script>
alert("HACKED")
</script>
Step 3 - Sobald das Update beendet ist, erhält Tom eine Warnmeldung mit der Meldung "gehackt", was bedeutet, dass die App anfällig ist.
Step 4 - Jetzt müssen wir uns gemäß dem Szenario als Jerry (HR) anmelden und prüfen, ob Jerry vom injizierten Skript betroffen ist.
Step 5 - Nachdem Sie sich als Jerry angemeldet haben, wählen Sie "Tom" und klicken Sie wie unten gezeigt auf "Profil anzeigen".
Während er Toms Profil von Jerrys Konto aus anzeigt, kann er dasselbe Meldungsfeld erhalten.
Step 6 - Dieses Meldungsfeld ist nur ein Beispiel, aber der tatsächliche Angreifer kann viel mehr als nur das Anzeigen eines Meldungsfelds.
Vorbeugende Mechanismen
Entwickler müssen sicherstellen, dass sie allen nicht vertrauenswürdigen Daten entkommen, die auf dem HTML-Kontext basieren, z. B. Body, Attribut, JavaScript, CSS oder URL, in die die Daten gestellt werden.
Für Anwendungen, die Sonderzeichen als Eingabe benötigen, sollten robuste Validierungsmechanismen vorhanden sein, bevor sie als gültige Eingaben akzeptiert werden.
Eine direkte Objektreferenz tritt wahrscheinlich auf, wenn ein Entwickler eine Referenz auf ein internes Implementierungsobjekt wie eine Datei, ein Verzeichnis oder einen Datenbankschlüssel ohne Validierungsmechanismus verfügbar macht, mit dem Angreifer diese Referenzen manipulieren können, um auf nicht autorisierte Daten zuzugreifen.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiel
Die App verwendet nicht überprüfte Daten in einem SQL-Aufruf, der auf Kontoinformationen zugreift.
String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );
Der Angreifer ändert den Abfrageparameter in seinem Browser so, dass er auf Admin verweist.
http://webapp.com/app/accountInfo?acct=admin
Hände an
Step 1- Melden Sie sich bei Webgoat an und navigieren Sie zum Abschnitt mit Kontrollfehlern. Ziel ist es, die Datei tomcat-users.xml abzurufen, indem Sie zu dem Pfad navigieren, in dem sie sich befindet. Unten ist der Schnappschuss des Szenarios.
Step 2 - Der Pfad der Datei wird im Feld "Das aktuelle Verzeichnis ist" angezeigt. - C: \ Benutzer \ Benutzername $ \. Extract \ webapps \ WebGoat \ Lesson_plans \ de. Wir wissen auch, dass die Datei tomcat-users.xml unter gespeichert ist C: \ xampp \ tomcat \ conf
Step 3- Wir müssen den gesamten Weg aus dem aktuellen Verzeichnis heraus durchlaufen und von C: \ Drive aus navigieren. Wir können dasselbe tun, indem wir den Datenverkehr mit Burp Suite abfangen.
Step 4 - Wenn der Versuch erfolgreich ist, wird die Datei tomcat-users.xml mit der Meldung "Herzlichen Glückwunsch. Sie haben diese Lektion erfolgreich abgeschlossen." Angezeigt.
Vorbeugende Mechanismen
Entwickler können die folgenden Ressourcen / Punkte als Leitfaden verwenden, um eine unsichere direkte Objektreferenz während der Entwicklungsphase selbst zu verhindern.
Entwickler sollten nur einen Benutzer oder eine Sitzung für indirekte Objektreferenzen verwenden.
Es wird außerdem empfohlen, den Zugriff zu überprüfen, bevor Sie eine direkte Objektreferenz von einer nicht vertrauenswürdigen Quelle verwenden.
Sicherheitsfehlkonfiguration tritt auf, wenn Sicherheitseinstellungen als Standardeinstellungen definiert, implementiert und verwaltet werden. Für eine gute Sicherheit ist eine sichere Konfiguration erforderlich, die für die Anwendung, den Webserver, den Datenbankserver und die Plattform definiert und bereitgestellt wird. Ebenso wichtig ist es, die Software auf dem neuesten Stand zu halten.
Beispiel
Einige klassische Beispiele für Sicherheitsfehlkonfigurationen sind wie folgt:
Wenn die Verzeichnisliste auf dem Server nicht deaktiviert ist und der Angreifer dasselbe entdeckt, kann der Angreifer einfach Verzeichnisse auflisten, um eine Datei zu finden und auszuführen. Es ist auch möglich, die tatsächliche Codebasis abzurufen, die Ihren gesamten benutzerdefinierten Code enthält, und dann schwerwiegende Fehler in der Anwendung zu finden.
Durch die App-Server-Konfiguration können Stack-Traces an Benutzer zurückgegeben werden, wodurch möglicherweise zugrunde liegende Fehler aufgedeckt werden. Angreifer greifen auf die zusätzlichen Informationen zu, die in den Fehlermeldungen enthalten sind und die ausreichen, um sie zu durchdringen.
App-Server werden normalerweise mit Beispiel-Apps geliefert, die nicht gut gesichert sind. Wenn Sie nicht vom Produktionsserver entfernt werden, wird Ihr Server gefährdet.
Hände an
Step 1- Starten Sie Webgoat und navigieren Sie zum Abschnitt "Unsichere Konfiguration". Lassen Sie uns versuchen, diese Herausforderung zu lösen. Ein Schnappschuss davon ist unten angegeben -
Step 2- Wir können so viele Optionen ausprobieren, wie wir uns vorstellen können. Alles, was wir brauchen, um die URL der Konfigurationsdatei zu finden, und wir wissen, dass die Entwickler eine Art Namenskonvention für Konfigurationsdateien befolgen. Es kann alles sein, was unten aufgeführt ist. Es wird normalerweise durch BRUTE-Krafttechnik durchgeführt.
- web.config
- config
- appname.config
- conf
Step 3 - Wenn wir verschiedene Optionen ausprobieren, stellen wir fest, dass 'http://localhost:8080/WebGoat/conf' ist erfolgreich. Die folgende Seite wird angezeigt, wenn der Versuch erfolgreich war -
Vorbeugende Mechanismen
Alle Umgebungen wie Entwicklungs-, Qualitätssicherungs- und Produktionsumgebungen sollten identisch mit unterschiedlichen Kennwörtern konfiguriert werden, die in jeder Umgebung verwendet werden und nicht einfach gehackt werden können.
Stellen Sie sicher, dass eine starke Anwendungsarchitektur verwendet wird, die eine effektive und sichere Trennung zwischen Komponenten ermöglicht.
Es kann auch die Möglichkeit dieses Angriffs minimieren, indem automatisierte Scans ausgeführt und regelmäßig Audits durchgeführt werden.
Da die Online-Anwendungen das Internet Tag für Tag überschwemmen, sind nicht alle Anwendungen gesichert. Viele Webanwendungen schützen vertrauliche Benutzerdaten wie Kreditkarteninformationen / Bankkontoinformationen / Authentifizierungsdaten nicht ordnungsgemäß. Hacker könnten diese schwach geschützten Daten stehlen, um Kreditkartenbetrug, Identitätsdiebstahl oder andere Verbrechen zu begehen.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiel
Einige der klassischen Beispiele für Sicherheitsfehlkonfigurationen sind wie folgt:
Eine Site verwendet SSL einfach nicht für alle authentifizierten Seiten. Auf diese Weise kann ein Angreifer den Netzwerkverkehr überwachen und das Sitzungscookie des Benutzers stehlen, um die Sitzung des Benutzers zu entführen oder auf seine privaten Daten zuzugreifen.
Eine Anwendung speichert die Kreditkartennummern in einem verschlüsselten Format in einer Datenbank. Beim Abrufen werden sie entschlüsselt, sodass der Hacker einen SQL-Injection-Angriff ausführen kann, um alle vertraulichen Informationen in Klartext abzurufen. Dies kann vermieden werden, indem die Kreditkartennummern mit einem öffentlichen Schlüssel verschlüsselt werden und Back-End-Anwendungen diese mit dem privaten Schlüssel entschlüsseln können.
Hände an
Step 1- Starten Sie WebGoat und navigieren Sie zum Abschnitt "Unsicherer Speicher". Ein Schnappschuss davon wird unten angezeigt.
Step 2- Geben Sie den Benutzernamen und das Passwort ein. Es ist Zeit, verschiedene Arten von Kodierungs- und Verschlüsselungsmethoden zu lernen, die wir zuvor besprochen haben.
Vorbeugende Mechanismen
Es wird empfohlen, sensible Daten nicht unnötig zu speichern und sie sollten so schnell wie möglich gelöscht werden, wenn sie nicht mehr benötigt werden.
Es ist wichtig sicherzustellen, dass wir starke und standardmäßige Verschlüsselungsalgorithmen verwenden und eine ordnungsgemäße Schlüsselverwaltung vorhanden ist.
Sie können dies auch vermeiden, indem Sie die automatische Vervollständigung für Formulare deaktivieren, die vertrauliche Daten wie Kennwörter erfassen, und das Caching für Seiten deaktivieren, die vertrauliche Daten enthalten.
Die meisten Webanwendungen überprüfen die Zugriffsrechte auf Funktionsebene, bevor sie dem Benutzer diese Funktionalität zugänglich machen. Wenn jedoch nicht dieselben Zugriffskontrollprüfungen auf dem Server durchgeführt werden, können Hacker ohne entsprechende Berechtigung in die Anwendung eindringen.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiel
Hier ist ein klassisches Beispiel für die Zugriffskontrolle auf fehlender Funktionsebene:
Der Hacker erzwingt einfach Ziel-URLs. Normalerweise erfordert der Administratorzugriff eine Authentifizierung. Wenn der Anwendungszugriff jedoch nicht überprüft wird, kann ein nicht authentifizierter Benutzer auf die Administrationsseite zugreifen.
' Below URL might be accessible to an authenticated user
http://website.com/app/standarduserpage
' A NON Admin user is able to access admin page without authorization.
http://website.com/app/admin_page
Hände an
Step 1 - Melden Sie sich als Account Manager an, indem Sie zuerst die Liste der Benutzer und ihrer Zugriffsrechte durchgehen.
Step 2 - Wenn wir verschiedene Kombinationen ausprobieren, können wir feststellen, dass Larry Zugriff auf den Ressourcen-Account-Manager hat.
Vorbeugende Mechanismen
Der Authentifizierungsmechanismus sollte standardmäßig jeglichen Zugriff verweigern und für jede Funktion Zugriff auf bestimmte Rollen gewähren.
Überprüfen Sie in einer Workflow-basierten Anwendung den Status der Benutzer, bevor Sie ihnen den Zugriff auf Ressourcen ermöglichen.
Ein CSRF-Angriff zwingt einen authentifizierten Benutzer (Opfer), eine gefälschte HTTP-Anfrage, einschließlich des Sitzungscookies des Opfers, an eine anfällige Webanwendung zu senden. Dadurch kann der Angreifer den Browser des Opfers zwingen, eine Anforderung zu generieren, die die anfällige App als legitime Anforderungen von wahrnimmt das Opfer.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiel
Hier ist ein klassisches Beispiel für CSRF -
Step 1 - Angenommen, die anfällige Anwendung sendet eine Statusänderungsanforderung als einfachen Text ohne Verschlüsselung.
http://bankx.com/app?action=transferFund&amount=3500&destinationAccount=4673243243
Step 2 - Jetzt erstellt der Hacker eine Anfrage, die Geld vom Konto des Opfers auf das Konto des Angreifers überweist, indem er die Anfrage in ein Bild einbettet, das auf verschiedenen Websites unter der Kontrolle des Angreifers gespeichert ist. -
<img src = "http://bankx.com/app?action=transferFunds&amount=14000&destinationAccount=attackersAcct#"
width = "0" height = "0" />
Hände an
Step 1- Lassen Sie uns eine CSRF-Fälschung durchführen, indem wir ein Java-Skript in ein Bild einbetten. Der Schnappschuss des Problems ist unten aufgeführt.
Step 2 - Jetzt müssen wir die Übertragung in ein 1x1-Bild verspotten und das Opfer dazu bringen, darauf zu klicken.
Step 3 - Beim Senden der Nachricht wird die Nachricht wie unten hervorgehoben angezeigt.
Step 4- Wenn das Opfer nun auf die folgende URL klickt, wird die Übertragung ausgeführt, die die Benutzeraktion mithilfe der Burp-Suite abfängt. Wir können die Übertragung sehen, indem wir sie wie unten gezeigt in der Nachricht abrufen erkennen.
Step 5 - Wenn Sie nun auf Aktualisieren klicken, wird die Markierung für den Abschluss der Lektion angezeigt.
Vorbeugende Mechanismen
CSRF kann vermieden werden, indem ein eindeutiges Token in einem ausgeblendeten Feld erstellt wird, das im Hauptteil der HTTP-Anforderung und nicht in einer URL gesendet wird, die anfälliger für Gefährdungen ist.
Erzwingen der erneuten Authentifizierung des Benutzers oder Nachweis, dass er Benutzer ist, um CSRF zu schützen. Zum Beispiel CAPTCHA.
Diese Art von Bedrohung tritt auf, wenn die in der App verwendeten Komponenten wie Bibliotheken und Frameworks fast immer mit vollen Berechtigungen ausgeführt werden. Wenn eine anfällige Komponente ausgenutzt wird, erleichtert dies dem Hacker die Arbeit, einen schwerwiegenden Datenverlust oder eine Serverübernahme zu verursachen.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiel
Die folgenden Beispiele zeigen die Verwendung von Komponenten mit bekannten Schwachstellen:
Angreifer können jeden Webdienst mit voller Berechtigung aufrufen, indem sie kein Identitätstoken bereitstellen.
Die Remotecodeausführung mit der Sicherheitsanfälligkeit bezüglich der Injektion von Ausdruckssprachen wird durch das Spring Framework für Java-basierte Apps eingeführt.
Vorbeugende Mechanismen
Identifizieren Sie alle Komponenten und Versionen, die in den Webanwendungen verwendet werden, und beschränken Sie sich nicht nur auf Datenbanken / Frameworks.
Halten Sie alle Komponenten wie öffentliche Datenbanken, Projekt-Mailinglisten usw. auf dem neuesten Stand.
Fügen Sie Sicherheits-Wrapper um Komponenten hinzu, die von Natur aus anfällig sind.
Die meisten Webanwendungen im Internet leiten Benutzer häufig weiter und leiten sie auf andere Seiten oder andere externe Websites weiter. Ohne die Glaubwürdigkeit dieser Seiten zu überprüfen, können Hacker Opfer auf Phishing- oder Malware-Websites umleiten oder auf nicht autorisierte Seiten weiterleiten.
Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.
Beispiel
Einige klassische Beispiele für nicht validierte Weiterleitungen und Weiterleitungen sind wie folgt:
Angenommen, die Anwendung hat eine Seite - redirect.jsp, die einen Parameter redirectrul verwendet . Der Hacker fügt eine schädliche URL hinzu, die Benutzer umleitet, die Phishing ausführen / Malware installieren.
http://www.mywebapp.com/redirect.jsp?redirectrul=hacker.com
Alle Webanwendungen, mit denen Benutzer an verschiedene Teile der Website weitergeleitet werden. Um dies zu erreichen, verwenden einige Seiten einen Parameter, um anzugeben, wohin der Benutzer umgeleitet werden soll, wenn ein Vorgang erfolgreich ist. Der Angreifer erstellt eine URL, die die Zugriffssteuerungsprüfung der Anwendung besteht, und leitet den Angreifer dann an Verwaltungsfunktionen weiter, für die der Angreifer keinen Zugriff hat.
http://www.mywebapp.com/checkstatus.jsp?fwd=appadmin.jsp
Vorbeugende Mechanismen
Es ist besser, Weiterleitungen und Weiterleitungen zu vermeiden.
Wenn dies unvermeidbar ist, sollte dies ohne Einbeziehung von Benutzerparametern in die Umleitung des Ziels erfolgen.
Asynchrones Javascript und XML (AJAX) ist eine der neuesten Techniken zur Entwicklung von Webanwendungen, um eine umfassende Benutzererfahrung zu erzielen. Da es sich um eine neue Technologie handelt, müssen noch viele Sicherheitsprobleme behoben werden. Nachfolgend sind die wenigen Sicherheitsprobleme in AJAX aufgeführt.
Die Angriffsfläche ist größer, da mehr Eingänge gesichert werden müssen.
Außerdem werden die internen Funktionen der Anwendungen verfügbar gemacht.
Fehler beim Schutz der Authentifizierungsinformationen und -sitzungen.
Es gibt eine sehr enge Grenze zwischen clientseitig und serverseitig, daher gibt es Möglichkeiten, Sicherheitsfehler zu begehen.
Beispiel
Hier ist ein Beispiel für AJAX Security -
Im Jahr 2006 infizierte ein Wurm den Yahoo Mail-Dienst mit XSS und AJAX, der eine Sicherheitslücke in der Onload-Ereignisbehandlung von Yahoo Mail ausnutzte. Beim Öffnen einer infizierten E-Mail führte der Wurm sein JavaScript aus und sendete eine Kopie an alle Yahoo-Kontakte des infizierten Benutzers.
Hände an
Step 1- Wir müssen versuchen, mit XML-Injection mehr Belohnungen zu Ihrem zulässigen Belohnungssatz hinzuzufügen. Unten ist der Schnappschuss des Szenarios.
Step 2- Stellen Sie sicher, dass wir sowohl die Anfrage als auch die Antwort mit Burp Suite abfangen. Einstellungen wie unten gezeigt.
Step 3- Geben Sie die im Szenario angegebene Kontonummer ein. Wir können eine Liste aller Belohnungen erhalten, für die wir berechtigt sind. Wir haben Anspruch auf 3 von 5 Belohnungen.
Step 4- Lassen Sie uns nun auf "Senden" klicken und sehen, was wir in der Antwort-XML erhalten. Wie unten gezeigt, werden die drei Prämien, für die wir berechtigt sind, als XML an uns übergeben.
Step 5 - Lassen Sie uns nun diese XMLs bearbeiten und auch die beiden anderen Belohnungen hinzufügen.
Step 6- Jetzt werden dem Benutzer alle Belohnungen angezeigt, die er auswählen kann. Wählen Sie die von uns hinzugefügten aus und klicken Sie auf "Senden".
Step 7 - Die folgende Meldung lautet: "* Herzlichen Glückwunsch. Sie haben diese Lektion erfolgreich abgeschlossen."
Vorbeugende Mechanismen
Kundenseite -
- Verwenden Sie .innerText anstelle von .innerHtml.
- Verwenden Sie eval nicht.
- Verlassen Sie sich aus Sicherheitsgründen nicht auf die Client-Logik.
- Schreiben Sie keinen Serialisierungscode.
- Vermeiden Sie es, XML dynamisch zu erstellen.
- Übermitteln Sie niemals Geheimnisse an den Kunden.
- Führen Sie keine Verschlüsselung im clientseitigen Code durch.
- Führen Sie keine sicherheitsrelevante Logik auf der Clientseite durch.
Serverseite -
- Verwenden Sie den CSRF-Schutz.
- Schreiben Sie keinen Serialisierungscode.
- Dienste können von Benutzern direkt aufgerufen werden.
- Vermeiden Sie es, XML von Hand zu erstellen. Verwenden Sie das Framework.
- Vermeiden Sie es, JSON von Hand zu erstellen, und verwenden Sie ein vorhandenes Framework.
In modernen webbasierten Anwendungen ist die Verwendung von Webdiensten unvermeidlich und sie sind auch anfällig für Angriffe. Da die Webdienste den Abruf von mehreren Websites anfordern, müssen Entwickler nur wenige zusätzliche Maßnahmen ergreifen, um jegliches Eindringen von Hackern zu vermeiden.
Hände an
Step 1- Navigieren Sie zum Webdienstbereich von Webgoat und gehen Sie zum WSDL-Scannen. Wir müssen jetzt die Kreditkartendaten einer anderen Kontonummer abrufen. Die Momentaufnahme des Szenarios ist wie unten erwähnt.
Step 2 - Wenn wir den Vornamen auswählen, erfolgt der Funktionsaufruf 'getFirstName' über die SOAP-Anfrage xml.
Step 3- Durch Öffnen der WSDL können wir feststellen, dass es eine Methode zum Abrufen von Kreditkarteninformationen sowie 'getCreditCard' gibt. Lassen Sie uns nun die Eingaben mit der Burp-Suite wie unten gezeigt manipulieren -
Step 4 - Lassen Sie uns nun die Eingaben mit der Burp-Suite wie unten gezeigt ändern. -
Step 5 - Wir können die Kreditkarteninformationen anderer Benutzer erhalten.
Vorbeugende Mechanismen
Da SOAP-Nachrichten XML-basiert sind, müssen alle übergebenen Anmeldeinformationen in das Textformat konvertiert werden. Daher muss man beim Übergeben der vertraulichen Informationen, die immer verschlüsselt werden müssen, sehr vorsichtig sein.
Schutz der Nachrichtenintegrität durch Implementierung von Mechanismen wie der Prüfsumme, die angewendet wird, um die Integrität des Pakets sicherzustellen.
Schutz der Vertraulichkeit von Nachrichten - Zum Schutz der symmetrischen Sitzungsschlüssel, die in vielen Implementierungen nur für eine Kommunikation gültig sind und anschließend verworfen werden, wird eine asymmetrische Verschlüsselung angewendet.
Ein Pufferüberlauf entsteht, wenn ein Programm versucht, mehr Daten in einem temporären Datenspeicherbereich (Puffer) zu speichern, als es aufnehmen sollte. Da Puffer so erstellt werden, dass sie eine begrenzte Datenmenge enthalten, können die zusätzlichen Informationen in benachbarte Puffer überlaufen und so die darin enthaltenen gültigen Daten beschädigen.
Beispiel
Hier ist ein klassisches Beispiel für einen Pufferüberlauf. Es zeigt einen einfachen Pufferüberlauf, der durch das erste Szenario verursacht wird, in dem externe Daten zur Steuerung des Verhaltens verwendet werden. Es gibt keine Möglichkeit, die vom Benutzer eingegebene Datenmenge zu begrenzen, und das Verhalten des Programms hängt davon ab, wie viele Zeichen der Benutzer eingegeben hat.
...
char bufr[BUFSIZE];
gets(bufr);
...
Hände an
Step 1- Wir müssen uns mit Name und Zimmernummer anmelden, um den Internetzugang zu erhalten. Hier ist der Szenario-Schnappschuss.
Step 2 - Wir werden auch "Versteckte Formularfelder einblenden" in Burp Suite aktivieren, wie unten gezeigt -
Step 3- Jetzt senden wir eine Eingabe in das Feld Name und Zimmernummer. Wir versuchen auch, eine ziemlich große Zahl in das Feld für die Zimmernummer einzufügen.
Step 4- Die ausgeblendeten Felder werden wie unten gezeigt angezeigt. Wir klicken auf Bedingungen akzeptieren.
Step 5 - Der Angriff ist so erfolgreich, dass er aufgrund eines Pufferüberlaufs die benachbarten Speicherstellen liest und dem Benutzer wie unten gezeigt angezeigt wird.
Step 6- Jetzt melden wir uns mit den angezeigten Daten an. Nach der Protokollierung wird die folgende Meldung angezeigt:
Vorbeugende Mechanismen
- Codeüberprüfung
- Entwicklerschulung
- Compiler-Tools
- Sichere Funktionen entwickeln
- Periodisches Scannen
DoS-Angriff (Denial of Service) ist ein Versuch von Hackern, eine Netzwerkressource nicht verfügbar zu machen. Normalerweise unterbricht es den Host, der vorübergehend oder auf unbestimmte Zeit mit dem Internet verbunden ist. Diese Angriffe zielen normalerweise auf Dienste ab, die auf geschäftskritischen Webservern wie Banken oder Kreditkartenzahlungsgateways gehostet werden.
Symptome von DoS
- Ungewöhnlich langsame Netzwerkleistung.
- Nichtverfügbarkeit einer bestimmten Website.
- Unfähigkeit, auf eine Website zuzugreifen.
- Dramatischer Anstieg der Anzahl der eingegangenen Spam-E-Mails.
- Langfristige Verweigerung des Zugangs zum Internet oder zu Internetdiensten.
- Nichtverfügbarkeit einer bestimmten Website.
Hände an
Step 1- Starten Sie WebGoat und navigieren Sie zum Abschnitt "Denial of Service". Der Schnappschuss des Szenarios ist unten angegeben. Wir müssen uns dort mehrmals anmelden, indem wir die maximale Größe des DB-Thread-Pools verletzen.
Step 2- Zuerst müssen wir die Liste der gültigen Anmeldungen erhalten. In diesem Fall verwenden wir SQL Injection.
Step 3 - Wenn der Versuch erfolgreich ist, werden dem Benutzer alle gültigen Anmeldeinformationen angezeigt.
Step 4- Melden Sie sich jetzt mit jedem dieser Benutzer in mindestens 3 verschiedenen Sitzungen an, um den DoS-Angriff erfolgreich zu machen. Da wir wissen, dass die DB-Verbindung nur zwei Threads verarbeiten kann, werden bei Verwendung aller Anmeldungen drei Threads erstellt, wodurch der Angriff erfolgreich ist.
Vorbeugende Mechanismen
Führen Sie gründliche Eingabevalidierungen durch.
Vermeiden Sie CPU-belastende Vorgänge.
Es ist besser, Datenfestplatten von Systemfestplatten zu trennen.
Entwickler verwenden oder verketten häufig potenziell anfällige Eingaben direkt mit Dateien oder gehen davon aus, dass Eingabedateien echt sind. Wenn die Daten nicht ordnungsgemäß überprüft werden, kann dies dazu führen, dass anfällige Inhalte vom Webserver verarbeitet oder aufgerufen werden.
Beispiel
Einige der klassischen Beispiele sind -
- Laden Sie die .jsp-Datei in den Webbaum hoch.
- Laden Sie .gif hoch, dessen Größe geändert werden soll.
- Laden Sie große Dateien hoch.
- Datei mit Tags hochladen.
- Laden Sie die EXE-Datei in den Webbaum hoch.
Hände an
Step 1- Starten Sie WebGoat und navigieren Sie zum Abschnitt Ausführung bösartiger Dateien. Der Schnappschuss des Szenarios ist unten angegeben -
Step 2 - Um diese Lektion abzuschließen, müssen wir guest.txt an den oben genannten Ort hochladen.
Step 3- Erstellen wir eine JSP-Datei, sodass die Datei guest.txt beim Ausführen der JSP erstellt wird. Die Benennung des JSP spielt in diesem Zusammenhang keine Rolle, da wir den Inhalt der JSP-Datei ausführen.
<HTML>
<% java.io.File file = new
java.io.File("C:\\Users\\username$\\.extract\\webapps\\WebGoat\\mfe_target\\guest.txt");
file.createNewFile(); %>
</HTML>
Step 4- Laden Sie nun die JSP-Datei hoch und kopieren Sie den Linkspeicherort nach dem Hochladen. Der Upload erwartet ein Bild, aber wir laden einen JSP hoch.
Step 5 - Wenn Sie zur JSP-Datei navigieren, wird keine Nachricht an den Benutzer gesendet.
Step 6 - Aktualisieren Sie nun die Sitzung, in der Sie die JSP-Datei hochgeladen haben, und Sie erhalten die Meldung "* Herzlichen Glückwunsch. Sie haben die Lektion erfolgreich abgeschlossen".
Vorbeugende Mechanismen
- Sichern Sie Websites mit Website-Berechtigungen.
- Ergreifen Sie Gegenmaßnahmen zur Sicherheit von Webanwendungen.
- Grundlegendes zu den integrierten Benutzer- und Gruppenkonten in IIS 7.0.
Es stehen verschiedene Tools zur Verfügung, um Sicherheitstests für eine Anwendung durchzuführen. Es gibt nur wenige Tools, die End-to-End-Sicherheitstests durchführen können, während einige dazu dienen, eine bestimmte Art von Fehler im System zu erkennen.
Open Source Tools
Einige Open Source-Sicherheitstest-Tools sind wie angegeben -
S.No. | Werkzeugname |
---|---|
1 | Zed Attack Proxy Bietet automatisierte Scanner und andere Tools zum Erkennen von Sicherheitslücken. https://www.owasp.org |
2 | OWASP WebScarab Entwickelt in Java zur Analyse von HTTP- und HTTP-Anforderungen. https://www.owasp.org/index.php |
3 | OWASP Mantra Unterstützt das mehrsprachige Framework für Sicherheitstests https://www.owasp.org/index.php/OWASP_Mantra_-_Security_Framework |
4 | Burp Proxy Tool zum Abfangen und Modyfying von Datenverkehr und funktioniert mit benutzerdefinierten SSL-Zertifikaten. https://www.portswigger.net/Burp/ |
5 | Firefox Tamper Data Verwenden Sie Tamperdaten, um HTTP / HTTPS-Header und Post-Parameter anzuzeigen und zu ändern https://addons.mozilla.org/en-US |
6 | Firefox Web Developer Tools Die Web Developer-Erweiterung fügt dem Browser verschiedene Web Developer-Tools hinzu. https://addons.mozilla.org/en-US/firefox |
7 | Cookie Editor Ermöglicht dem Benutzer das Hinzufügen, Löschen, Bearbeiten, Suchen, Schützen und Blockieren von Cookies https://chrome.google.com/webstore |
Spezifische Werkzeugsätze
Die folgenden Tools können uns dabei helfen, eine bestimmte Art von Sicherheitsanfälligkeit im System zu erkennen:
S.No. | Verknüpfung |
---|---|
1 | DOMinator Pro − Testing for DOM XSS https://dominator.mindedsecurity.com/ |
2 | OWASP SQLiX − SQL Injection https://www.owasp.org/index.php |
3 | Sqlninja − SQL Injection http://sqlninja.sourceforge.net/ |
4 | SQLInjector − SQL Injection https://sourceforge.net/projects/safe3si/ |
5 | sqlpowerinjector − SQL Injection http://www.sqlpowerinjector.com/ |
6 | SSL Digger − Testing SSL https://www.mcafee.com/us/downloads/free-tools |
7 | THC-Hydra − Brute Force Password https://www.thc.org/thc-hydra/ |
8 | Brutus − Brute Force Password http://www.hoobie.net/brutus/ |
9 | Ncat − Brute Force Password https://nmap.org/ncat/ |
10 | OllyDbg − Testing Buffer Overflow http://www.ollydbg.de/ |
11 | Spike − Testing Buffer Overflow https://www.immunitysec.com/downloads/SPIKE2.9.tgz |
12 | Metasploit − Testing Buffer Overflow https://www.metasploit.com/ |
Kommerzielle Black-Box-Testwerkzeuge
Hier sind einige der kommerziellen Black-Box-Testtools, mit denen wir Sicherheitsprobleme in den von uns entwickelten Anwendungen erkennen können.
S.No. | Werkzeug |
---|---|
1 | NGSSQuirreL https://www.nccgroup.com/en/our-services |
2 | IBM AppScan https://www-01.ibm.com/software/awdtools/appscan/ |
3 | Acunetix Web Vulnerability Scanner https://www.acunetix.com/ |
4 | NTOSpider https://www.ntobjectives.com/products/ntospider.php |
5 | SOAP UI https://www.soapui.org/Security/getting-started.html |
6 | Netsparker https://www.mavitunasecurity.com/netsparker/ |
7 | HP WebInspect http://www.hpenterprisesecurity.com/products |
Kostenlose Quellcode-Analysatoren
S.No. | Werkzeug |
---|---|
1 | OWASP Orizon https://www.owasp.org/index.php |
2 | OWASP O2 https://www.owasp.org/index.php/OWASP_O2_Platform |
3 | SearchDiggity https://www.bishopfox.com/resources/tools |
4 | FXCOP https://www.owasp.org/index.php/FxCop |
5 | Splint http://splint.org/ |
6 | Boon https://www.cs.berkeley.edu/~daw/boon/ |
7 | W3af http://w3af.org/ |
8 | FlawFinder https://www.dwheeler.com/flawfinder/ |
9 | FindBugs http://findbugs.sourceforge.net/ |
Kommerzielle Quellcode-Analysatoren
Diese Analysegeräte untersuchen, erkennen und melden die Schwachstellen im Quellcode, die anfällig für Schwachstellen sind.
S.No. | Werkzeug |
---|---|
1 | Parasoft C/C++ test https://www.parasoft.com/cpptest/ |
2 | HP Fortify http://www.hpenterprisesecurity.com/products |
3 | Appscan http://www-01.ibm.com/software/rational/products |
4 | Veracode https://www.veracode.com |
5 | Armorize CodeSecure http://www.armorize.com/codesecure/ |
6 | GrammaTech https://www.grammatech.com/ |