82 Stimmen

Wie finde ich die Version von Apache, die ohne Zugriff auf die Kommandozeile läuft?

Ich muss entweder eine Datei finden, in der die Version verschlüsselt ist, oder eine Möglichkeit, sie über das Web abzufragen, damit sie ihre Version preisgibt. Der Server läuft auf einem Host, der mir keinen Befehlszeilenzugriff gewährt, obwohl ich den Installationsort per FTP durchsuchen kann.

Ich habe HEAD ausprobiert und bekomme keine Versionsnummer gemeldet.

Wenn ich eine fehlende Seite versuche, um eine 404 zu erhalten, wird sie abgefangen, und es wird eine Bestandsseite zurückgegeben, die keine Serverinformationen enthält. Ich schätze, das deutet darauf hin, dass der Server gehärtet ist.

Immer noch nicht näher dran...

Ich habe, wie vorgeschlagen, eine PHP-Datei angelegt, aber ich kann sie nicht aufrufen und finde den URL-Pfad zum Laden der Datei nicht heraus. Auf jeden Fall erhalte ich viele Meldungen über verweigerten Zugriff und die gleiche 404-Seite. Es beruhigt mich zu wissen, dass der Server ziemlich gut geschützt ist.

0 Stimmen

Können Sie Shell-Befehle in Skripten auf dem Server ausführen?

0 Stimmen

Gute Frage, ich weiß es nicht. Ich werde es versuchen

0 Stimmen

Sie können PHPShell installieren von phpshell.sourceforge.net in dem Sie sich umsehen können

139voto

Paul Dixon Punkte 286600

Die Methode

Verbinden Sie sich mit Port 80 auf dem Host und senden Sie es

HEAD / HTTP/1.0

Darauf muss zweimal Carriage-Return + Line-Feed folgen

Sie erhalten dann etwa folgende Antwort

HTTP/1.1 200 OK
Date: Fri, 03 Oct 2008 12:39:43 GMT
Server: Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.0 PHP/5.2.6-1ubuntu4 with Suhosin-Patch mod_perl/2.0.4 Perl/v5.10.0
Last-Modified: Thu, 02 Aug 2007 20:50:09 GMT
ETag: "438118-197-436bd96872240"
Accept-Ranges: bytes
Content-Length: 407
Connection: close
Content-Type: text/html; charset=UTF-8

Sie können dann die Apache-Version aus dem Server: Header extrahieren

Typische Tools, die Sie verwenden können

Sie können das HEAD-Dienstprogramm verwenden, das mit einer vollständigen Installation von Perl's LWP Bibliothek, z.B.

HEAD http://your.webserver.com/

Oder verwenden Sie die locken. Nutzen, z.B.

 curl --head http://your.webserver.com/

Sie können auch eine Browsererweiterung verwenden, mit der Sie Server-Header anzeigen können, z. B. Live-HTTP-Header oder Firebug für Firefox, oder Fiddler für IE

Sie haben keine Lust auf Windows?

Wenn Sie unter Windows arbeiten und nichts anderes zur Verfügung haben, öffnen Sie eine Eingabeaufforderung (Startmenü->Ausführen, geben Sie "cmd" ein und drücken Sie die Eingabetaste), und geben Sie dann Folgendes ein

telnet your.webserver.com 80

Dann tippen Sie (vorsichtig, Ihre Zeichen werden nicht zurückgesendet)

HEAD / HTTP/1.0

Drücken Sie zweimal die Eingabetaste und Sie sehen die Server-Header.

Andere Methoden

Wie von cfeduke und Veynom erwähnt, kann der Server so eingestellt sein, dass er nur begrenzte Informationen im Server: Header zurückgibt. Versuchen Sie, ein PHP-Skript auf Ihren Host hochzuladen, das dies enthält

<?php phpinfo() ?>

Rufen Sie die Seite mit einem Webbrowser auf, und Sie sollten dort die Apache-Version sehen.

Sie könnten auch versuchen, Folgendes zu verwenden PHPShell um ein wenig herumzustöbern, versuchen Sie einen Befehl wie

/usr/sbin/apache2 -V

9 Stimmen

So nah dran. Allerdings sagt der Server nur "Apache" ohne jegliche Versionsangaben

0 Stimmen

Genau das habe ich auch geschrieben :) Nur Apache in einigen Fällen.

7 Stimmen

Bei der Verwendung der Eingabeaufforderung unter Windows 7 ist es außerdem wichtig zu beachten, dass telnet aktiviert sein muss: Start > Systemsteuerung > Programme und Funktionen > Windows-Funktionen ein- oder ausschalten > Vergewissern Sie sich, dass "Telnet-Client" aktiviert ist > Klicken Sie auf OK

45voto

crmpicco Punkte 15465

httpd -v gibt Ihnen die Version von Apache an, die auf Ihrem Server läuft (wenn Sie SSH/Shell-Zugang haben).

Die Ausgabe sollte in etwa so aussehen:

Server version: Apache/2.2.3
Server built:   Oct 20 2011 17:00:12

Wie bereits vorgeschlagen, können Sie auch Folgendes tun apachectl -v die die gleiche Ausgabe liefert, aber von mehr Linux-Versionen unterstützt wird.

15 Stimmen

Unter Ubuntu heißt die Binärdatei apache2 , nicht httpd

1 Stimmen

+1 - phpinfo() und curl lieferten keine ausreichenden Informationen für einen gemeinsam genutzten Host, den ich verwendete. Dies tat.

1 Stimmen

OP fragt nach einer Nicht-Shell-Lösung :) Da dies ohnehin gepostet wird, schlage ich die Verwendung von "apachectl" für eine größere Plattformunabhängigkeit vor.

5voto

cfeduke Punkte 22720

In seltenen Fällen ist ein gehärteter HTTP-Server so konfiguriert, dass er keine oder irreführende Serverinformationen liefert. In solchen Fällen können Sie, wenn der Server PHP aktiviert hat, hinzufügen:

<?php phpinfo(); ?>

in einer Datei und suchen Sie dort nach der

_SERVER["SERVER_SOFTWARE"]

Eintrag. Dies ist anfällig für die gleiche Härtung Mangel an Informationen / irreführend, obwohl ich mir vorstellen kann, dass es nicht oft geändert wird, weil diese Methode erfordert zunächst den Zugriff auf den Computer, um die PHP-Datei zu erstellen.

0 Stimmen

Mein gehärteter Server hat auch 'Apache' für $_SERVER["SERVER_SOFTWARE"]

5voto

Veynom Punkte 3951

Achtung, einige Apache-Server senden nicht immer ihre Versionsnummer, wenn sie HEAD verwenden, wie in diesem Fall:

HTTP/1.1 200 OK
Date: Fri, 03 Oct 2008 13:09:45 GMT
Server: Apache
X-Powered-By: PHP/5.2.6RC4-pl0-gentoo
Set-Cookie: PHPSESSID=a97a60f86539b5502ad1109f6759585c; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Content-Type: text/html

Connection to host lost.

Wenn PHP installiert ist, können Sie einfach den Befehl php info verwenden:

<?php phpinfo(); ?>

2 Stimmen

phpinfo() zeigt auch nicht immer die Apache-Version an, zumindest nicht bei Verwendung von CGI/FastCGI.

4voto

mmacaulay Punkte 2991

Der Grad der Versionsinformationen, die von einem Apache-Server ausgegeben werden, kann durch die Einstellung ServerTokens in seiner Konfiguration konfiguriert werden.

Ich glaube, es gibt auch eine Einstellung, die steuert, ob die Version in Server-Fehlerseiten angezeigt wird, obwohl ich mich nicht mehr genau daran erinnern kann. Wenn Sie keinen direkten Zugriff auf den Server haben und der Serveradministrator kompetent ist und nicht möchte, dass Sie die Version kennen, die er verwendet... Ich denke, Sie könnten SOL .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X