저는 다양한 포트를 통해 액세스할 수 있는 다양한 HTTP(S) 서비스를 갖춘 여러 대의 서버를 보유하고 있습니다. 어떤 호스트와 포트에서 어떤 서비스를 사용할 수 있는지 추적하는 것은 매우 어렵습니다. 보통 나는 브라우저 기록에만 의존합니다.
특정 서버에서 웹 페이지를 제공하는 모든 포트를 나열할 수 있는 일부 쉘 명령(netcat의 일부 변형) 또는 스크립트가 있습니까? 아니면 모든 포트에서 HTTP 또는 HTTPS를 사용합니까?
답변1
특정 스크립트는 아니지만 해당 정보를 얻을 수 있는 방법이 있습니다. 여러 가지 방법이 있을 수 있습니다. 이것부터 시작하겠습니다 netstat -tuln
. 그러면 어떤 포트에 연결된 수신 서비스가 있는지 알려줄 것입니다. 그런 다음 특정 포트에서 수신 대기 중인 PID를 알려주는 등 일부 정보를 살펴보면 fuser -n tcp <port num>
해당 PID와 연결된 데몬/프로세스를 알 수 있습니다.
하지만 진지하게, 이 문제를 완전히 해결한 다음 완전한 멍청이가 되어 문서를 최신 상태로 유지하는 것이 더 나을 것입니다. 그것이 자신을 때리거나 다른 사람을 - 반복적으로 - 1/4에서 이기는 것을 의미하든 상관 없습니다. 단서 .
답변2
호스트에 로그인하여 실행 중인 프로세스를 볼 수 있다고 가정하면 가장 쉬운 방법은 netstat를 사용하는 것입니다.
netstat -lnp | grep <apache|httpd>
데비안은 아파치를 사용하고, cent/rhel은 httpd를 사용합니다. 이 옵션이 없으면 특정 지점에서 연결을 닫는 IDS/IPS가 없는 경우 nmap을 사용하여 서비스를 검색할 수 있습니다.
또는 브라우저 북마크나 셸 별칭을 사용하세요.
답변3
nmap
a 및 스크립트를 사용하여 이 작업을 수행 할 수 있습니다 .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 요청을 하고 주어진 경로에 있는 페이지를 요청 --script-args
하고 다음에 정의된 일치하는 키워드에 대한 응답을 살펴봅니다.http-get.match=
열린 포트가 발견되면 GET 요청의 상태 코드와 가능한 키워드 일치를 보고합니다.
5055/tcp open unot
| http-get:
| GET / -> 200 OK
|_ Matches: downloads
스크립트에 추가 조정이 필요할 수 있습니다. 아직 https 지원을 테스트하지 않았습니다. 하지만 시작해야 합니다.
* 수리를 포크해서 조정했습니다. 스크립트 크레딧은 다음과 같습니다.데이비드 휘트먼.