Heim  >  Artikel  >  Backend-Entwicklung  >  Vollständige Erklärung der PHP-Schwachstellen (3) – Client-Skript-Implantation

Vollständige Erklärung der PHP-Schwachstellen (3) – Client-Skript-Implantation

黄舟
黄舟Original
2016-12-22 09:20:251230Durchsuche

Clientseitige Skripteinfügung (Skripteinfügung) bezieht sich auf das Einfügen ausführbarer Skripte in Objekte wie Formulare, Bilder, Animationen oder Hyperlinktext. Wenn der Benutzer diese Objekte öffnet, wird das vom Angreifer implantierte Skript ausgeführt und der Angriff beginnt.

Zu den HTML-Tags, die im Allgemeinen als Skriptimplantate verwendet werden können, gehören:

1. Seitenskripte wie Javascript und VBScript, die durch das Tag <script> gekennzeichnet sind. Sie können den js-Programmcode im <script>-Tag angeben oder den URL-Pfad der js-Datei im src-Attribut </script>

2. Das durch das -Tag markierte Objekt. Bei diesen Objekten handelt es sich um Java-Applets, Multimediadateien, ActiveX-Steuerelemente usw. Normalerweise wird der URL-Pfad des Objekts im Datenattribut

3 angegeben. Objekt markiert mit Bei diesen Objekten handelt es sich um Multimediadateien, beispielsweise SWF-Dateien. Normalerweise wird der URL-Pfad des Objekts im src-Attribut

4 angegeben. Objekt markiert mit Bei diesen Objekten handelt es sich um Java-Applets, und der URL-Pfad des Objekts wird normalerweise im Codebasisattribut

5 angegeben. Normalerweise wird der URL-Pfad der Webanwendung zur Verarbeitung von Formulardaten im Aktionsattribut angegeben.

Angriffsschritte für die clientseitige Skriptimplantation

1 Der Angreifer meldet sich auf der Website an, nachdem er sich als registriert hat normaler Benutzer

2. Öffnen Sie die Nachrichtenseite und fügen Sie den Angriffs-JS-Code ein

3. Andere Benutzer melden sich auf der Website an (einschließlich Administratoren) und durchsuchen den Inhalt dieser Nachricht

4. Im Nachrichteninhalt versteckt Der js-Code wird ausgeführt und der Angriff ist erfolgreich

Vollständige Erklärung der PHP-Schwachstellen (3) – Client-Skript-Implantation

Instanz

Datenbank

TABELLE ERSTELLEN `postmessage` (

` id` int(11) NOT NULL auto_increment,

`subject` varchar(60) NOT NULL default ”,

`name` varchar( 40) NOT NULL default ”,

`email` varchar(25) NOT NULL default ”,

`question` mediumtext NOT NULL,

`postdate` datetime NOT NULL Standard '0000-00-00 00:00: 00′,

PRIMÄRSCHLÜSSEL (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT='Benutzernachricht' AUTO_INCREMENT=69 ;

// add.php Nachricht einfügen

//list.php Nachrichtenliste

//show.php Nachricht anzeigen

Senden Sie die Nachricht unten

Vollständige Erklärung der PHP-Schwachstellen (3) – Client-Skript-Implantation


Beim Durchsuchen dieser Nachricht wird das js-Skript ausgeführt

Insert<script>while(1){ windows.open();}< /script> Unendliches Popup-Feld </script>

Einfügen <script>location.href="http://www.php1.cn/"></script>

oder verwenden Sie andere selbst erstellte JS-Code-Angriffe

Präventionsmethoden

Verwenden Sie im Allgemeinen die Funktion htmlspecialchars, um Sonderzeichen in HTML-Codierung umzuwandeln

Funktionsprototyp

string htmlspecialchars (string string, int quote_style , string charset)

string ist der zu kodierende String

quote_style ist optional. Der Wert kann ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES sein. Der Standardwert ENT_COMPAT bedeutet, dass nur doppelte Anführungszeichen konvertiert werden und einfache Anführungszeichen nicht. ENT_QUOTES gibt an, dass sowohl doppelte als auch einfache Anführungszeichen konvertiert werden müssen. ENT_NOQUOTES gibt an, dass doppelte und einfache Anführungszeichen nicht konvertiert werden. Der Zeichensatz

ist optional und gibt den verwendeten Zeichensatz an. Die Funktion

konvertiert die folgenden Sonderzeichen in HTML-Kodierung >

& —-> &

" —-> '

> ; —-> >

Ändern Sie Zeile 98 von show.php in

Dann überprüfen Sie die Schwachstellenseite, auf der js eingefügt ist

Das Obige ist die vollständige Lösung der PHP-Schwachstellen (3) – die Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)! Vollständige Erklärung der PHP-Schwachstellen (3) – Client-Skript-Implantation


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