728x90
반응형
Definition | 정의 - 클라이언트단, 서버단
클라이언트단 | 서버단 |
|
웹서버 / 웹애플리케이션 서버
|
더보기
[ 해킹 관점에서 ]
모든 입력값과 행위에 대해서 취약점이 발생할 수 있음
즉, 브라우저, 웹서버, 데이터베이스에서 정보를 주고받고, 처리하는 과정 모두 취약점으로 볼 수 있음
웹 요청 & 응답
[ Request ] 클라이언트 → 서버
[Request]
POST /info HTTP/1.1
Host: x.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 150
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Referer: https://x.com/
Cookie: session=anotherSessionValue
parameter = value
메서드 (방법) : 어떤 방식으로 데이터를 전달할 것인지
- POST : HTTP body를 통해 파라미터를 담아 요청
- GET : URL 쿼리를 통해 파라미터를 담아 요청
- PUT : 서버의 리소스를 생성하거나 수정
- DELETE : 서버의 리소스를 삭제
- PATCH : 서버의 리소스를 일부 수정
- HEAD : Response에 Content 없이 헤더 부분만 요청
- OPTIONS : 서버에서 지원하는 메서드 종류 열거
path : 서버 내의 리소스의 위치를 지정하는 경로 ex) \info
ex) https://x@www.kr:port/path.html?para1=value1¶2=value2#hash
- Protocol : 서버에 접근하기 위해 사용되는 프로토콜
- Host : 서버의 도메인 이름이나 IP주소, 접속을 위한 id:pw, 도메인명/IP와 포트 등으로 표현
- Path : 서버 내의 리소스의 위치를 지정하는 경로
- Query String : 파라미터를 전달에 사용
더보기
[ 해킹 관점에서 ]
Host : id:pw의 경우, 지원하고 있기 때문에 다양한 우회기법에서 사용됨
Path : 웹 서버 및 로드 밸런서가 경로를 해석하는 방식의 차이를 이용한 우회기법 등이 존재함
HTTP Version
- HTTP /1.0 : 하나의 연결에 하나의 요청과 응답만 처리가 가능
- HTTP /1.1 : 여러개의 요청과 응답을 하나의 TCP 연결에서 처리 가능함, Keep-Alive연결을 통해 연결 재사용 및 캐시 등 기능 도입
- HTTP /2 : 요청과 응답을 작은 프레임 단위로 분할하여 전송
- HTTP /3 : QUIC 프로토콜을 기반으로 UDP를 사용하여 지연시간 낮춤
Request Header
- Host : 요청하는 호스트 (도메인 / IP) 이름
- Content-type : 요청하는 POST Body의 데이터 형식을 지정 - param=value(url)형식 / json / xml
- Content-length : 요청하는 POST Body 데이터의 길이
- User-Agent : 요청하는 클라이언트의 정보 (브라우저 버전 등)
- Referer : 요청 패킷의 출처
- Cookie : 사용자 세션 정보 등 - 유지하는 정보
Cookie vs Session
Cookie : 어떠한 정보를 브라우저에 저장함 - 매 요청마다 전송
Session : 어떠한 정보를 서버에 저장하며 서버에서 관리 - 메모리, 파일, 데이터베이스 등에 저장
GET
- 요청 데이터에 대한 인수를 URL을 통해 전송
- 데이터의 최대 크기 4KB
- 접근 자유도 부여
- 게시판의 목록, 글 보기 화면
POST
- URL에 요청 데이터를 기록하지 않고, 소켓을 이용해 데이터 전송
- 다른 이가 링크를 통해 해당 페이지를 볼 수 없음
- 웹 브라우저의 <뒤로> 버튼 클릭 시, POST 버퍼 부분이 사라져 '새로고침' 경고 문구가 뜬다.
- 파일 업로드 가능
- 보안 면에서 중요함
- 전송 데이터의 크기 제한 없음
- 글 저장 / 수정 / 삭제
[ Response ] 서버 → 클라이언트
[Response]
HTTP/1.1 200 OK
Server: Apache
Content-Type: application/json; charset=UTF-8
Set-Cookie: session=newsessionvalue; expires=Tue, 25 Jul 2023 13:18:29 GMT; path=/; domain=.b.com
Content-Length: 120
{
"message": "Resource created successfully!",
"status": "success"
}
Status code : 요청에 대한 응답 상태 코드 ex) 200
- 200 OK : 정상 응답
- 301 Moved Parmanently : 리소스가 다른곳으로 영구적으로 이동됨
- 302 Redirect : 리소스가 일시적으로 다른 위치로 이동됨
- 400 Bad Request : 요청이 잘못되었거나 서버가 이해할 수 없는 요청
- 401 Unauthorized : 자격증명이 없어 인가되지 않은 요청
- 403 Forbidden : 권한이 없어 인가되지 않은 요청
- 404 Not Found : 없는 페이지
- 500 Internal Sever Error : 서버 내부 오류
300번대 : 사용자가 웹 인증 성공 후에 안전한 페이지로 전달 될 때
400번대 : 클라이언트 측 에러, 클라이언트 요청을 처리할 수 없는 경우
500 번대 : 서버 측 에러
더보기
[ 해킹 관점에서 ]
500 에러를 내는 것이 중요 목표임
중간에 취약한 부분을 찾아서 요청을 했지만, 그 응답에 대한 내용이 이루어지지 않게 하는 것
Response Header
- Sever : 서버의 정보 - 서버 정보 / 버전 등
- Content-type : 응답 데이터의 타입 (Character set - 인코딩 정보 전달 가능)
- Set - Cookie : 쿠키 / 세션 값의 정보 세팅
728x90
반응형