Você pode fazer isso com um nmap
e um script, por exemplo link *
$ nmap -p* --open --script http-get.nse --script-args http-get.path=/,http-get.match="downloads" 192.168.13.2
Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-13 23:09 CEST
Nmap scan report for 192.168.13.2
Host is up (0.029s latency).
Not shown: 4235 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
| http-get:
|_ GET / -> 200 OK
5050/tcp open mmcc
| http-get:
|_ GET / -> 200 OK
5051/tcp open ida-agent
| http-get:
|_ GET / -> 303
5055/tcp open unot
| http-get:
| GET / -> 200 OK
|_ Matches: downloads
8118/tcp open privoxy
| http-get:
|_ GET / -> 400
8200/tcp open trivnet1
| http-get:
|_ GET / -> 200 OK
Nmap done: 1 IP address (1 host up) scanned in 17.31 seconds 192.168.1.1
Emite uma solicitação http para cada porta aberta encontrada e solicita a página no caminho fornecido em http-get.path=
in --script-args
e analisa a resposta para encontrar uma palavra-chave correspondente definida em http-get.match=
Se uma porta aberta for encontrada, ela informará o código de status da solicitação GET e possivelmente uma correspondência de palavra-chave.
5055/tcp open unot
| http-get:
| GET / -> 200 OK
|_ Matches: downloads
Este script pode precisar de ajustes adicionais, por exemplo. Eu não testei suporte para https. Mas você deve começar.
* Eu me preparei para consertar e ajustar. O crédito para o script vai para David Wittman .