Wie kann man aus einer Webserver Begrüßungsmehldung den eingesetzten Webserver und die dazugehörige Versionsnummer herausfinden. Es ist möglich diesen Scanner in PHP zu programmieren so dass man das Programm anschließend auf seinem Webserver laufen lässt damit auch die Besucher mit dem Scanner arbeiten können. Nun als erstem müssen wir wissen was das Programm an den Webserver senden muss damit man eine Antwort bekommt. Senden einer GET Anfrage.
GET / HTTP/1.1 Host: Servername
Wenn der Webserver diese Anfrage erhält antwortet er in den er ein Header und die index Seite an dass Programm zurücksendet. Für uns ist der Header interesant weil dort der Name des eingesetzten Webservers steht. Ein Beispiel Header.
HTTP/1.1 200 OK Date: Mon, 07 Jul 2003 03:17:01 GMT Server: Apache/1.3.27 (Unix) mod_log_bytes/1.2 mod_bwlimited/1.0 PHP/4.3.1 FrontPage/5.0.2.2510 mod_ssl/2.8.14 OpenSSL/0.9.6b X-Powered-By: PHP/4.3.1 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html
Die Zeile die für uns interessant ist fängt mit Server: an.
Server: Apache/1.3.27 (Unix) mod_log_bytes/1.2 mod_bwlimited/1.0 PHP/4.3.1 FrontPage/5.0.2.2510 mod_ssl/2.8.14 OpenSSL/0.9.6b
Und hier sehen wir den Webserver es ist ein Apache mit der Version 1.3.27.
Und hier ist der fertige PHP Script.
<?php $fp = fsockopen($server,80); fwrite($fp,"GET / HTTP/1.1\r\nHost: $server\r\nConnection: close\r\n\r\n"); $out = fread($fp,500); $DATA = split("Server:", $out, 2); $out = $DATA[1]; $DATA = split("\r\n", $out, 2); $out = $DATA[0]; print $out; fclose($fp); ?>
|