실습 전 간단하게 HTTP패킷에 대한 이해가 필요합니다.

HTTP패킷의 종류는 요청과 응답 패킷이 있습니다.

이 패킷은 다시 Header와 Body부분으로 나눠집니다.

 

헤더부분에는 해당 패킷에 대한 메타데이터 즉, 패킷에 대한 설명정보가 포함되어 있습니다.

Body부분에는 파라미터, 응답 페이지 등에 대한 실제 정보들이 삽입되어 있습니다.

 

아래는 요청, 응답패킷의 주요헤더 정보입니다.

 

 

1) 요청헤더

① GET /test/test.htm HTTP /1.1

  - 요청 method 와 요청 파일정보, http 버전

  - HTTP 프로토콜은 클라이언트가 서버에게 요청하는 방식에 대한 몇 가지 동작을 정의

    즉, 요청 method 란 클라이언트가 서버로의 요청하는 방법을 명시

GET

지정된 리소스(URI)를 요청

POST

서버가 클라이언트의 폼 입력 필드 데이터의 수락을 요청
클라이언트는 서버로 HTTP Body 에 Data 를 전송

HEAD

문서의 헤더 정보만 요청
응답데이터(body) 를 받지 않음

PUT

클라이언트가 전송한 데이터를 지정한 URI로 대체
ftp 의 put 와 동일.
클라이언트는 서버로 HTTP Body 에 Data 를 전송

DELETE

클라이언트가 지정한 URI 를 서버에서 삭제

TRACE

클라이언트가 요청한 자원에 도달하기 까지의 경로를 기록하는
루프백(loop back) 검사용.
클라이언트가 요청 자원에 도달하기 까지 거쳐가는 프록시나

게이트웨이의 중간 경로부터 최종 수진 서버까지의 경로를 알아낼 때 사용

 

② Accept

  - 클라이언트가 허용할 수 있는 파일 형식(MIME TYPE) 
    */* 은 특정 유형이 아닌 모든 파일형식을 지원

 

③ User-Agent

  - 클라이언트 소프트웨어(브라우저,os등) 의 이름과 버전 등


④ Host 

  - 요청을 한 서버의 Host

 

⑤ If-Modified-Since

  - 페이지가 수정되었으면 최신 버전 페이지 요청을 위한 필드
만일 요청한 파일이 이 필드에 지정된 시간 이후로 변경되지 않았다면, 서버로부터 데이터를 전송 받지 않습니다. 단, 이 경우 서버로부터 net modified (304) 상태코드를 전송 받습니다.

 

 

 

2) 응답헤더

① HTTP /1.1 200 OK

  - HTTP 버전과 응답 코드 (200 성공)

 

② Server

  - 웹 서버 정보

 

③ Date

  - 현재 날짜 정보

 

④ Content-Type

  - 요청한 파일의 MIME 타입
Text/html 은 text 중 html 파일임을 나타냄

 

⑤ Last-Modified

  - 요청한 파일의 최종 수정일

 

⑥ Content-Length

  - 요청에 대한 응답 데이터의 길이(바이트 단위)

 

⑦ ETag

  - 캐쉬 업데이트 정보를 위한 임의의 식별 숫자


첫 번째 취약점인 Http Basic입니다.

웹 서버와 브라우저간의 데이터 전송을 이해하는 간단한 실습이 되겠습니다.

1) 정상적인 단어를 입력 합니다.

 

2) 프록시 툴을 이용하여 요청패킷을 캡쳐 및 분석합니다.

POST방식의 요청으로 Person이라는 파라미터에 포함되어 전송되는 것을 볼 수 있습니다.

 

3) 실제 자바코드를 살펴본 결과 reverse()라는 함수를 사용하고 있었습니다.

이 함수는 문자열을 역순으로 바꾸는 함수입니다.

 

4) 결과적으로 문자열이 거꾸로 출력되는 것을 확인할 수 있고, 해당 Lesson이 종료됩니다.

다른 카테고리의 글 목록

Web Security/War_Game 카테고리의 포스트를 톺아봅니다