모의해킹 2주차 과제 - 웹 해킹
Tools: Browser DevTools Tools: Browser DevTools
Tools: Browser DevTools
개발자 도구
개발자 도구 구성------------
요소 도구 : 특정 요소의 개괄적인 정보를 파악하고, 이와 관련된 코드를 쉽게 찾을 수 있다.
디바이스 툴바 : 현재 브라우저의 화면 비율 및 User-Agent를 원하는 값으로 변경할 수 있다.
Elements : 현재 페이지를 구성하는 HTML의 코드를 읽을 수 있다.
콘솔(Console) : 프론트엔드의 자바스크립트 코드에서 발생한 각종 메세지를 출력하고, 이용자가 입력한 자바스크립트 코드를 실행도 해주는 도구이다. 브라우저에서 자바스크립트를 실행하고 결과를 확인할 수 있다.
Sources : 현재 페이지를 구성하는 웹 리소스들을 확인할 수 있다. 디버깅 가능
Network : 서버와 오가는 데이터를 확인할 수 있다.
Application : 쿠키, 캐시, 이미지, 폰트, 스타일시트 등 웹 애플리케이션과 관련된 리소스를 조회할 수 있다.
Console Drawer : 개발자 도구에 새로운 콘솔창을 열어 가시성과 효율성을 높일 수 있다.
기타 브라우저 기능
페이지 소스 보기 : 페이지와 관련된 소스 코드들을 모두 확인할 수 있다.
Secret browsing mode : 새로운 브라우저 세션이 생성되며, 브라우저를 종료했을 때 방문 기록, 쿠키 및 사이트 데이터, 양식에 입력한 정보, 웹사이트에 부여된 권한이 저장되지 않는다. 또한 쿠키를 공유하지 않는다.
Background: Cookie & Session
쿠키 : Connectionless, Stateless 특성을 갖는 HTTP에서 상태를 유지하기 위해 탄생했다. 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송한다.
- 용도 : 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용
쿠키가 없는 통신 vs 쿠키가 있는 통신 : 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 포함하고, 서버는 해당 쿠키를 통해 클라이언트를 식별한다.
쿠키 변조 : 클라이언트의 브라우저에 저장되고 요청에 포함되는 정보이기 때문에 그림처럼 악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있다.
세션 : 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 사용한다. 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)를 만들어 클라이언트에 전달하는 방식이다. 해당 키를 일반적으로 Session ID라고 한다.
세션 하이재킹 : 공격자가 이용자의 쿠키를 훔칠 수 있으면 세션에 해당하는 이용자의 인증 상태를 훔치는 것
Mitigation: Same Origin Policy
동일 출처 정책 (Same Origin Policy, SOP) : 브라우저의 보안 메커니즘.
- 이용자가 웹 서비스에 접속할 때, 브라우저는 해당 웹 서비스에서 사용하는 인증 정보인 쿠키를 HTTP 요청에 포함시켜 전달 -> 악의적인 페이지가 클라이언트의 권한을 이용해 대상 사이트에 HTTP 요청을 보내고, HTTP 응답 정보를 획득 하는 코드를 실행, 클라이언트 입장에서는 가져온 데이터를 악의적인 페이지에서 읽을 수 없도록 해야 한다.
Cross Origin Resource Sharing (CORS) : 교차 출처 리소스 공유는 HTTP 헤더에 기반하여 Cross Origin 간에 리소스를 공유하는 방법이다.
ClientSide: XSS
Cross Site Scripting (XSS) : 클라이언트 사이드 취약점 중 하나로, 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있다.
XSS 종류
-Stored XSS : XSS에 사용되는 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS
- Reflected XSS : XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS
- DOM-based XSS : XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS
- Universal XSS : 클라이언트의 브라우저 혹은 브라우저의 플러그인에서 발생하는 취약점으로 SOP 정책을 우회하는 XSS
Stored XSS : 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생하는 XSS
Reflected XSS : 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생한다. Stored XSS와는 다르게 URL과 같은 이용자의 요청에 의해 발생한다.