[E-COPS] 정규세션 1주차 - WEB

흑흑코더·2022년 9월 12일
0

E-COPS

목록 보기
1/17

보안의 3대 요소 (CIA Triad)

  • Confidentiality (기밀성) : 특정 데이터가 허가 받지 않거나 인증되지 않은 사용자에게 노출되지 않도록 하는 것 - 식별, 인증, 권한부여, 암호화 등
  • Integrity (무결성) : 데이터가 악의적인 사용자에 의해 변하지 않도록 하는 것 (Forgery위조 뿐 만이 아닌 Repudiation 부인도 포함) - 접근제어, 메시지(데이터) 인증 등
    * Availability (가용성) : 인증받은 사용자가 시스템이나 데이터를 사용할 수 있도록 하는 것 (Dos, DDos) - 백업 솔루션 사용, 침입 탐지 시스템 운용 등

이 외에 Authentication (인증) 과 Accountability (책임추적성)이 추가되기도 함

HTTP (Hyper Text Transfar Protocol)

웹사이트를 구성하는 HTML파일을 전송하기 위해 이요하는 프로토콜
HTTP 리퀘스트(요청)와 HTTP 리스폰스(응답)을 주고받으면서 이루어짐
통신 프로토콜 : 서로 통신할 때의 규약

  • HTTP 리퀘스트의 구성
    ① 리퀘스트 라인 : 리퀘스트의 첫 번째 줄
    - 메소드 : 서버에 대한 요청을 나타냄
    GET : URI로 지정한 데이터를 가져옴
    POST : 서버에 데이터 보냄

    -URI : 메소드의 대상
    - 버전 : 클라이언트가 사용하는 HTTP 프로토콜의 버전
    ② 메시지 헤더 : 요청 라인에 이어지는 여러 줄의 텍스트
    +공백라인
    ③ 엔티티 바디 : POST 메소드로 웹브라우저에서 데이터를 보낼 때 사용
  • HTTP 리스폰스의 구성
    ① 리스폰스 라인
    -버전 : HTTP의 버전
    -상태코드 : 요청에 대한 처리결과를 세 자릿수 숫자로 나타냄
    -처리 사유 : 상태 코드의 의미를 보여주는 텍스트
    ② 메시지 헤더
    +공백라인
    ③ 엔티티 바디
  • HTTPS : TLS(Transport Layer Security)프로토콜을 도입해 HTTP의 POST 요청이 가로채질 수 있는 문제를 보안 (암호화)

  • HTTP의 특징
    ① Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료
    ② Stateless : 통신이 끝난 후 상태 정보를 저장하지 않음
    -> 상태 유지를 위해 쿠키, 세션을 이용 -쿠키에는 인증상태를 나타내는 민감한 정보가 보관되며, 브라우저 내부에 저장됨
    -HTTP 헤더에 포함되어 요청을 보냄
    -키(Key)와 값(Value)으로 이루어짐
    -정보기록, 상태 정보를 표현하기 위해 사용됨 (ex. 팝업 옵션 기억, 로그인을 통해 개인 맞춤형 서비스)

    쿠키는 클라이언트의 브라우저에 저장, 요청에 포함됨
    -> 악의적 클라이언트에 의해 변조 가능
    -> 검증 없이 쿠키를 통해 인증 정보를 식별하는 서버에서는 공격자가 타 이용자를 사칭, 정보 탈취가 가능

    세션 (Session)

    -클라이언트가 인증 정보를 변조하는 경우를 막기 위해 사용
    -인증 정보를 서버에 저장하고 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)를 만들어 클라이언트에 전달
    -일반적으로 키=Session ID
    • 쿠키와의 차이점
      ⊳ 쿠키와 달리 세션은 데이터를 서버가 저장
      ⊳ 쿠키가 데이터를 통째로 보내는 거라면, 세션은 데이터 대신 키를 보내고 서버가 그 키를 통해 저장된 데이터를 확인
      ⊳ 쿠키는 브라우저에서 만료 시간 관리 가능 / 타 이용자의 쿠키를 훔쳐 인증 정보를 획득하는 세션 하이재킹 위험

클라이언트 사이드 공격 (Client-Side Attack)

이용자를 대상으로 하는 공격
클라이언트 사이드 취약점을 통해 세션 및 쿠키 정보를 탈취하고 해당 계정으로 임의의 기능 수행 가능

XSS (Cross - Site Scripting)

  • 공격자에 의해 작성된 스크립트가 다른 사용자에게 전달 되는것

다른 사용자의 웹 브라우저 내에서 적절한 검증 없이 실행되어 발생하는 보안 취향점

저장형(Stored) XSS

  • 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS
  • 웹 앱에서 찾아내기 어렵고 한 번의 공격으로 여러 사용자 무력화 가능
    => 큰피해
  • 공격자가 악성 스크립트 코드를 응용 프로그램에 주입 -> 사용자가 게시물을 클릭 -> 악성 스크립트 실행
    (ex. 게시판 사이트의 게시물과 댓글에 악성 스크립트를 포함해 업로드)

반사형(Reflected) XSS

  • 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS
  • 단지 한 번의 요청 동안만 유효 => 비교적 피해 적음
  • 공격자가 스크립트 코드가 포함된 URL을 메일에 전송하거나 게시물로 등록 -> 사용자가 URL을 클릭 -> 악성 스크립트 코드 실행
    (ex. 검색 기능이 있는 게시판에서 검색 문자열에 악성 스크립트를 포함)

DOM Based XSS

  • DOM(Document Object Model) : 문서 객체 모델, HTML문서에 접근하기 위해 일종의 인터페이스 -> 브라우저가 이해할 수 있는 구조로 구성해 메모리에 적재한 것으로 자바스크립트를 통해 작업 가능
  • 공격자가 웹 페이지 URL에 존재하는 fragment에 악의적인 스크립트 코드를 입력 -> 사용자가 해당 URL에 접속 -> 스크립트 코드 실행

    fragment : URL의 query 뒤에 붙으며 #으로 시작

  • 사용자의 브라우저에서 DOM 객체에 접근해 새로운 요소를 수정하는 생성/수정하는 과정에서 실행됨
    ||> 반사형 XSS는 악성 스크립트가 서버에 전달되어야 하는 데에 비해, fragment는 서버 요청/응답에 포함되지 않기 때문에, 서버로 요청을 보내지 않고 악성 스크립트를 심을 수 있음 => 더 위험

동일 출처 정책 (Same Origin Policy (SOP))

  • 같은 Origin 출처의 서버로만 요청을 주고 받을 수 있다고 규정한 것

사용자가 악의적 페이지 접속 -> 페이지에서 JS를 이용, 이용자의 SNS 웹 서비스로 요청 -> 브라우저에서 요청을 보낼 때 헤더에 해당 웹 서비스 쿠키 포함 -> 페이지는 로그인 된 이용자의 SNS 응답을 수신
=> 이와같은 문제를 방지하기 위해 나온 정책

profile
공부합시다

0개의 댓글