如何列出为网页提供服务的每个端口

如何列出为网页提供服务的每个端口

我有许多服务器,所有服务器都具有可通过各种端口访问的各种 HTTP(S) 服务。跟踪哪些服务在哪个主机和哪个端口上可用是非常困难的。通常我只是依赖我的浏览器历史记录。

是否有一些 shell 命令(netcat 的某些变体)或脚本可以从给定的服务器列出为网页提供服务的每个端口?或者每个端口都使用 HTTP 或 HTTPS?

答案1

一个特定的脚本,不,但是有一种方法可以获取该信息。可能有几种方法。我将从 开始netstat -tuln,它将告诉您哪些端口具有与其关联的侦听服务。然后,您可以查看一些信息,例如fuser -n tcp <port num>告诉哪些 PID 正在侦听给定端口,然后端口可以告诉您哪个守护进程/进程与该 PID 关联。

不过,严肃地说,你最好一次性解决这个问题,然后成为一个彻头彻尾的混蛋,确保它的文档保持最新,无论这意味着打败自己还是打败别人——反复地——四分之 一的线索。

答案2

假设您可以登录主机并查看正在运行的进程,最简单的方法是使用 netstat

netstat -lnp | grep <apache|httpd>

debian 使用 apache,cent/rhel 使用 httpd。如果没有该选项,您可以使用 nmap 来发现服务,前提是您没有 IDS/IPS 会在给定点关闭您的连接。

或者使用浏览器书签或 shell 别名。

答案3

您可以使用 anmap和脚本来做到这一点,例如http-get.nse*

$ 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

http-get.path=它向找到的每个开放端口发出 http 请求,并请求in中给出的路径中的页面--script-args,并查看响应以查找中定义的匹配关键字http-get.match=

如果找到开放端口,它会报告 GET 请求的状态代码以及可能的关键字匹配。

5055/tcp open  unot
| http-get: 
|   GET / -> 200 OK
|_  Matches: downloads

该脚本可能需要进一步调整,例如。我还没有测试过对 https 的支持。但它应该让你开始。

* 我分叉修复并调整了它。脚本的功劳归于大卫·惠特曼

相关内容