[웹 해킹 & 시큐어 코딩] 05. XSS

2023. 12. 5. 03:00·📗 self-study/📗 inflearn

 

 

 

 

🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

 

위아래 1줄씩 띄우고 중요한 부분은 볼드 효과

 

 

 

 

📍 XSS란?

👉🏻 Cross-Site Scripting: 클라이언트 언어(HTML, CSS, Javascript)가 사용된 악의적인 스크립트

👉🏻 CSS가 이미 사용 중이므로 헷갈리지 않기 위해 XSS로 표기

 

👉🏻 A사이트에서 B사이트로 이동시키는(cross-site) 공격

 

 

 

📍 공격 대상

공격자 > /vuln.jsp?input=hello+world

> 웹페이지 URL: http://www.victim.co.kr/vuln.jsp?input=hello+world
				hello world

👉🏻 기능적인 공격 대상 - 어플리케이션에서 어떤 공격을 진행할지

 

// 공격 대상이 사용자인 만큼 어플리케이션 언어를 사용하며 WAS는 해당 언어를 이해하지 못하므로 그저 정적 소스로 뿌림

👉🏻 엔드 포인트단의 공격 대상 - 사용자를 공격함

(SQL, OS, XXE Injection은 서버를 공격하지만 XSS는 사용자를 대상으로 하는 경우가 많음)

 

👉🏻 서버 웹 취약점을 강화할수록 공격자들이 자연스럽게 사용자/어플리케이션 대상으로 많이 공격하게 됨

 

 

 

📍 공격 유형

👉🏻 피싱: 악의적인 사용자가 유도한 사이트로 리다이렉션

 

👉🏻 악성코드 유포: 강제 악성코드 다운로드 및 실행 후 악성코드 설치, Drive-by Download / 취약한 웹브라우저인 IE를 사용할 때 많이 걸림

 

👉🏻 XSS Tunnel: 사용자 웹 브라우저 권한 획득 및 대부분의 행위 가능

👉🏻 세션 하이재킹: 사용자 세션을 탈취 후 세션 재사용 및 권한 탈취

 

👉🏻 CSRF: 악성 스크립트에 의해 악의적인 사용자가 의도한 행위를 함

 

 

 

📍 공격 기법

// URL의 값을 가지고 와 실제 입력값에 해당 값이 있는지 확인하고 동적 페이지를 구성함
// Client Side

👉🏻 DOM-BASED XSS: 웹 브라우저에서 사용자 입력 값을 통해 동적 페이지 구성

 

// 서버에서 온 응답값을 가지고 동적 페이지를 구성함
// Server Side

👉🏻 REFLECTED XSS: 서버 측에서 사용자 입력 값을 통한 동적 페이지 구성

 

// 공격자가 DB에 악의적인 스크립트를 저장해 두고 사용자가 그것을 조회할 때 동적 페이지 구성하여 공격
// Back-End Database

[고급정보입니다. -공격자] > 공격자가 게시글 작성하여 DB에 악의 스크립트 저장
> 사용자가 해당 게시글 클릭 시 DB에서 악의 스크립트를 SELECT 해 옴으로써 뿌려지게 됨

 

👉🏻  STORED XSS: 데이터베이스에 저장된 데이터를 통한 동적 페이지 구성(Persistent, 지속 가능성 있으며 가장 흔함)

 

 

 

📍 공격 원리 분석

공격자 > http://www.victim.co.kr/vuln.jsp?value=[악성스크립트]
사용자 > 클릭

> http://www.victim.co.kr 서버 접속 후 정상 응답값을 던짐
화면단에서 악의 스크립트 페이지 구성을 해석하고 공격자 서버에 접속하는 등 공격자의 의도와 같은 행위를 하게 됨

👉🏻 DOM-BASED XSS 구성

 

공격자 > http://www.victim.co.kr/vuln.jsp?value=[악성스크립트]
사용자 > 클릭

> http://www.victim.co.kr 서버 접속 후
악성 스크립트가 담긴 응답값을 던짐

👉🏻 REFLECTED XSS

 

공격자 > http://www.victim.co.kr/vuln.jsp?value=[악성스크립트]를 DB에 저장함
사용자 > 해당 내용을 조회하면서 악의적인 스크립트를 실행

 

👉🏻 STORED XSS

 

 

 

📍 세션 하이재킹에 대한 이해와 공격 원리 분석

👉🏻 Session Hijacking: 세션 탈취를 통해 아이디/패스워드를 몰라도 사용자 계정을 도용하는 것

공격자 > 탈취한 세션을 통한 사용자 계정 도용 > 사용자에게 공격자 서버 접근하라고 명령

 

 

 

 

📍 대응 방안

👉🏻 서비스성과 보안은 서로 상반된 관계로 대응하기 까다로운 편

👉🏻 숫자, 단순 문자(+숫자)일 경우 정규식

👉🏻 문자+특수문자일 경우 HTML을 사용하지 않는다면 HTML Entity Encoding, 사용한다면 보안 라이브러리나 정규식 사용하는 등 용도에 따라 다른 프로세스를 수립해야 함

 

 

 

출처

웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

https://www.inflearn.com/course/%EC%9B%B9%ED%95%B4%ED%82%B9-%EB%B3%B4%EC%95%88-%EC%8B%9C%ED%81%90%EC%96%B4%EC%BD%94%EB%94%A9

 

웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩 - 인프런 | 강의

정보보안 입문자와 웹 개발자 분들을 위한 웹 해킹 입문 강의! 본 강의를 시작으로 웹 해킹을 재미있게 시작해보세요!, 웹 개발자, 정보보안 입문자를 위한 웹 해킹 학습!언제, 어떤 위험 상황에

www.inflearn.com

 

 

저작자표시 비영리 변경금지 (새창열림)
'📗 self-study/📗 inflearn' 카테고리의 다른 글
  • [웹 해킹 & 시큐어 코딩] 07. 파일 다운로드 취약점
  • [웹 해킹 & 시큐어 코딩] 06. CSRF
  • [웹 해킹 & 시큐어 코딩] 04. XXE Injection
  • [웹 해킹 & 시큐어 코딩] 03. OS Command Injection
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[웹 해킹 & 시큐어 코딩] 05. XSS
상단으로

티스토리툴바