본문 바로가기

모의해킹 공부/모의해킹 스터디

[0406 Day02] HTTP 로그인& Cookie & Session

HTTP(Hyper Text Transfer Protocol)

HTTP의 특징

  • 클라이언트 - 서버(Client - Server) 구조
  • 비연결성(Connectionless)
  • 무상태성(Stateless)

Client - Server 구조

클라이언트는 서버에게 요청(Request)을 보내고

서버는 클라이언트의 요청에 대한 결과를 응답(Response)한다

 

비연결성(Connectionless)

클라이언트는 서버에게 요청을 한 후 응답을 받으면 연결을 종료하는 것

-> 불필요한 연결을 하지 않아 서버 유지 자원을 효율적으로 사용할 수 있다

 

무상태성(Stateless)

비연결성을 통해 서버가 클라이언트의 상태를 저장하지 않는 것!!

HTTP

 

다수의 클라이언트가 서버에게 요청을 하는데 HTTP는 비연결성과 무상태성으로 로그인 기능을 지원하지 않아 문제 발생!! 

이 것을 해결하기 위해 쿠키(Cookie)와 세션(Session)을 이용한다!! 

 


쿠키(Cookie)

: 클라이언트가 웹 서버에게 보내는 작은 데이터이며, 클라이언트 측에 저장한다

-> 클라이언트 측에서 오는 정보(클라이언트 측에서 오는 정보는 불신!! --> 공격자가 변조할 가능성이 높다!!!) 

 

쿠키 동작

  1.  클라이언트가 웹 서버에게 요청
  2. 서버는 DB에서 클라이언트 정보를 확인
  3. DB에 클라이언트 정보가 있을 경우 서버는 클라이언트에게 Set-Cookie 헤더와 요청에 대한 응답
  4. 클라이언트는 쿠키를 저장하고 서버에게 요청 시 쿠키와 함께 요청

※ Set-Cookie : 웹서버가 Set-Cookie 헤더[포스트잇] 전달 클라이언트는 앞으로 Set-Cookie에 쿠키값을 붙여서 요청

 

Cookie

로그인 방법

처음 클라이언트는 아이디와 비밀번호를 통해 서버에게 인증을 하고

서버는 클라이언트에게 Set-Cookie 헤더에 쿠키값을 담아서 보내준다

클라이언트는 쿠키값을 저장하고 쿠키값을 통해서 인증받는다 

 

 

문제점

쿠키는 클라이언트에 저장하기 때문에 클라이언트가 쿠키 값을 변조할 수 있다 --> 쿠키변조 !!

쿠키 값을 바꿔서 다른 클라이언트 계정, 서버 관리자 계정으로 로그인하는 문제가 생긴다!!


세션(Session)

: 웹서버가 클라이언트의 저장되는 정보, 저장하는 방법

클라이언트를 식별하기 위해 서버는 쿠키에게 세션 ID를 쿠키에 담아서 보내준다

세션 ID는 유추가 가능하면 안 되기 때문에 알파벳과 숫자를 랜덤으로 설정한다

 

세션 동작

  1. 클라이언트가 웹 서버에게 요청
  2. 서버는 DB에서 클라이언트 정보 확인
  3. DB에 클라이언트 정보가 있을 경우 서버에 Session을 저장
  4. 서버는 클라이언트에게 요청에 대한 응답과 쿠키 안에 세션 ID를 담아서 응답
  5. 클라이언트는 서버에 요청 시 세션 ID와 함께 요청

Session

로그인 방법

처음 클라이언트는 아이디와 비밀번호를 통해 서버에게 인증을 하고

서버는 세션(클라이언트 정보)을 저장한다 그리고 서버는 세션 ID를 쿠키에 담아서 클라이언트에게 전달한다

클라이언트는 세션 ID를 통해서 인증을 한다   


Burp Suite 

  • 침투 테스트 및 취약점 찾는 프로그램
  • 가장 많이 사용되는 웹 취약성 스캐너
  •  Proxy 서버를 만들어 패킷을 분석, 조작을 도와주는 프로그램

Proxy

: Proxy란 '대리', '대신'이라는 뜻이며, 클라이언트와 서버 사이에 들어가 응답과 요청을 대한다

Proxy


Burp Suite 다운로드 사이트 :  https://portswigger.net/burp/communitydownload

 

Download Burp Suite Community Edition - PortSwigger

Burp Suite Community Edition is PortSwigger's essential manual toolkit for learning about web security testing. Free download.

portswigger.net

<한글이 깨질 경우 확인!!>

  1.  Setting -> User interface -> Inspector and message editor -> Character sets : 웹사이트에 따라 character set 설정
  2.  Setting -> User interface -> Inspector and message editor -> HTTP message dispay : 한글이 있는 폰트 설정

 

<실습>

  • Intercept :  패킷을 중간에 가져와서 패킷을 분석하고 패킷 내용을 조작할 수 있다
  • History : Proxy를 통과한 모든 요청과 응답을 기록해서 모든 요청 및 응답을 확인할 수 있다
  • Repeater : History에서 보낸 요청을 조작하여 다시 요청할 수 있다 
  • Intruder : 패킷 안에 사용자가 지정한 데이터를 자동화된 공격을 할 수 있다

Burp Suite 실습할 사이트

 

01. Intercept

01-1) Proxy -> Intercept 들어가서 Interceop is off를 클릭해서 Intercept ON!!

01-2) Burp Suite Browser를 통해서 1_intercept 들어가서 Burp Suite에서 패킷 확인

01-3) 패킷에 data= 부분을 data=normaltci으로 수정해서 전송

 

02. History

02-1) Prox-> HTTP history를 들어가서 Clean History를 한 후 2_History 들어간 후 History 확인

02-2) 들어온 파일 들확인

02-3) whfkoikvce.js파일 수상 Secret Data : segfault{GOOOOOOD~!} 확인

02-4) 비밀코드 입력 후 확인

 

03. Repeater

03-1) History에서 파일을 선택한 후 Repeater로 이동(windows : ctrl + r , MAC : command + r) 

03-2) data=data+%3A+1이라는 수상한 데이터가 있다. Burp Suite에 지원하는 Decoder 사용하기!

03-3) Decoder에서 data 부분 붙여넣고 디코더 종류를 URL 선택한다 data : 1 을 확인 할 수 있다

03-4) 다시 리피터로 돌아와서 data=data+%3A+1에서 data=data+%3A+50까지 입력해서 확인

04. Intruder 

04-1) History에서 파일을 선택한 후 Intruder로 이동(windows : ctrl + i , MAC : command + i)

04-2) 오른쪽에 있는 Clear 버튼로 자동으로 선택된것을 초기화

04-3) 리피터와 비슷하게 data=data+%3A+14이라는 수상한 데이터가 있다 

04-4) 뒤에 숫자 14만 드래그해서 Add 버튼으로 선택

04-5) Payload로 들어가서 payload 타입을 Numbers로 선택(우리가 찾아야하는 데이터가 1~100이기 때문에)

04-6) Start Attack!!~~ 결과가 다 나올 때까지 기다린다

04-7) 결과 중 길이가 다른 것을 찾아서 데이터 값을 찾는다(길이가 다른 이유는 데이터 맞출 경우와 틀릴경우 데이터가 다르기 때문에 길이가 다른것 을 찾는다)

 

 

[아이콘 저작권]

디지털 아이콘 제작자: Muhammad_Usman - Flaticon

Ui 아이콘 제작자: Ilham Fitrotul Hayat - Flaticon

지원 아이콘 제작자: Freepik - Flaticon

스마트 폰 아이콘 제작자: Freepik - Flaticon

섬기는 사람 아이콘 제작자: Those Icons - Flaticon

'모의해킹 공부 > 모의해킹 스터디' 카테고리의 다른 글

[0504 Day06] XSS(Cross Site Scripting)-01  (0) 2023.05.05
[0427 Day05] SQL Injection-03  (1) 2023.04.28
[0420 Day04] SQL Injection-02  (0) 2023.04.21
[0413 Day03] SQL Injection -01  (0) 2023.04.14
[0330 Day01]WEB!  (0) 2023.03.31