C'è un modo per rilevare il web server nel caso in cui non sia presente in HEADER?

29

Sto cercando di individuare il server Web utilizzato da un determinato sito Web. Ad esempio se è nginX, Apache, Tomcat e così via.

Di solito uso Live HTTP Headers add-on per Firefox. Il problema è che i siti a volte nascondono il loro back-end. Non c'è un modo per rilevare i server Web quando non sono presenti in HEADER?

EDIT 1: Un esempio di output da un sito web che non corrisponde a nessuna delle risposte di @Question Overflow :

HTTP/1.1 200 OK
Date: Mon, 29 Sep 2014 10:43:29 GMT
Content-Type: text/html
Transfer-Encoding: chunked
X-Powered-By: VideoHosting Framework/1.0.1
Cache-Control: no-cache, must-revalidate, no-cache="Set-Cookie", private
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Videohost/1.0.1

Ho persino provato a usare httprint su linux, ma dà ICMP request timeout su ogni sito web che ho provato.

EDIT 2: Il precedente HEADER è molto simile a un sito Web che sono sicuro che usi nginX. Se rimuoviamo quelle parti che non sono presenti ( Connection , Pragma e così via) nel precedente HEADER, diventa così simile a nginX. Suppongo che Server sia alla fine di response perché lo hanno personalizzato per se stessi. E a causa di quel nginX l'ha aggiunto alla fine del pacchetto Response .

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 29 Sep 2014 12:51:37 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
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
Content-Encoding: gzip

OWASP dovrebbe aggiornare il suo elenco con questo anche per nginX. ; -)

    
posta ALH 29.09.2014 - 08:13
fonte

3 risposte

27

Se un sito Web non utilizza un server personalizzato per modificare le intestazioni HTTP, puoi provare esaminando l' ordine di arrangiamento nei campi di risposta HTTP. Da OWASP :

Server Apache 1.3.23:

HTTP/1.1 200 OK 
Date: ...
Server: ...
Last-Modified: ...
ETag: ...
Accept-Ranges: bytes 
Content-Length: ...
Connection: ...
Content-Type: text/HTML 

Server Microsoft IIS 5.0:

HTTP/1.1 200 OK 
Server: ...
Expires: ...
Date: ...
Content-Type: text/HTML 
Accept-Ranges: bytes 
Last-Modified: ...
ETag: ...
Content-Length: ...

Server Netscape Enterprise 4.1:

HTTP/1.1 200 OK 
Server: ...
Date: ...
Content-type: text/HTML 
Last-modified: ...
Content-length: ...
Accept-ranges: bytes 
Connection: ...

Server SunONE 6.1:

HTTP/1.1 200 OK
Server: ...
Date: ...
Content-length: ...
Content-type: text/html
Date: ...
Last-Modified: ...
Accept-Ranges: bytes
Connection: ...

Per ulteriore conferma, puoi inviare una richiesta errata , come GET / HTTP/3.0 , per ottenere una risposta non standard. Esempio:

Server Apache 1.3.23 e SunONE 6.1:

HTTP/1.1 400 Bad Request

Server Microsoft IIS 5.0:

HTTP/1.1 200 OK 

Server Netscape Enterprise 4.1:

HTTP/1.1 505 HTTP Version Not Supported

Poiché le informazioni di cui sopra sono piuttosto obsolete, potresti voler installare uno strumento per pentesting come link per impronte digitali del server Web .

I server Web possono offuscare la loro firma o mascherarsi come un altro server. Prendi le informazioni con un pizzico di sale, se necessario.

    
risposta data 29.09.2014 - 10:58
fonte
7

Puoi provare a cercare se riesci a far visualizzare al server una pagina di errore nativa. Le pagine di errore possono essere personalizzate da uno sviluppatore web, ma quando non lo sono, spesso rivelano molte informazioni sul server web.

Ad esempio, questa è la pagina di errore 404 non trovata di Apache 2.2.4 in esecuzione su Unix:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /server-status was not found on this server.</p>
<hr>
<address>Apache/2.2.4 (Unix) mod_antiloris/0.4 Server at example.com Port 3128</address>
</body></html>

E questa è la pagina di errore 400 Bad Request (ottenuta inviando una richiesta HTTP composta solo da GET / HTTP/1.1 usando telnet) inviata dallo stesso server:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.4 (Unix) mod_antiloris/0.4 Server at 203.0.113.113 Port 3128</address>
</body></html>
    
risposta data 29.09.2014 - 15:37
fonte
-3

Perché non utilizzare solo nmap per rilevare quale software del server Web viene utilizzato?

    
risposta data 29.09.2014 - 14:20
fonte

Leggi altre domande sui tag