HTTP 열거 및 디렉토리 탐색

LinuxBeginner
지금 연습하기

소개

웹 서버 열거 및 기본 파일 액세스 실습에 오신 것을 환영합니다. 이 연습에서는 웹 서비스 검색 및 상호 작용에 사용되는 기본적인 웹 정찰 기법을 배우게 됩니다.

이 실습에서는 기본적인 웹 정찰 시나리오를 시뮬레이션합니다. 대상 시스템이 온라인 상태인지 확인하고 실행 중인 서비스를 식별하기 위해 정찰을 수행하는 것으로 시작합니다. nmap 도구를 사용하여 웹 서버를 발견하고 해당 버전을 열거합니다. 그런 다음 curl 명령을 사용하여 웹 서버에 배치된 플래그 파일에 액세스합니다.

완료 시 다음을 수행하는 방법을 이해하게 됩니다.

  • ping을 사용하여 네트워크 연결 확인
  • nmap을 사용하여 웹 서비스 스캔 및 열거 수행
  • 기본적인 웹 정찰 기법 이해
  • curl을 사용하여 웹 서버의 파일에 액세스하고 플래그 검색

시작해 보겠습니다.

Ping 으로 대상 연결 확인

이 단계에서는 대상 시스템이 자신의 컴퓨터에서 도달 가능한지 확인하는 것으로 시작합니다. ping 명령은 네트워크 연결을 테스트하는 표준 유틸리티입니다. ICMP Echo Request 패킷을 호스트로 보내고 응답을 기다립니다. 이는 모든 네트워크 정찰 작업에서 첫 번째이자 가장 기본적인 단계입니다.

실습 환경에는 target 호스트 이름으로 액세스할 수 있는 대상 시스템이 포함되어 있습니다.

터미널에서 다음 명령을 실행하여 target으로 네 개의 패킷을 보냅니다.

ping -c 4 target

네 개의 패킷이 전송되고 네 개가 수신되었음을 확인하는 출력을 볼 수 있으며, 이는 안정적인 연결을 나타냅니다. IP 주소는 다를 수 있지만 결과는 0% 패킷 손실을 보여야 합니다.

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.067/0.077/0.105/0.016 ms

연결이 확인되었으므로 대상 스캔을 진행할 준비가 되었습니다.

Nmap 으로 열린 포트 스캔

이 단계에서는 nmap을 사용하여 대상의 열린 포트를 스캔하고 해당 포트에서 실행 중인 서비스를 식별합니다. Nmap 은 네트워크 탐색 및 보안 감사를 위한 강력한 도구입니다. 이 스캔은 웹 서버와 같은 잠재적인 진입점을 찾는 데 도움이 됩니다.

HTTP 트래픽의 표준 포트인 포트 80 에 대한 대상 스캔을 실행할 것입니다. 또한 스크립트를 사용하여 서비스에 대한 추가 정보를 수집할 것입니다.

터미널에서 다음 nmap 명령을 실행합니다.

nmap -sV -p 80 --script http-enum target

이 명령을 자세히 살펴보겠습니다.

  • -sV: 버전 감지를 활성화하여 포트에서 실행 중인 서비스의 버전을 결정하려고 시도합니다.
  • -p 80: 포트 80 만 스캔하도록 지정합니다.
  • --script http-enum: 웹 서버의 디렉터리와 파일을 열거하는 스크립트를 실행합니다.
  • target: 대상 컴퓨터의 호스트 이름입니다.

출력은 다음과 유사하게 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-18 09:40 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00018s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.41 ((Unix))
|_http-server-header: Apache/2.4.41 (Unix)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.32 seconds

스캔 결과는 포트 80/tcp가 열려 있고 Apache httpd 2.4.41이 실행 중임을 확인합니다. 이 웹 서버는 다음 단계에서 액세스할 수 있는 파일을 호스팅하고 있습니다.

HTTP 를 통해 대상에 연결

이 단계에서는 curl을 사용하여 웹 서버와 상호 작용하여 파일을 액세스합니다. curl은 URL 을 사용하여 데이터를 전송하는 명령줄 도구입니다.

먼저 웹 서버의 기본 페이지에 표준 요청을 보내 어떤 모습인지 확인해 보겠습니다.

curl http://target

서버는 기본 Apache 페이지 콘텐츠로 응답해야 합니다.

<html>
  <body>
    <h1>It works!</h1>
  </body>
</html>

이제 웹 서버의 루트 디렉터리에 배치된 플래그 파일에 액세스해 보겠습니다. 이 설정에서는 파일에 직접 액세스할 수 있지만, 일반적으로 액세스하는 방법을 보여드리겠습니다.

curl http://target/flag.txt

이 명령은 웹 서버의 문서 루트에서 플래그 파일을 직접 검색합니다.

대상 시스템 탐색 및 플래그 찾기

이 마지막 단계에서는 플래그를 검색하고 볼 것입니다. 이전 curl 명령의 출력에서 플래그가 터미널에 직접 표시되었어야 합니다.

명령의 예상 출력은 플래그 파일의 내용입니다.

labex{p4th_tr4v3rs4l_w1zardry}

출력이 길거나 나중에 저장하고 싶다면 curl 명령의 출력을 파일로 리디렉션할 수 있습니다. 이는 더 큰 파일을 다룰 때 일반적인 관행입니다.

명령을 다시 실행하되, 이번에는 결과를 flag.txt라는 파일에 저장합니다.

curl http://target/flag.txt > flag.txt

이제 cat 명령을 사용하여 다운로드한 파일의 내용을 볼 수 있습니다.

cat flag.txt

터미널에 플래그가 표시됩니다.

labex{p4th_tr4v3rs4l_w1zardry}

축하합니다! 웹 서버를 성공적으로 식별하고, 플래그 파일에 액세스하고, 플래그를 캡처했습니다. 플래그 값을 복사하여 랩을 완료하세요.

요약

이 랩에서는 기본적인 웹 정찰 연습을 성공적으로 완료했습니다. 다음 기술을 배우고 연습했습니다.

  • 정찰 (Reconnaissance): ping을 사용하여 대상이 온라인 상태이고 액세스 가능한지 확인했습니다.
  • 열거 (Enumeration): nmap을 버전 스캔 (-sV) 및 스크립트 (--script http-enum) 와 함께 사용하여 열린 HTTP 포트와 Apache 웹 서버의 특정 버전을 식별했습니다.
  • 파일 액세스 (File Access): curl을 사용하여 웹 서버의 파일에 액세스했습니다.
  • 플래그 검색 (Flag Retrieval): 웹 서버에서 플래그 파일을 성공적으로 검색했습니다.

이 연습은 웹 서버가 어떻게 작동하는지 이해하고 프로그래밍 방식으로 상호 작용하는 방법에 대한 기본 웹 정찰 기술을 보여줍니다. 이러한 기술은 웹 개발, 시스템 관리 및 보안 테스트에 필수적입니다.