아임노드

Web Hacking > Cookie & Session 본문

[SK shieldus Rookies 23기] 공부 노트/Dreamhack 공부 기록

Web Hacking > Cookie & Session

Noody 2024. 12. 24.

 

Background: Cookie & Session  中

  • 클라이언트의 인증 정보를 포함하고 있는 CookieSession
  • HTTP 프로토콜 특징
    • Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것
    • Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것-> 이러한 특성 때문에 HTTP 상태를 유지하기 위한 쿠키(Cookie) 탄생
  • 쿠키는 Key와 Value로 이뤄진 일종의 단위로,
    • 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송한다.
    • 서버는 클라이언트의 요청에 포함된 쿠키를 확인해 클라이언트를 구분할 수 있다.
    • 쿠키는 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용

 

  • 쿠키 변조
    • 악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있다.
    • 만약 서버가 별다른 검증 없이 쿠키를 통해 이용자의 인증 정보를 식별한다면 공격자가 타 이용자를 사칭해 정보를 탈취할 수 있다.
  • 세션(Session)
    • 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션(Session)을 사용
    • 세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)를 만들어 클라이언트에 전달하는 방식으로 작동합니다. 해당 키를 일반적으로 Session ID라고 한다.
  • 쿠키 설정
    • 서버 : HTTP 응답 중 헤더에 쿠기 설정 헤더(Set-Cookie)를 추가하면 클라이언트의 브라우저가 쿠키를 설정한다.
      • HTTP/1.1 200 OK
        Server: Apache/2.4.29 (Ubuntu)
        Set-Cookie: name=test;
        Set-Cookie: age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;
        ...
    • 클라이언트 : 자바스크립트를 사용해 쿠키를 설정한다.
      • (쿠키 옵션(HttpOnly)에 따라 자바스크립트에서 쿠키 확인이 불가능할 수 있다.)
      • document.cookie = "name=test;"
        document.cookie = "age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;"
    • 세션 하이재킹 (Session Hijacking)
      • 타 이용자의 쿠키를 훔쳐 인증 정보를 획득하는 공격

 

Mitigation: Same Origin Policy   中

  • Same Origin Policy (SOP)
    • 이용자가 웹 서비스에 접속할 때, 브라우저는 해당 웹 서비스에서 사용하는 인증 정보인 쿠키를 HTTP 요청에 포함시켜 전달
    • 브라우저는 웹 리소스를 통해 간접적으로 타 사이트에 접근할 때도 인증 정보인 쿠키를 함께 전송하는 특징을 가지고 있다.
    • 이 특징 때문에 악의적인 페이지가 클라이언트의 권한을 이용해 대상 사이트에 HTTP 요청을 보내고, HTTP 응답 정보를 획득 하는 코드를 실행할 수 있다.
    • 따라서, 클라이언트 입장에서는 가져온 데이터를 악의적인 페이지에서 읽을 수 없도록 해야 합니다. 이것이 바로 브라우저의 보안 메커니즘인 동일 출처 정책 (Same Origin Policy, SOP)이다.
  • Same Origin Policy의 오리진 (Origin) 구분 방법
    • 프로토콜 (Protocol, Scheme), 포트 (Port), 호스트 (Host) 로 구성됩니다. 구성 요소가 모두 일치해야 동일한 오리진이라고 한다.
  • Cross-Origin Resource Sharing (CORS) / SOP 제한 완화
    • HTTP 헤더에 기반하여 Cross Origin 간에 리소스를 공유하는 방법
    • 웹 서비스에서 동일 출처 정책인 SOP를 완화하여 다른 출처의 데이터를 처리 해야 하는 경우도 있기 때문

 

워게임 cookie 문제풀이 완료!

 

문제풀이 순서)

1. 문제 파일을 다운로드 하여 .py 소스코드 확인 

2. guest 계정 정보 확인하여 생성한 서버에 로그인

3. [검사 - applicaion]을 통해 cookie 확인

4. username의 guest를 admin으로 변경 후 페이지 새로고침

5. flag 확인


 

워게임 session-basic 문제풀이 완료

 

문제풀이 순서)

 1. 소스코드 확인하여 User,guest 한번씩 로그인하기

 2. 소스코드 취약점 확인

-> /admin으로 접속 후 바로 session_storage로 접근하도록 되어 있음 (불필요한 주석처리)

 

3. http:// 주소 마지막에 '/admin'을 붙여서 접속

4. 각 계정의 sessionid 정보 확인

5. [검사-application]에서 확인한 sessionid 붙여넣기 (여기서 username은 admin)

6. 페이지 새로고침 후 flag 획득