Heim  >  Artikel  >  Welche Grundkenntnisse sind für die Webpenetration erforderlich?

Welche Grundkenntnisse sind für die Webpenetration erforderlich?

青灯夜游
青灯夜游Original
2020-07-24 13:18:585550Durchsuche

Welche Grundkenntnisse sind für die Webpenetration erforderlich?

Grundlagen der Web-Penetration

Netzwerk-Grundlagen

IP-Protokoll

IP-Protokoll ist in der dritten Schicht von OSI-RM definiert——Netzwerkschicht

IP-Protokoll ist verbindungslos Die Knoten-Router im IP-Netzwerk werden entsprechend der IP-Adresse des Headers jedes IP-Pakets adressiert. Auf diese Weise werden IP-Pakete, die zur gleichen Nachricht gehören, vom gleichen Host gesendet kann über einen anderen Pfad zum Zielhost erfolgen.

Das TCP/IP-Protokoll entspricht nicht vollständig dem siebenschichtigen OSI-Referenzmodell.

Dies7Schichten von niedrig nach hoch:

1 physikalische Schicht, 2 Datenverbindungsschicht, 3 Netzwerkschicht, 4 Transportschicht Schicht, 5 Sitzungsschicht, 6 Präsentationsschicht, 7 Anwendungsschicht.

Die oberen Schichten (d. h. 7, 6, 5 und 4 Schichten) definieren die Funktionen der Anwendung

Die unteren 3 Schichten (d. h. 3, 2 und 1 Schichten) dienen hauptsächlich dem End-to-End-Datenfluss des Netzwerks.

Das TCP/IP-Kommunikationsprotokoll verwendet eine vierschichtige hierarchische Struktur. Jede Schicht ruft das von der nächsten Schicht bereitgestellte Netzwerk auf, um ihre eigenen Anforderungen zu erfüllen.

Die 4 Schichten sind:

Anwendungsschicht, Transportschicht, Verbindungsnetzwerkschicht und Netzwerkschnittstellenschicht.

UDP-Protokoll

UDP ist ein Benutzerdatagrammprotokoll, das eine Art OSI-Referenzmodell istVerbindungslosTransport Layer Protocol.

UDP hat die Nachteile, dass es keine Paketgruppierung und Assembly bereitstellt und Pakete nicht sortieren kann, das heißt, wenn eine Nachricht einmal gesendet wurde Es gibt keine Möglichkeit zu wissen, ob es sicher und unversehrt angekommen ist.

TCP-Protokoll

TCP ist ein verbindungsorientiertes, zuverlässiges, basierend auf TransportschichtKommunikationsprotokoll für Byteströme, definiert durch RFC 793 der IETF.

Die Anwendungsschicht sendet einen Datenstrom, der durch 8-Bit-Bytes dargestellt wird, zur Übertragung zwischen Netzwerken an die TCP-Schicht, und dann partitioniert TCP den Datenstrom in Segmente mit geeigneter Länge (normalerweise abhängig vom Netzwerk, zu dem die Datei gesendet wird). (Computer ist angeschlossen) Die Grenze der maximalen Übertragungseinheit (MTU ) der Datenverbindungsschicht.

Dann leitet TCP das Ergebnispaket an die IP-Schicht weiter, die das Paket über das Netzwerk an die TCP-Schicht der empfangenden Entität überträgt. Um sicherzustellen, dass es nicht zu Paketverlusten kommt, gibt TCP jedem Paket eine Sequenznummer. Gleichzeitig stellt die Sequenznummer sicher, dass die an die empfangende Endeinheit übertragenen Pakete in der richtigen Reihenfolge empfangen werden .

Dann sendet die empfangende Entität eine entsprechende

Bestätigung (ACK) für das erfolgreich empfangene Paket zurück, wenn sich die sendende Entität innerhalb einer angemessenen Umlaufverzögerung (RTT) befindet; Erfolgt keine Bestätigung, gilt das entsprechende Datenpaket als verloren und wird erneut übertragen. TCP verwendet eine Prüfsummenfunktion, um zu prüfen, ob Fehler in den Daten vorliegen und berechnet die Prüfsumme beim Senden und Empfangen.

Eine kurze Beschreibung des TCP-Drei-Wege-Handshakes und der Vier-Wege-Welle

Drei-Wege-Handshake

Erster Handshake:

Um mit dem Server zu kommunizieren muss der Client zuerst den Server informieren und dann ein Verbindungsanforderungssignal von SYN=1 senden: „Bruder, Server.“ , ich möchte mit dir reden.“

Zweiter Handshake:

Wenn der Server die Verbindungsanfrage des Clients empfängt , muss er dem Client eine Bestätigungsnachricht geben: „Ich verstehe (ACK ), ich bin bereit , können Sie jetzt eine Verbindung herstellen (SYN )“.

Der dritte Handshake:

Wenn der Client die Verbindungsbestätigungsinformationen vom Server erhält , sollte er den Server höflich informieren: „Okay, lass uns die Verbindung starten (ACK )".

Jetzt ist der gesamte Prozess des Verbindungsaufbaus abgeschlossen und der nächste Schritt ist der Prozess der Kommunikation und Übermittlung von Informationen nacheinander, nacheinander oder sogar gleichzeitig.

Viermal winken

Zum ersten Mal winken: Die beiden Parteien haben fast kommuniziert,

Zu diesem Zeitpunkt ist auch der Kunde fertig, was ist Trennen Sie als nächstes die Kommunikationsverbindung und teilen Sie dem Server mit: „Ich bin fertig (FIN )“.

Zum zweiten Mal winken: Der Server weiß, dass der Client nichts zu sagen hat Der Server hat dem Client zu diesem Zeitpunkt noch zwei Dinge zu sagen: „Ich weiß, dass Sie mit dem Sprechen fertig sind( ACK), lass mich dir noch ein paar Worte sagen, &*……%¥“.

Winken Sie zum dritten Mal: ​​Zu diesem Zeitpunkt ist der Kunde ganz Ohr und wartet weiterhin auf das Ende, und der Server hat mit dem Sprechen fertig Er befindet sich jetzt im Wartezustand , um die Verbindung zu schließen, und sagt dem Client: „Ich bin fertig, lass es uns abbrechen (FIN )“.

Die vierte Welle: Der Client weiß, dass der Server mit dem Sprechen fertig ist, und er muss es dem Server auch mitteilen (ACK), da für die Verbindung und Trennung beide Parteien die Taste „Schließen“ drücken müssen Bei diesem Vorgang definiert der Client auch einen Timer für sich selbst, da er nicht weiß, ob der gerade gesagte Satz den Server genau erreichen kann (Netzwerkinstabilität oder andere Netzwerkgründe, die durch andere Faktoren verursacht werden).

Die Standardzeit Es wird davon ausgegangen, dass der Server zu diesem Zeitpunkt seine eigene Verbindung geschlossen hat Erhält die Bestätigungsbenachrichtigung vom Client. Schließen Sie sofort die serverseitige Verbindung. An diesem Punkt endet der gesamte Kommunikationsprozess zwischen den beiden Parteien.

Hier sollte eine Aussage getroffen werden:

Es ist nicht unbedingt der Client, der die Verbindung zuerst trennt. Darüber hinaus gibt es keinen festen Standard zwischen dem Client und Der Server. Wer initiiert es zuerst? Wer die Anfrage stellt, ist der Client.

Warum den Drei-Wege-Handshake-Mechanismus verwenden?

Nehmen Sie die folgende ungewöhnliche Situation an:

Der Client hat die erste Anforderungsnachricht an den Server gesendet, aber die Nachricht wurde nicht im Netzwerk verworfen, sondern ist irgendwo blockiert Der Client geht davon aus, dass die Nachricht für längere Zeit verloren gegangen ist und erreicht den Server erneut. Wenn der Drei-Wege-Handshake nicht verwendet wird Es muss lediglich die Meldung quittiert und eine Verbindung aufgebaut werden.

Nachdem die Verbindung hergestellt und freigegeben wurde, kam die erste im Netzwerk gesendete und blockierte Nachricht am Server an. Der Server dachte, es sei der Client, der eine Verbindungsanfrage erneut gesendet habe (tatsächlich wurde die Verbindung auf der Clientseite hergestellt). bereits abgelaufen ist) und eine weitere Bestätigung wird an den Client gesendet.

Aber der Client dachte, dass er die Anforderungsnachricht nicht gesendet hatte, also ignorierte er die vom Server gesendete Bestätigung, und der Server dachte, dass eine neue Verbindung hergestellt wurde, also wartete er weiter darauf, dass A Daten sendet.

verursacht Es ist eine Verschwendung von Serverressourcen und kann Sicherheitsrisiken verursachen.

Wenn daher der Drei-Wege-Handshake-Mechanismus verwendet wird, erhält der Server nach dem Senden der Bestätigung keine Bestätigung vom Client, sodass er weiß, dass die Verbindung nicht hergestellt wurde Für dieses sinnlose Warten werden keine Ressourcen verschwendet.

Bezieht sich TCP/IP auf diese beiden Protokolle?

TCP/IP (Transmission Control Protocol/Internet Protocol) ist ein Netzwerkkommunikationsprotokoll, das alle Kommunikationsgeräte regelt, insbesondere das Format und Übertragungsmethode des Datenaustauschs zwischen einem Host und einem anderen Host.

Sliding Window Protocol

Sliding Window Protocol ist eine Anwendung des TCP-Protokolls und wird für verwendet Flusskontrolle während der Netzwerkdatenübertragung , um Überlastungen zu vermeiden.

Dieses Protokoll ermöglicht es dem Absender, mehrere Datenpakete zu senden, bevor er anhält und auf die Bestätigung wartet. Da der Absender nicht jedes Mal anhalten und auf die Bestätigung warten muss, wenn ein Paket gesendet wird, kann dieses Protokoll die Datenübertragung beschleunigen und den Netzwerkdurchsatz verbessern.

HTTP

HTTP ist

Hypertext Transfer ProtocolEs ist das am weitesten verbreitete Netzwerkprotokoll im Internet. Alle WWW-Dateien müssen diesem Standard entsprechen.

Normalerweise

initiiert der HTTP-Client eine Anfrage zum Einrichten eines TCPStandard ist 80Port). ) >Verbinden. HTTPDer Server wartet auf Anfragen, die vom Client an diesem Port gesendet werden. Sobald die Anfrage empfangen wird, sendet der Server eine Statuszeile (z. B. „HTTP/1.1 200 OK“) und eine (Antwort-)Nachricht mit dem Nachrichtentext zurück (an den Client). may Ist die angeforderte Datei, Fehlermeldung oder eine andere Information.

HTTPDer Grund für die Verwendung von TCP anstelle von UDP besteht darin, dass beim Öffnen einer Webseite viele Daten übertragen werden müssen und das TCP-Protokoll die Übertragungssteuerung und Organisation der Daten gewährleistet in Ordnung und Fehlerkorrektur.

Ressourcen, die über die HTTP- oder HTTPS-Protokolle angefordert werden, werden durch den Uniform Resource Identifier (oder genauer gesagt URLs) identifiziert.

HTTPS

HTTPS ist das Secure Sockets Layer Hypertext Transfer Protocol, ein HTTP-Kanal, der auf Sicherheit abzielt, einfach ausgedrückt: Es handelt sich um eine sichere Version von HTTP.

Hypertext Transfer Protocol Das HTTP-Protokoll wird zur Übertragung von Informationen zwischen Webbrowsern und Website-Servern verwendet. Das HTTP-Protokoll sendet Inhalte im Klartext und bietet keine Form der Datenverschlüsselung. Wenn ein Angreifer die Übertragungsnachricht zwischen dem Webbrowser und dem Website-Server abfängt, kann er sie lesen Verstehen Sie die darin enthaltenen Informationen direkt, daher ist das HTTP-Protokoll nicht für die Übertragung vertraulicher Informationen wie Kreditkartennummern, Passwörter usw. geeignet.

Um diesen Mangel des HTTP-Protokolls zu beheben, muss ein anderes Protokoll verwendet werden: Secure Sockets Layer Hypertext Transfer Protocol HTTPS. Für die Sicherheit der Datenübertragung fügt HTTPS das SSL -Protokoll zu HTTP SSL hinzu, um die Identität des Servers zu überprüfen und die Kommunikation zwischen dem Browser und dem Server bereitzustellen. Kommunikationsverschlüsselung.

HTTP-Hijacking

HttpsNur ​​während der Übertragung verschlüsselt, HttpsVerschlüsselung mit öffentlichem Schlüssel, privat Schlüsselentschlüsselung , öffentlicher Schlüssel und privater Schlüssel werden durch einen asymmetrischen Verschlüsselungsalgorithmus generiert.

Https-Hijacking:

Der Client sendet eine Anfrage an den Server, Der Server gibt ein Public-Key-CAZertifikat an den Client zurück und der Client erhält das Public-Key-Zertifikat Generieren Sie zufällig einen symmetrischen Schlüssel auf dem Client. Dieser symmetrische Schlüssel wird zum Verschlüsseln des gesamten nachfolgenden Datenverkehrs verwendet, und dann wird der symmetrische Schlüssel verwendet Öffentlicher Schlüssel Verschlüsseln Sie und senden Sie ihn an den Server Der Server entschlüsselt ihn, wenn er über den privaten Schlüssel verfügt, der dem öffentlichen Schlüssel entspricht.

Die Hauptunterschiede zwischen HTTPS und HTTP sind die folgenden vier Punkte:

1. Das https-Protokoll erfordert ca Beantragen Sie ein Zertifikat Im Allgemeinen gibt es nur wenige kostenlose Zertifikate und Sie müssen eine Gebühr zahlen.

2. http ist ein Hypertext-Übertragungsprotokoll und Informationen sind eine Klartextübertragung, während https ein sicheres SSLverschlüsseltes Übertragungsprotokoll ist.

3. http und https verwenden völlig unterschiedliche Verbindungsmethoden und verwenden unterschiedliche Ports Ersteres ist 80 und Letzteres ist 443.

4. Die HTTP-Verbindung ist sehr einfach und zustandslos; das HTTPS-Protokoll ist aus dem SSL+HTTPProtokoll aufgebaut und kann sein zustandslos 🎜>Das Netzwerkprotokoll der verschlüsselten Übertragung und Identitätsauthentifizierung

ist sicherer als das http-Protokoll.

Hinweis:

Zustandslos (das Protokoll hat keinen Speicher für die Transaktionsverarbeitung, das Leben ist nur wie beim ersten Mal): Jede Kommunikation zwischen Client und Server ist ein unabhängiger Prozess

. Bei Anwendungen, die keine Cookies verwenden, muss sich der Client bei jeder Anfrage erneut authentifizieren (eine Sitzung wird zur Verfolgung von Benutzerverhaltensspuren nach der Benutzerauthentifizierung verwendet). verbesserte Benutzererfahrung, aber erhöhter Angriffsverkehr)

DNS-Domänennamenauflösung

Der Client gibt eine DNS-Anfrage aus, um die IP-Adresse oder den Host zu übersetzen name.DNS-Server Nach Erhalt der Anfrage des Clients:

1. Überprüfen Sie den Cache des DNS--Servers. Wenn die angeforderte Adresse oder der Name gefunden wird, wird eine Antwortnachricht an den Client gesendet 🎜>

2. Wenn nicht gefunden, suchen Sie

in der Datenbank . Wenn die angeforderte Adresse oder der Name gefunden wird, wird eine Antwortnachricht an den Kunden gesendet

3. Wenn nicht gefunden , dann

Senden Sie die Anfrage an den Root-Domain-DNS--Server und suchen Sie nacheinander nach der Top-Level-Domain von der Root-Domain aus und suchen Sie dann nach der Second-Level-Domain von oben. Suchen Sie dann in der Domäne der zweiten Ebene nach der Domäne der dritten Ebene, bis Sie die Adresse oder den Namen gefunden haben, die Sie auflösen möchten. Senden Sie also eine Antwortnachricht an den DNS-Server des Netzwerks, in dem sich der Client befindet . Nach Erhalt der Antwort speichert der DNS-Server diese nun im Cache und sendet dann das Parsing-Ergebnis an den Client

4. Wenn es nicht gefunden wird, dann

Fehlermeldung zurückgeben

Weitere Informationen zu diesem Thema finden Sie unter:

PHP-Website für Chinesisch!

Das obige ist der detaillierte Inhalt vonWelche Grundkenntnisse sind für die Webpenetration erforderlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn