http-Request Spoofing

Neben der bereits beschriebenen Variante, Formular-Inhalte anzupassen bzw. unerwartete Werte einfach via $_GET zu übertragen gibt es auch die Möglichkeit direkt den HTTP-Request zu beeinflussen.

Im folgenden einmal der resultierende HTTP-Request zum vorherigen Farbwahl-Formular:

ZitatPOST /process.php HTTP/1.1
Host: example.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 9

color=red

Beispielsweise via Telnet kann man auch direkte Requests auf z.B. www.php.net absetzen:

Zitat$ telnet www.php.net 80
Trying 64.246.30.37...
Connected to rs1.php.net.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.php.net

HTTP/1.1 200 OK
Date: Wed, 21 May 2004 12:34:56 GMT
Server: Apache/1.3.26 (Unix) mod_gzip/1.3.26.1a PHP/4.3.3-dev
X-Powered-By: PHP/4.3.3-dev
Last-Modified: Wed, 21 May 2004 12:34:56 GMT
Content-language: en
Set-Cookie: COUNTRY=USA%2C12.34.56.78; expires=Wed,28-May-04 12:34:56 GMT; path=/; domain=.php.net
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1

2083
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
...

Selbstverständlich kann man anstelle über Telnet auch über einen eigenen Client die Anfragen senden, im folgenden der entsprechende Request direkt via PHP:

Zitat<?php
$http_response = '';
$fp = fsockopen('www.php.net', 80);
fputs($fp, "GET / HTTP/1.1\r\n");
fputs($fp, "Host: www.php.net\r\n\r\n");
while (!feof($fp))
{
    $http_response .= fgets($fp, 128);
}
fclose($fp);
echo nl2br(htmlentities($http_response));
?>
Das direkte Übertragen eigener HTTP Requests bietet vollständige Flexibilität in Bezug auf die Inhalte und demonstriert so die Notwendigkeit für serverseitige Filterung. Ohne Validierung hat man keinen Einfluss auf die von externen Quellen übertragenen Werte.


Netzwerke

Blogroll