> 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.md).

# HTTP 취약점 진단

## 1. HTTP 취약점 진단 순서

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FNo5dwJzJwNomMeacH7XZ%2Fimage.png?alt=media&amp;token=f33b9f5b-261e-4b39-8025-016562f1675b" alt=""><figcaption></figcaption></figure>

* 디렉토리 브루트포싱 : ../디렉토리명 , 숨겨진 디렉토리, 공격자가 방문하면 안되는 디렉토리, 파일 등

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FaWqbcqThtxYMHz9R0YLc%2Fimage.png?alt=media&amp;token=0b7ea1d4-c657-4c12-b9db-65474160c65a" alt=""><figcaption></figcaption></figure>

* Source : 내가 현재 공격자로서 어떠한 종류의 데이터, 어떠한 형식 데이터 입력값을 상대방 어플리케이션, 서버에 내가 줄 수 있는가? 어떠한 입력값을 컨트롤 하는가?
* Sink : 내가 전달한 입력값은 어떤 곳에서 사용할까? 어떻게 악용할 수 있을까?

## 2. Burp suite 프로그램 실행

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FpicY19JIxatzziSyW26J%2Fimage.png?alt=media&amp;token=f61df93e-76e5-4b32-97c5-9bbcc9ebc456" alt=""><figcaption></figcaption></figure>

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FWXk5OfNv28y7cUxsuInp%2Fimage.png?alt=media&amp;token=aba2f8df-46b8-4554-aed7-6c01c9af58fd" alt=""><figcaption></figcaption></figure>

<figure><img src="https://287627346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ysBTUxkIeOC7SqTEZ2L%2Fuploads%2FLq9KRtvcrIZxzYxtEJLV%2Fimage.png?alt=media&amp;token=bbbd60a0-ee05-41a9-a2b9-c405463ef2a8" alt=""><figcaption></figcaption></figure>

```
주소창 : [ip] 입력
intercept is on 클릭
오른쪽 마우스 클릭 Do intercept -> Response to the request
Forword 클릭
- 돌아오는 HTTP 응답을 자세하게 볼 수 있음.
- 웹 보안을 할 때는 Burp suite를 더 자주 사용한다.
```

## HTTP/웹 취약점 진단 <a href="#bkmrk-page-title" id="bkmrk-page-title"></a>

HTTP(Hypertext Transfer Protocol)은 웹에서 데이터를 전송하기 위한 기본적인 프로토콜입니다. 클라이언트와 서버 간 데이터 및 웹 컨텐츠 교류를 위해 만들어졌으며, 사실상 월드 와이드 웹(World Wide Web)과 더 나아가 인터넷을 구축하는데 있어 가장 많이 사용되는 프로토콜입니다.

HTTP는 다양한 기술들로 이뤄져 있습니다. 아직 자세히 알 필요는 없지만, 아래의 키워드들을 바탕으로 웹과 관련된 기본 지식을 공부하시기 바랍니다.

* 웹 서버: HTTP를 통해 클라이언트의 요청을 받아 정적 콘텐츠(HTML 파일, CSS, 이미지, 웹 페이지 등)를 제공하는 소프트웨어 또는 하드웨어를 일컫습니다. 아파치(Apache), Nginx, IIS 등이 많이 사용됩니다.
* 웹 애플리케이션 서버(Web Application Server): (대부분) 웹 서버로부터 들어온 요청을 받아 서버에서 실행 중인 프로그램/애플리케이션을 실행한 뒤 동적으로 만들어진 컨텐츠를 제공하는 서버. 아파치 톰캣(Apache Tomcat), JBOSS, Web Sphere 등이 많이 사용됩니다.
* 웹 애플리케이션 (Web Application, Webapp): 웹 브라우저를 통해 접근해서 사용할 수 있는 프로그램이며, 대부분 웹 애플리케이션 서버에서 실행 중인 애플리케이션을 일컫습니다. 지메일(Gmail), 넷플릭스, 구글 독스(Google Docs), 마이크로소프트 오피스 365 등
* 웹 프레임워크: 웹 애플리케이션의 개발을 도와주기 위해 만들어진 라이브러리와 도구 모음입니다. Django, Express, Laravel 등이 있습니다.

또한, HTTP는 다른 네트워크 서비스들과는 다르게 아주 많은 종류의 웹 애플리케이션들을 가지고 있습니다. FTP나 SMB 등의 네트워크 서비스들은 이름이나 버전은 달라도 정해진 기능을 제공하는 경우가 많습니다. 하지만 HTTP는 강의 신청을 하는 학교 홈페이지부터, 영상을 보는 유튜브나 넷플릭스, 부동산 정보를 보여주는 네이버 부동산, 선박 항공 GPS를 보여주는 위치정보시스템 등, 셀 수 없이 다양한 종류의 애플리케이션들을 가지고 있습니다.

다양한 기술들로 만들어진 많은 종류의 웹 애플리케이션들이 있기 때문에 웹 취약점의 종류들은 정해져 있지 않습니다. 대상이 어떤 종류의 웹 애플리케이션을 실행하냐에 따라 찾아낼 수 있는 취약점들의 종류는 천차만별입니다.

### SPA vs. MPA <a href="#bkmrk-spa-vs.-mpa" id="bkmrk-spa-vs.-mpa"></a>

웹 애플리케이션들은 SPA(Single Page Application)과 MPA(Multi-Page Application) 두 종류로 나뉩니다.

#### SPA (Single Page Application) <a href="#bkmrk-spa-28single-page-app" id="bkmrk-spa-28single-page-app"></a>

하나의 웹 페이지로 구성되어 있으며, 사용자와의 상호작용에 따라 필요한 부분만 동적으로 업데이트됩니다. 페이지 전체를 새로고침하지 않고, 필요한 데이터만 서버로부터 가져와서 현재 페이지를 갱신하는 방식을 사용합니다.

넷플릭스를 생각 해보면 됩니다. 넷플릭스의 경우 하나의 페이지에서 대부분의 기능들을 사용할 수 있으며, 페이지 전체가 새로고침 되거나 새로운 페이지로 브라우저가 넘어가는 경우가 거의 없습니다. 혹은 네이버 지와 같은 지도 웹 앱을 떠올려봐도 됩니다.

#### MPA (Multi-Page Application) <a href="#bkmrk-mpa-28multi-page-appl" id="bkmrk-mpa-28multi-page-appl"></a>

여러 개의 웹 페이지로 구성된 전통적인 형태의 웹 애플리케이션입니다. 유저가 새로운 페이지로 이동할 때마다 서버로부터 새로운 페이지를 불러와 제공합니다.

대부분의 쇼핑몰 웹사이트, 게시판 형태의 웹사이트, 네이버 카페 등을 생각 해보면 됩니다.

***

예전에는 MPA 형식의 웹 애플리케이션들이 대부분이었지만, 요즘에는 자바스크립트 프레임워크들을 기반으로 개발된 SPA 형식의 웹 애플리케이션들이 많이 사용되고 있습니다. BHPT에서는 초보자분들을 위해 조금 더 쉽고 전통적인 방식인 MPA 형식의 웹 앱들과 관련된 취약점을 위주로 다룹니다. 그렇다고 해서 이런 취약점들이 SPA 형식의 웹 앱에서 발견이 안되는 것은 아닙니다.

최신 웹/모바일 해킹의 동향에 대해 알아보려면 SPA 기반의 웹 앱, API, 웹 소켓, gRPC, 등과 관련된 취약점 및 공격 기법들에 대해서 추가로 더 공부하는 것을 추천드립니다.

### 취약점 종류 <a href="#bkmrk-ec-b7-a8-ec-95-bd-ec-a0-90-ec-a2-85-eb-a5-98" id="bkmrk-ec-b7-a8-ec-95-bd-ec-a0-90-ec-a2-85-eb-a5-98"></a>

IT에서 개발자라고 한다면 거의 대부분의 경우 프론트엔드/백엔드로 이뤄져 있는 개발을 떠올리는 것처럼, 웹 프로그래밍은 IT에서 가장 많이 사용되고 있습니다. 그 때문에 웹은 다른 네트워크 서비스들과 비교해서 취약점의 종류가 훨씬 더 많습니다. 모의해킹의 경우에도 "웹 해킹" 이라는 분야가 따로 존재할 정도로 웹과 관련된 취약점들의 숫자는 많습니다.

흔한 웹 취약점들은 다음과 같습니다:

* 인젝션 - SQL, NoSQL, LDAP, OS, ORM, 등
* LFI (Loal file Inclusion)
* CSRF (Client-Side Request Forgery)
* SSRF (Server-Side Request Forgery)
* XXE (XML External Entity)
* IDOR (Insecure Direct Object References)
* 잘못된 설정
* 기본 비밀번호
* 특정 웹 서버나 웹 애플리케이션과 관련된 공개 취약점 (Common Vulnerabilities and Exposures - CVE)

BHPT에서는 모든 웹 해킹과 관련된 취약점을 커버하지는 않지만, 실제로 호스트 기반 모의해킹을 진행하며 가장 많이 마주치고 공격하는 웹 취약점들에 대해서 알아봅니다.

&#x20;

> "웹 해킹" 강의들에서 다루는 웹 취약점들(ex. SQL 인젝션)과 2023년 기준 실무를 진행하며 마주치는 웹 취약점들은 매우 다른 양상을 띕니다. 따라서 BHPT에서는 실무 외부망/내부망/레드팀 프로젝트들을 현업에서 진행하며 실제로 마주치고 공격 가능한 웹 기반 취약점들을 위주로 배웁니다.
