Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Objektinjektion

PHP-Objektinjektion

王林
王林Original
2024-08-29 12:36:32339Durchsuche

Die Schwachstelle auf Anwendungsebene, die es den Angreifern möglicherweise ermöglichen könnte, verschiedene Arten von böswilligen Angriffen durchzuführen, wie z. B. Path-Traversal-Angriffe, Code-Injection, Application Denial of Service, SQL-Injection usw., wird als PHP-Objektinjection oder PHP-Objektinjection bezeichnet PHP-Deserialisierung und die Ursache dieser Schwachstelle ist eine nicht ordnungsgemäß bereinigte Eingabe, die der Benutzer an die unserialize()-Funktion in PHP übermittelt, und die Angreifer können beliebige PHP-Objekte in eine Anwendung einschleusen, indem sie Zeichenfolgen übergeben, die ad hoc über die anfällige unserialize( )-Funktion und diese Schwachstelle in PHP führt zur Remote-Codeausführung.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Syntax

Die Syntax zum Deklarieren der Funktion serialize() in PHP lautet wie folgt:

unserialize(value);

wobei „Wert“ der zu deserialisierende Wert ist, der möglicherweise zu einer Objektinjektion führen kann.

Funktionsweise der Objektinjektion in PHP

Die Funktionsweise der Objektinjektion in PHP ist wie folgt:

  • Die Schwachstelle auf Anwendungsebene, die es den Angreifern möglicherweise ermöglichen könnte, verschiedene Arten von böswilligen Angriffen durchzuführen, wie z. B. Path-Traversal-Angriffe, Code-Injection, Application Denial of Service, SQL-Injection usw., wird als PHP-Object-Injection bezeichnet oder PHP-Deserialisierung.
  • Die Ursache dieser Sicherheitslücke ist eine nicht ordnungsgemäß bereinigte Eingabe, die der Benutzer an die unserialize()-Funktion in PHP übermittelt.
  • Die Angreifer können beliebige PHP-Objekte in eine Anwendung einschleusen, indem sie Zeichenfolgen übergeben, die über die anfällige Funktion unserialize() ad hoc serialisiert werden.
  • Diese Schwachstelle in PHP führt zur Remote-Codeausführung.

Beispiele für die PHP-Objektinjektion

Im Folgenden sind die Beispiele aufgeführt:

Beispiel #1

PHP-Programm zur Veranschaulichung der Objektinjektion, um einen bestimmten Wert als Folge von Bits umzuwandeln, sodass er überall gespeichert werden kann, und ihn dann mit der Funktion unserialize() zu deserialisieren:

Code:

<html>
<body>
<?php
#The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value
$value = serialize(array("Welcome", "to", "PHP"));
#The returned string from the serialize() function is displayed as the output on the screen
echo "The data after serialization using serialize() function is as follows:\n";
echo $value;
#the serialized data is passed through the unserialize function and the result is stroed in a variable called result
$result = unserialize($value);
echo "<br>";
#The unserialized data is displayed as the output on the screen
echo "The data after deserialization using unserialize() function is as follows:\n";
echo "<br>";
var_dump($result);
?>
</body>
</html>

Ausgabe:

PHP-Objektinjektion

Im obigen Programm wird das zu serialisierende Datenarray an die Serialisierungsfunktion übergeben und die zurückgegebene Zeichenfolge in einer Variablen namens „Wert“ gespeichert. Anschließend wird der von der Funktion serialize() zurückgegebene String als Ausgabe auf dem Bildschirm angezeigt. Dann werden die serialisierten Daten durch die Funktion unserialize geleitet und das Ergebnis wird in einer Variablen namens result gespeichert. Anschließend werden die desialisierten Daten als Ausgabe auf dem Bildschirm angezeigt. Die Ausgabe ist im Schnappschuss oben dargestellt.

Beispiel #2

PHP-Programm zur Veranschaulichung der Objektinjektion, um einen bestimmten Wert als Folge von Bits umzuwandeln, sodass er überall gespeichert werden kann, und ihn dann mit der Funktion unserialize() zu deserialisieren:

Code:

<html>
<body>
<?php
#The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value
$value = serialize(array("Learning", "is", "fun"));
#The returned string from the serialize() function is displayed as the output on the screen
echo "The data after serialization using serialize() function is as follows:\n";
echo $value;
#the serialized data is passed through the unserialize function and the result is stroed in a variable called result
$result = unserialize($value);
echo "<br>";
#The unserialized data is displayed as the output on the screen
echo "The data after deserialization using unserialize() function is as follows:\n";
echo "<br>";
var_dump($result);
?>
</body>
</html>

Ausgabe:

PHP-Objektinjektion

Im obigen Programm wird das zu serialisierende Datenarray an die Serialisierungsfunktion übergeben und die zurückgegebene Zeichenfolge in einer Variablen namens „Wert“ gespeichert. Anschließend wird der von der Funktion serialize() zurückgegebene String als Ausgabe auf dem Bildschirm angezeigt. Dann werden die serialisierten Daten durch die Funktion unserialize geleitet und das Ergebnis wird in einer Variablen namens result gespeichert. Anschließend werden die desialisierten Daten als Ausgabe auf dem Bildschirm angezeigt. Die Ausgabe ist im Schnappschuss oben dargestellt.

Beispiel #3

PHP-Programm zur Veranschaulichung der Objektinjektion, um einen bestimmten Wert als Folge von Bits umzuwandeln, sodass er überall gespeichert werden kann, und ihn dann mit der Funktion unserialize() zu deserialisieren:

Code:

<html>
<body>
<?php
#The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value
$value = serialize(array("We", "love", "India"));
#The returned string from the serialize() function is displayed as the output on the screen
echo "The data after serialization using serialize() function is as follows:\n";
echo $value;
#the serialized data is passed through the unserialize function and the result is stroed in a variable called result
$result = unserialize($value);
echo "<br>";
#The unserialized data is displayed as the output on the screen
echo "The data after deserialization using unserialize() function is as follows:\n";
echo "<br>";
var_dump($result);
?>
</body>
</html>

Ausgabe:

PHP-Objektinjektion

Im obigen Programm wird das zu serialisierende Datenarray an die Serialisierungsfunktion übergeben und die zurückgegebene Zeichenfolge in einer Variablen namens „Wert“ gespeichert. Anschließend wird der von der Funktion serialize() zurückgegebene String als Ausgabe auf dem Bildschirm angezeigt. Dann werden die serialisierten Daten durch die Funktion unserialize geleitet und das Ergebnis wird in einer Variablen namens result gespeichert. Anschließend werden die desialisierten Daten als Ausgabe auf dem Bildschirm angezeigt. Die Ausgabe ist im Schnappschuss oben dargestellt.

Das obige ist der detaillierte Inhalt vonPHP-Objektinjektion. 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
Vorheriger Artikel:Objekt in PHPNächster Artikel:Objekt in PHP