상태코드 항목
- 웹 서버가 클라이언트의 요청에 대해 응답 결과를 나타내는 코드 값
- 요청 성공, 실패 여부에 대해 반환
200 OK -> 정상적으로 요청 성공
201 Created -> 요청 성공 및 새로운 리소스 생성
202 Accepted -> 요청 전송 완료 후, 처리 대기
204 No Content -> 요청 성공 후, 반환할 값 없음 상태
301 Moved per... -> 새로운 URL 변경 및 이동
302 Found -> 다른 페이지 Redirect(리소스 이동)
303 See Other -> 요청 결과를 다른 페이지 확인 시 발생
304 Not Modified -> 최신 버전의 리소스를 갖고 있는 상태
307 Temporary... -> 새로운 URL로 재요청
400 Bad Request -> 잘못된 요청 형식 처리 불가
401 Unauthorized -> 요청 리소스에 대한 인증 필요
403 Forbidden -> 요청 리소스 접근 권한 없음 상태
404 Not Found -> 요청 리소스를 찾을 수 없는 상태
500 Internal... -> 요청 처리를 완료할 수 없음(서버오류)
503 Service Una.. -> 서버 과부하로 인한 요청 처리 불가
Cookie & Session
Cookie
- 웹 브라우저에 저장하는 데이터로, 세션 유지, 상태정보 저장 등에 사용된다.
- 쿠키는
key=value 형태로 사용된다.
- 쿠키 값은 클라이언트 웹 브라우저에 저장되어 사용되고 서버에 데이터 요청 시, 쿠키 값을 포함하여 서버에 전송한다.
- 사용자 웹 브라우저에 저장하기 때문에, 임의 사용자가 쿠키 값을 조작해서 서버에 데이터 요청을 전송할 수 있다.
웹 서비스 접근 흐름

쿠키 상세 설명
-
클라이언트는 서버에 요청을 전송할 때 마다 쿠키를 포함
-
전송된 쿠키는 서버에서 데이터베이스에 저장된 이용자 정보를 조회 및 식별해 결과를 반환
-
할당 받은 쿠키 값으로, 데이터 요청시 인증 정보로 사용

-
쿠키 변조를 통해, 서버에 요청 전송해 임의 이용자 정보 탈취

Session
- 서버에 인증 정보를 저장하고 세션ID를 생성해 클라이언트에 전달, 해당 정보로 로그인 상태 유지, 이용자별 정보 저장 등에 사용된다.
- 쿠키 변조에 의해, 클라이언트가 인증 정보를 변경할 수 없도록 세션을 사용한다. 세션은 서버에 저장되어 사용되고 데이터에 접근할 수 있는 랜덤한 값을 생성 후 클라이언트에 전송한다.
- 클라이언트는 웹 서비스를 사용할 때, 서버로부터 전달받은 세션 값을 이용해서 이용자 인증 및 서비스에 접근할 수 있는 권한을 받는다.
세션 상세설명
-
Client 최초 로그인 과정을 통해, 서버에서 이용자 계정에 대한 세션ID를 할당 받아 인증에 사용
-
Client는 서버에 요청(조회, 수정, 삭제)을 전송할 때마다 할당 받은 세션 ID로 인증
-
로그인 시, 서버로부터 세션을 할당 받는 과정

-
할당받은 세션을 사용하는 과정

-
세션 변조를 통해, 서버에 요청을 전송해 임의 이용자 정보 탈취할 수 없음( 단, 세션 원문을 탈취할 경우 세션 변조를 이용한 요청 전송 가능)

Session Hijacking
접근 흐름

-
공격자가 이용자의 세션 ID를 획득해, 해당 이용자 처럼 행동할 수 있다.
-
웹 서비스에 로그인한 이용자의 세션 ID를 탈취해, 공격자가 이용자 계정으로 웹 서비스의 기능을 사용할 수 있다. 이때, 이용자의 개인정보, 서비스 이용 내역 등 모든 행위 수행이 가능하다.
-
웹 서비스에서 세션 탈취는 웹 취약점 유형과 연계하여 발생시킬 수 있다.
-
클라이언트 최초 로그인 과정을 통해, 서버에서 이용자 계정에 대한 세션 ID를 할당 받아 인증에 사용
-
이용자는 할당 받은 세션정보를 사용해서, 웹 서비스 기능을 사용한다.

-
공격자는 웹 서비스의 취약점을 이용하여 이용자의 세션을 탈취해 이용자 계정을 획득 및 서비스 기능 사용 가능

IDOR(Insecure Direct Object References) 취약점
- 직접 객체 참조를 조작해서, 서버에 저장된 정보 접근 및 조작
- 해당 취약점은 공격자가 직접 객체 참조를 조작해서 발생하며, 임의 기능에서 입력 값에 댕한 검증이 미흡할 때 발생한다.
- 공격자가 객체 조작을 통해, 민감 데이터에 접근할 수 있으며, 저장된 정보를 수정, 삭제 등 행위도 수행할 수 있다.
- 발생 원인으로 크게 3가지로 구분할 수 있으며, 모두 접근 제어 및 검증 과정에서의 문제점으로 인해 취약점이 발생한다.
IDOR 취약점 설명
- IDOR은 단순 파라미터 변조 취약점이라고도 한다.

IDOR 취약점 발생 유형
1) 로그인
2) 회원가입
3) 게시글 삭제, 수정
4) 개인정보 조회, 수정
5) 계정 삭제
6) 댓글 수정, 삭제
7) 비밀번호 변경
8) 아이디, 비밀번호 찾기
9) 계좌등록
10) 비밀글 조회
직접 객체 참조
- 이용자가 웹 서비스와 상호 작용할 때, 내부 객체(데이터베이스, 파일, 폴더 등)에 직접 접근할 수 있는 것.
- 입력 파라미터를 통해 객체 식별자를 노출하고 접근하는 방식
- 접근 권한이 없더라도 권한에 대한 검증이 미흡하다면, 해당 취약점을 이용한 접근 가능
직접 객체 참조 예시
- 웹 서비스에서 이용자가 식별할 수 있는 값을 클라이언트에 노출
- 클라이언트는 식별자를 서버에 요청 전송
- 서버는 전송받은 식별자 값을 기반으로 접근 및 데이터를 제공

4) 웹 서비스에서 게시판을 이용해, 특정 파일에 접근할 수 있도록 기능이 구현된 상태
5) 특정 파일에 접근할 때, 이용자가 식별할 수 있는 값을 사용해서 접근할 수 있게 노출된 상태
6) 식별 가능한 값으로 접근할 경우 권한 검증이 없을 경우, 식별 값을 이용해 공개되지 않은 파일들에 접근 할 수 있는 취약점 발생

부적절한 접근 제어
- 이용자의 입력을 통해 참조된 객체에 대한 접근 제어 설정이 미흡한 경우, 권한 없는 사용자가 중요한 객체에 접근할 수 있다.
- 권한 검증 로직 누락 및 미구현으로 인해 발생한다.
부적절한 접근 제어 예시
- 웹 서비스에서 이용자가 자신의 정보를 조회하는 페이지 접근
- 이용자는 특정 파라미터 값으로, 이용자 정보를 조회
- 서버는 전송 받은 파라미터 값을 기반으로 접근 및 이용자 정보 제공
- 이용자 정보 조회 시, 파라미터 값을 임의 변경하여 접근할 경우 임의 이용자 정보를 조회할 수 있는 취약점 발생

예측 가능한 객체 ID
- 객체를 참조하는 ID 값이 예측할 수 있거나, 순차적으로 발급되는 경우 추측하여 접근할 수 있다.
- 특정한 값을 공격자가 추측할 수 있어 취약점이 발생한다.
- 서버에 전달하는 특정 값에 대해서 이용자 검증이 없는 경우, 정보가 탈취되는 취약점 발생
예측 가능한 객체 ID 예시
- 은행 서비스를 제공하는 웹 서비스에서, 이용자가 자신의 거래내역을 조회
- 거래내역 조회 시, 시퀀스 넘버를 이용해 내역을 임의 변조해 다른 번호로 거래 내역 조회 시도
- 서버는 전송 받은 시퀀스 넘버 값에 대해 이용자 검증 없이 처리하여, 서버에서 거래내역 제공

출처: Stealien 임필호 팀장님