> For the complete documentation index, see [llms.txt](https://redryan.gitbook.io/studyjoon/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://redryan.gitbook.io/studyjoon/hacking/bhpt/undefined-4/http/undefined.md).

# 버전 및 기술스택 확인

## Burp Suite - Repeater

* 내가 원하는 요청을 반복적으로 보내고 반응을 받는 기능을 가지고 있다.

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FY9PLVd3xZhYwvpEypyun%2Fimage.png?alt=media&amp;token=6547fa19-455c-4a6a-9804-cb6bd74678fd" alt=""><figcaption></figcaption></figure>

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FdOKRVonIbOHzRTGyv9XD%2Fimage.png?alt=media&amp;token=3290a279-0487-4ddf-a3cb-ff14bf58a071" alt=""><figcaption></figcaption></figure>

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FhVu1rLQN71VAJaZk0lIp%2Fimage.png?alt=media&amp;token=fe548d5e-6360-43ce-b342-f0ef585b756c" alt=""><figcaption></figcaption></figure>

* GET 메서드에 `/` 말고 `/wp-content` 디렉터리로 바꿔서 요청을 보내고 반응을 볼 수 있음.

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FBx7zQyULWRwSlJizh9Rl%2Fimage.png?alt=media&amp;token=00570f44-6aee-4a6e-862d-72e5cbf17c6a" alt=""><figcaption></figcaption></figure>

* 헤더 부분 확인 :  apache 2.4.10 버전
* html title, link, head 부분 등을 확인, Java Script통해 확인

## HTTP 기술 스택 확인 <a href="#bkmrk-page-title" id="bkmrk-page-title"></a>

앞서 언급했듯 웹에는 너무 많은 종류의 웹 서버와 웹 애플리케이션들이 있습니다. 이 다양한 종류의 웹 서버/애플리케이션들은 또 다양한 종류의 기술 스택으로 이뤄져 있습니다. BHPT는 웹 해킹 강의가 아니기 때문에 웹에서 사용되는 모든 기술 스택에 대해 알아보지 않지만, 다음은 호스트 기반 모의해킹을 진행할 때 알아놓으면 좋은 웹에서 사용되는 기술 스택의 종류들입니다.

| 기술 종류                          | 설명                                                                         |
| ------------------------------ | -------------------------------------------------------------------------- |
| 웹 프레임워크                        | 웹 애플리케이션의 개발을 빠르고 효율적으로 할 수 있도록 도와주는 도구 모음. 예: Django, Ruby on Rails       |
| 프로그래밍 언어                       | 웹 사이트 및 애플리케이션을 개발하는 데 사용되는 언어. 예: Python, JavaScript, Ruby                |
| CMS(Content Management System) | 콘텐츠(텍스트, 이미지, 비디오 등)를 관리하고 웹사이트를 쉽게 구축할 수 있게 해주는 시스템. 예: WordPress, Drupal |
| 자바스크립트 라이브러리                   | 자바스크립트를 사용하여 특정 기능을 쉽게 구현할 수 있도록 미리 작성된 코드 모음. 예: jQuery, React            |
| 자바스크립트 프레임워크                   | 자바스크립트 기반의 웹 애플리케이션을 개발할 때 사용되는 틀. 예: Angular, Vue.js                      |
| 데이터베이스                         | 데이터를 저장, 검색, 업데이트, 삭제할 수 있는 시스템. 예: MySQL, PostgreSQL, Firebase            |
| CDN(Content Delivery Network)  | 전 세계에 분산된 서버 네트워크를 통해 콘텐츠를 빠르게 제공하는 시스템. 예: Cloudflare, Akamai             |
| 웹 방화벽                          | 웹 애플리케이션을 해킹 및 기타 사이버 공격으로부터 보호하는 보안 시스템. 예: ModSecurity, Cloudflare WAF   |

BHPT에서 다루는 대부분의 내용들이 그렇듯, 위의 기술 종류들은 외울 필요는 없습니다. 시대가 변하면서 웹 애플리케이션 하나를 만들더라도 정말 많은 종류의 기술들이 들어가고, 이 기술들 하나하나마다 공격자가 악용할 수 있는 취약점이 발생할 수 있다는 사실만 알면 됩니다.

웹에는 굉장히 다양한 종류의 기술들이 있기 때문에 본격적인 취약점 진단에 앞서 대상 웹 서버/애플리케이션이 뭔지, 어떤 종류의 기술들을 사용하고 있는지에 대해 먼저 정보 수집을 진행합니다.

## 실습 <a href="#bkmrk-ec-8b-a4-ec-8a-b5" id="bkmrk-ec-8b-a4-ec-8a-b5"></a>

### 1. 방문해보기 <a href="#bkmrk-eb-b0-a9-eb-ac-b8-ed-95-b4-eb-b3-b4-ea-b8-b0" id="bkmrk-eb-b0-a9-eb-ac-b8-ed-95-b4-eb-b3-b4-ea-b8-b0"></a>

정보 수집을 하는데 있어 가장 직관적이고 효율적인 방법은 바로 웹 서버/애플리케이션을 방문 해보는 것입니다. 가장 먼저 방문해서는 어떤 종류의 웹 서버나 애플리케이션인지를 확인 해봅니다. 간단한 정적 페이지를 보여주는 웹 서버인지, 옛날 방식의 멀티 페이지 게시판 애플리케이션인지, 복잡한 비즈니스 로직을 가지고 있는 싱글 페이지 애플리케이션 등인지를 확인합니다.

그 뒤에는 행복 경로 테스팅(Happy Path)를 진행하며 다양한 기능들을 실행 해보며 해당 웹앱이 어떤 일을 하는지에 대해서 알아봅니다.

> 행복 경로 테스팅(Happy Path): 소프트웨어 개발에서 행복 경로 테스팅이란 가장 정상적인 유저의 기능 사용 및 상호작용에 초점을 맞춘 테스트 접근 방식입니다. 시스템의 기능을 오류와 악의적인 의도 없이 오로지 의도적인 상호작용만을 실행합니다.

해당 서버/웹앱이 어떤 기능을 하는지에 대해 전반적인 느낌을 알았다면, 다음 방식으로 진행합니다.

### 2. 소스코드 확인 <a href="#bkmrk-ec-86-8c-ec-8a-a4-ec-bd-94-eb-93-9c-ed-99-95-ec-9d-b8" id="bkmrk-ec-86-8c-ec-8a-a4-ec-bd-94-eb-93-9c-ed-99-95-ec-9d-b8"></a>

웹 앱을 방문 후 `Ctrl+u`나 오른쪽 클릭 한 뒤 `View Page Source` 혹은 `페이지 소스 보기` 등을 클릭하면 해당 페이지의 클라이언트 사이드에 있는 코드들을 확인할 수 있습니다. 이들은 대부분:

* HTML
* 자바스크립트 (JavaScript - JS)
* CSS

형태로 이뤄져 있습니다. HTML들을 살펴보다 보면 해당 웹 앱이나 서버와 관련된 다양한 정보들을 수집할 수 있습니다. 예를 들어 `<title>` 태그나 `<meta>` 태그 등에서 백엔드 서버나 애플리케이션에 관련된 이름을 찾을 수 있습니다. 혹은 `<a href>` 태그 등에서 숨겨져 있던 디렉토리 등을 찾아낼 수도 있습니다.

SPA 기반의 웹 애플리케이션이라면 HTML, JS, CSS가 굉장히 간단합니다. 대부분 프론트엔드 파일들을 한곳으로 묶거나 난독화 시켜주는 webpack 등의 기술들을 사용해 특정 자바스크립트 파일만 HTML안에 포함되도록 구성되어 있는 경우가 많습니다.

{% code overflow="wrap" %}

```sql
<div class="shell-loader" data-a-target="shell-loader"><div class="shell-loader__spinner"></div></div></div><script>window.__twilightApproximatedFirstPaint=performance.now()</script><script src="https://static.twitchcdn.net/config/settings.d471b57bfebbc43f1d6fbb2cbffda3dd.js" crossorigin="anonymous"></script>
```

{% endcode %}

소스코드들을 확인하며 해당 웹앱이 어떤 기술을 사용하는지, SPA인지 MPA인지 등에 관련한 정보를 수집합니다.

### 3. 기술 스택 확인 <a href="#bkmrk-ea-b8-b0-ec-88-a0-ec-8a-a4-ed-83-9d-ed-99-95-ec-9d-b8" id="bkmrk-ea-b8-b0-ec-88-a0-ec-8a-a4-ed-83-9d-ed-99-95-ec-9d-b8"></a>

웹 서버 및 애플리케이션 이름, 버전 정보 등은 버프스위트를 통해 알아봅니다. 대부분의 경우 HTTP 응답 헤더에 웹서버/웹애플리케이션 프레임워크의 이름 및 버전 정보를 가지고 있는 경우가 많습니다.

<figure><img src="https://guides.redraccoon.kr/uploads/images/gallery/2025-01/scaled-1680-/puI19rEasX3unnmv-image-1735975912315.png" alt=""><figcaption></figcaption></figure>

기술 스택의 경우 burp suite - 크로미움 - wappalyzer 플러그인을 브라우저에 등록한 뒤 사용합니다. 버프스위트의 크로미윰 브라우저에 설치해도 되고, 아예 칼리 리눅스 호스트의 파이어폭스에 설치해도 됩니다.

<figure><img src="https://guides.redraccoon.kr/uploads/images/gallery/2025-01/scaled-1680-/5umDKR1OcCeChHh3-image-1735975943517.png" alt=""><figcaption></figcaption></figure>

예를 들어 포트 8081을 방문 한 뒤 wappalzyer를 통해 기술 스택을 확인 해보면 워드프레스, PHP, MySQL 등을 사용하고 있는 것을 알 수 있습니다. 이중에는 버전 정보도 있기 때문에 `searchsploit`를 통해 더 자세한 공개 취약점 및 익스플로잇을 검색합니다.

<figure><img src="https://guides.redraccoon.kr/uploads/images/gallery/2025-01/scaled-1680-/NiSmHYVgKNmnXjcZ-image-1735975957626.png" alt=""><figcaption></figcaption></figure>

### 4. robots.txt 확인 <a href="#bkmrk-robots.txt-ed-99-95-ec-9d-b8" id="bkmrk-robots.txt-ed-99-95-ec-9d-b8"></a>

원래 개발자 입장에서는 해당 파일이나 디렉토리를 (크롤링)검색하지 말라는 메시지를 담은 txt 파일인데 해커의 입장에서는 중요한 공격 대상으로 여겨지기도 한다.

웹 서버 및 애플리케이션의 `https://<ip/dns>:<port>/robots.txt` URL을 방문했을 때 robots.txt 를 적용한 서버/애플리케이션이라면 다음과 같은 응답이 반환됩니다.

위에서 언급된 것처럼 robots.txt가 있다고 해서 무작정 취약점이 존재한다라고 진단해서는 안됩니다. 단, SEO와는 관련 없는 내부망 및 사내망에서 robots.txt에 숨겨진 디렉토리를 발견할 수 있는 경우 이를 취약점으로 간주하기도 합니다.

```sql
└─# curl http://172.31.188.187:8081/robots.txt

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
```

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FmApXftweXje8s43fHB9H%2Fimage.png?alt=media&amp;token=1e856bf4-ff0b-4f12-a8a2-cbe492043a49" alt=""><figcaption></figcaption></figure>

### 연습 문제 <a href="#bkmrk-ec-97-b0-ec-8a-b5-eb-ac-b8-ec-a0-9c" id="bkmrk-ec-97-b0-ec-8a-b5-eb-ac-b8-ec-a0-9c"></a>

* 현재 `mod3ex` 머신에서 실행중인 모든 웹 서버 및 웹 애플리케이션을 확인하세요.
* 모든 웹 서버 및 웹 앱들의 소스코드를 확인하고 Wappalyzer를 이용해 기술 스택을 확인하세요. 이를 문서화 해 저장해놓으세요.
* 모든 웹 서버 및 웹 앱들의 `robots.txt`를 확인하세요. 어떤 웹 앱이 `robots.txt`를 가지고 있는지, 그리고 파일안에는 어떤 디렉토리들을 가지고 있는지 확인하세요.
