Come eseguire script HTTP nmap su porte insolite

7

Come posso fare in modo che nmap esegua gli script HTTP su porte insolite per HTTP, ad esempio la porta TCP 123? Su qualcosa come nmap -n --script="http* ..." -p123 target nmap non fa altro che controllare che la porta 123 sia aperta e non usi script contro la porta. (Ho verificato che con le opzioni di traccia di nmap.)

È HTTP? La scansione della versione non riconosce la natura del servizio, ma l'output delle impronte digitali è molto chiaro su questo:

==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port123-TCP:V=6.47%I=7%D=4/27%Time=553D8163%P=i686-pc-linux-gnu%r(Gener
SF:icLines,1BA,"HTTP/1\.1\x20400\x20Bad\x20request\r\nContent-Type:\x20tex
SF:t/html\r\n\r\n<!DOCTYPE\x20HTML\x20PUBLIC\x20\"-//W3C//DTD\x20HTML\x204
SF:\.01\x20Transitional//EN\"\x20\"http://www\.w3\.org/TR/html4/loose\.dtd
SF:\">\r\n<html><head><link\x20rel=\"stylesheet\"\x20href=\"/minishare\.cs
SF:s\"\x20type=\"text/css\"><title>400\x20Bad\x20request</title></head><bo
SF:dy><h1>400\x20Bad\x20request</h1></body><hr><p\x20class=\"versioninfo\"
[...]
    
posta countermode 28.04.2015 - 11:24
fonte

5 risposte

9

Le altre risposte qui sono molto buone. Tuttavia, sono un paio di modi per fare ciò che vuoi che funzioni senza modificare gli script:

  1. Puoi insegnare a Nmap a riconoscere questo servizio. Le impronte digitali di servizio di Nmap si trovano nel file nmap-service-probes . Nmap riconosce già alcune versioni di MiniShare con questa linea di corrispondenza, aggiunta in Nmap 6.00:

    match http m|^HTTP/1\.1 200 OK\r\nContent-Type: text/html\r\n\r\n.*<title>MiniShare</title>\r\n.*<td class=\"total\" colspan=\"2\">Total: (\d+) files</td><td class=\"totalsize\">([^<]+)</td></tr>\r\n</table>\r\n<hr><p class=\"versioninfo\"><a href=\"http://minishare\.sourceforge\.net/\">MiniShare ([\d.]+)</a>|s p/MiniShare http interface/ v/$3/ i/$1 files, $2 shared/ o/Windows/ cpe:/o:microsoft:windows/a
    

    Ma il tuo servizio risponde in modo leggermente diverso e non corrisponde. Si prega di seguire le istruzioni fornite da Nmap a inviare l'impronta digitale di questo servizio in modo che gli altri utenti ne beneficino. Nel frattempo, puoi costruire una linea di corrispondenza simile in modo che il servizio venga identificato come "http" con -sV e lo script verrà eseguito.

  2. Come regola generale, puoi provare ad aggiornare a una versione più recente di Nmap. Al momento della stesura di questo documento, 6.47 era l'ultima versione, quindi questo non ti aiuterà, ma potrebbe aiutare qualcuno a leggere questa risposta più tardi.

  3. È possibile forzare l'esecuzione degli script NSE su tutte le porte aperte anteponendo un "+" al nome dello script. Ad esempio, --script +http-title proverà a richiedere una pagina e a recuperare il titolo per ogni servizio aperto sulla destinazione. Questo può essere pericoloso e lento perché gli script non sono stati scritti per essere eseguiti contro servizi arbitrari e potrebbero causare timeout o crash dei servizi di destinazione.

Un ultimo avvertimento: la richiesta di --script http* cercherà di eseguire molti script che potresti non intendere, inclusi (nella versione di sviluppo): 23 "exploit", 1 "dos" (denial of service), 51 " invadente ", e 10 script di categoria" esterni ". Un modo migliore per specificare questo sarebbe --script "http* and safe" o --script "http* and default"

    
risposta data 28.04.2015 - 15:03
fonte
5

Semplicemente usa il carattere + prima del nome dello script per forzare l'esecuzione di uno script. Enfasi particolare:

There are two special features for advanced users only. One is to prefix script names and expressions with + to force them to run even if they normally wouldn't (e.g. the relevant service wasn't detected on the target port). The other is that the argument all may be used to specify every script in Nmap's database. Be cautious with this because NSE contains dangerous scripts such as exploits, brute force authentication crackers, and denial of service attacks.

Quindi, se eseguo il comando

# nmap 127.0.0.1 -p 22 --script=+http-title.nse -d

questo imporrà lo script "http-title" da eseguire sulla porta 22:

NSE: Starting runlevel 1 (of 1) scan.
NSE: Starting http-title against 127.0.0.1:22.
Initiating NSE at 14:14
NSE: Finished http-title against 127.0.0.1:22.
Completed NSE at 14:14, 0.03s elapsed
Nmap scan report for localhost (127.0.0.1)
Host is up, received localhost-response (0.000089s latency).
Scanned at 2015-04-28 14:14:07 BST for 0s
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack
Final times for host: srtt: 89 rttvar: 5000  to: 100000
    
risposta data 28.04.2015 - 15:17
fonte
4

Nell'ultimo risultato del test, il punto interrogativo ("ntp?" invece di "ntp") indica che nmap non è stato in grado di riconoscere il servizio in esecuzione. Suppone quindi che NTP faccia affidamento solo sul tipo di servizio solitamente associato a questo numero di porta, ma senza alcuna confidenza (da qui il punto interrogativo).

Le intestazioni inviate da questo servizio sono molto minimaliste:

HTTP/1\.1 400 Bad request
Content-Type: text/html

E questo è tutto. Su un vero server web, troverai un po 'di intestazione che indica la data, il nome del server, i parametri della cache, ecc. Qui, non c'è niente.

La mia ipotesi è che tu non stia quindi affrontando un server web completo, ma:

  • Un server Web appositamente predisposto, come un'interfaccia di amministrazione remota incorporata in alcuni dispositivi,
  • Un server web offuscato (seguendo la nostra discussione nei commenti seguenti),
  • Un altro servizio che si basa sul protocollo HTTP (un servizio Web, un server WebDav, ecc.), provare altre richieste HTTP rispetto al solito GET può innescare comportamenti interessanti in questi casi.

Modifica :

Per rispondere più precisamente alla tua domanda, Nmap è uno strumento generale, i suoi script sono principalmente utili contro server non offuscati come un modo semplice per ottenere informazioni di base.

Qui, l'amministratore ha fatto uno sforzo specifico per confondere il suo server mirando precisamente a nascondere le informazioni necessarie a tali strumenti generali. È quindi necessario fare un ulteriore passo avanti e utilizzare strumenti più specifici.

Da un punto di vista tecnico, gli script nmap sono progettati per essere eseguiti solo quando necessario. Lo script relativo a HTTP verrà eseguito solo quando un servizio viene identificato come HTTP da nmap. Questo è fatto dalla dichiarazione portrule= che troverai all'inizio degli script, qui ci sono alcuni esempi provenienti da script HTTP nmap casuali:

portrule = shortport.http    
portrule = shortport.port_or_service( {80, 443}, {"http", "https"}, "tcp", "open")

Un modo sporco, ad esempio, sarebbe quello di modificare questi script per forzare la loro esecuzione ... ma senza risultati garantiti. Meglio usare lo strumento giusto per il compito giusto.

    
risposta data 28.04.2015 - 12:10
fonte
0

Questo è lo stesso di quello che colpisce la porta direttamente in un browser, è un documento di testo / html! con un foglio di stile e un codice di stato 400, trasmesso su HTTP 1.1.

400 Bad Request
    The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)

Se volessi scoprire ulteriori informazioni su ciò che è in esecuzione, andrei direttamente lì con un browser e vedere quali altre informazioni puoi brillare. Forse da poco dopo dove lo hai tagliato a

class="versioninfo

Ci sono alcuni script HTTP che potresti eseguire da qui, a seconda di quali informazioni vuoi ottenere sul server web, nel formato di:

nmap --script http-enum -p 123 x.x.x.x

Fonte: link

Modifica: Dato che si sta riferendo al foglio di stile minishare.css, probabilmente vorresti iniziare a scoprire se è questo: link

    
risposta data 28.04.2015 - 11:47
fonte
0

Imposta "portrule = shortport.http"

Apri http-enum.nse per trovare la riga pertinente.

Leggi la documentazione qui: link

    
risposta data 22.07.2016 - 06:31
fonte

Leggi altre domande sui tag