웹 보안 공격

2023. 12. 16. 15:36· 기타
목차
  1. 웹 보안
  2. 다양한 공격 기법
  3. SQL Injection
  4. XSS
  5. CSRF Attack
  6. Command Injection
  7. FIle Upload Attack
  8. JavaScript Injection
  9. DDoS
  10. Dictionary Attack
  11. Rainbow Table
  12. 보안정책
  13. CORS
  14. CSP
  15. HTTPS

웹 보안

웹 사이트의 취약점을 공격하는 기술적 위협으로, 웹 페이지를 통하여 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위를 말한다


다양한 공격 기법

SQL Injection, XSS, CSRF Attack, File Upload Attack, Command Injection, Buffer Overflow, Dictionary Attack 등 등


SQL Injection

  • 서버에서 실행되는 SQL을 악의적으로 이용하는 공격
  • 기존 SQL에 악의적인 SQL을 삽입한다.
  • 데이터 탈취, 삭제 등이 가능하다

방어법

  • SQL에서 특별한 의미를 가지는 문자를 이스케이프한다
    ex) \n, \t, |, /, &, #, ...
  • 준비된 선언을 사용한다
    • Placeholder를 담은 SQL을 먼저 DB에 보낸후 Placeholder에 해당하는 입력 값을 DB에 보내는 방식
  • 요즘은 라이브러리, 프레임워크에서 아주 잘 막아준다.

심화

Error based SQL Injection

  • 일부러 SQL 에러를 발생시켜 원하는 정보를 취득한다
  • 쿼리문 추측, DB명, 테이블명 등을 취득할 수 있다

Blind SQL Injection

  • Query 결과의 참/거짓을 보고 원하는 정보가 존재하는지 알 수 있다
  • DB, Table 명을 알 수 있다
  • SQLMap이라는 자동화된 툴을 이용하기도 한다
    • ex) SELECT * FROM users WHERE user_id = '1' and substring(database(), 1, 2) = 'us'#

Union SQL Injection

  • Union 명령을 이용하여 정보를 취득한다
    • ex) SELECT * FROM users WHERE use_id = '1' or 1=1 UNION SELECT '', id, pwd from users#

XSS

  • Cross-Site Scripting
  • 웹 페이지에 악성 스크립트를 삽입하는 공격
  • 사이트 이용자 정보를 탈취할 수 있다

방어

  • HTML 필터링을 한 후 DB에 저장한다.
  • ex) <, >, script, html, head, meta, ...
  • 만약을 위해 프론트엔드에서도 필터링한다

심화

Stored XSS

  • 위에서 소개한 내용
  • 웹 페이지에 악성 스크립트를 삽입하는 공격
  • 사이트 이용자 정보를 탈취할 수 있다

Reflected XSS

  • 검색어 등을 보여주는 곳에 스크립트를 심는 공격
  • URL을 사용자에게 누르게 만들면 공격 성공

DOM Based XSS

  • DOM에 악의적인 스크립트를 심는 공격
  • 브라우저가 해석하는 단계에서 발생되는 공격

CSRF Attack

  • Cross-Site Request Forgery
  • 공격자가 사용자를 이용하여 웹 사이트에 요청을 보내는 공격

방어

Referrer Check

  • 허용한 도메인만 요청 허락하도록 설정

CSRF Token

  • 모든 요청에 토큰을 발급하여 서버에서 검증

CAPTCHA

  • 사람이 요청한 것이 맞는지 검증

Command Injection

  • 애플리케이션에서 사용되는 시스템 명령에 악의적인 명령어를 삽입하는 공격 (WebShell Attack)
  • 서버 root 권한을 취득할 수 있다

방어

  • 가급적 시스템함수는 사용 X
  • 민감한 문자를 필터링 ex) |, &, ;, >, <

FIle Upload Attack

  • 악성 스크립트 파일을 업로드하는 공격
  • 업로드 후 파일 위치를 찾아 실행시키면 공격 성공

방어

  • 확장자 / 파일 타입 검사
  • 업로드 파일을 난수화하여 저장
  • 특수 문자가 포함된 경우 업로드 금지

JavaScript Injection

  • Client-Side에서 JavaScript를 삽입시키는 공격
  • 크롬 console 등을 통해 조작 가능하다
  • Client-Side에 민감한 데이터를 넣을 경우 탈취 가능

방어

  • Client-Side엔 민감한 정보를 절대 넣지 않는다
  • 데이터 유효성 검사가 필요한 경우 서버와 통신 (중요한 데이터는 Client에서만 검사하면 안된다)

DDoS

  • Distributed Denial of Service
  • 서버에 비정상적으로 많은 트래픽을 보내는 공격
  • 서비스가 마비되고 많은 비용이 소모된다

방어

  • 제일 단순한데 제일 막기 어렵다
  • 확장 가능한 서비스 구조 설꼐
  • IP 필터링
  • Rate limit
  • 솔루션 구매

Dictionary Attack

  • 미리 사전에 등록해놓은 문자열을 암호로 대입하는 공격
  • Brute Force의 일종

방어

  • 의미가 있는 문자열(apple, banana...)은 암호로 등록 못하도록 설정
  • Account Lockout Policy
  • 2-factor 인증

Rainbow Table

  • 이미 해킹을 당했다는 가정하에 사용할 수 있는 방법
  • 해시 함수를 이용한 평문을 모두 저장시켜 놓은 표
  • 계정 탈취 후 암호 원문을 알아내기 위해 사용

방어

  • Salt 사용
  • Key Stretching
  • PBKDF2, Bcrypt 등의 암호화 알고리즘 사용

보안정책

CORS

  • Cross-Origin Resource Sharing
  • 개발자가 지정한 프로토콜, 도메인, 포트가 아니라면 리소스를 가져올 수 없다
  • Response header를 보고 허용 여부를 브라우저가 정한다
  • 브라우저마다 구현이 다를 수 있다

CSP

  • Content-Security-Policy
  • 실행 가능한 리소스에 대한 Whitelist를 정하는 정책
  • 웹 사이트가 허용되지 않은 리소스를 요청하지 못하도록 막는다
  • XSS 방지에 도움이 된다
    • 기본적으로 inline script는 실행을 막는다
  • 메타 태그 혹은 HTTP Header로 설정 가능

HTTPS

  • HTTP 프로토콜의 암호화된 버전
  • 소켓 통신에 암호화된 데이터를 전송한다
  • SSL 인증서를 이용한다

'기타' 카테고리의 다른 글

[유데미x스나이퍼팩토리] 프로젝트 캠프 : Next.js 2기 - 사전직무교육 1주차  (5) 2024.07.21
React, TS, Vite 환경에서 프로젝트 세팅  (0) 2023.12.18
[Vercel] Vercel로 프론트 배포하는법  (0) 2023.10.27
  1. 웹 보안
  2. 다양한 공격 기법
  3. SQL Injection
  4. XSS
  5. CSRF Attack
  6. Command Injection
  7. FIle Upload Attack
  8. JavaScript Injection
  9. DDoS
  10. Dictionary Attack
  11. Rainbow Table
  12. 보안정책
  13. CORS
  14. CSP
  15. HTTPS
'기타' 카테고리의 다른 글
  • [유데미x스나이퍼팩토리] 프로젝트 캠프 : Next.js 2기 - 사전직무교육 1주차
  • React, TS, Vite 환경에서 프로젝트 세팅
  • [Vercel] Vercel로 프론트 배포하는법
zunwon
zunwon
zunwon
준원의 개발일지
zunwon
전체
오늘
어제
  • 분류 전체보기
    • 📒 JavaScript
    • 📘 TypeScript
    • React.js
    • 📗 Vue.js
    • 💻 알고리즘
      • 프로그래머스
      • 백준
    • ✏ 회고
      • 후기
    • 👨‍💻 TIL
    • 📋 오픈소스
    • 기타

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 미래내일일경험
  • 프론트엔드
  • udemy
  • 프로그래머스 데브코스
  • TypeScript
  • JavaScript
  • 스나이퍼팩토리
  • 부스트캠프
  • 자료구조
  • 국비지원교육
  • githru
  • 회고
  • 인사이드아웃
  • fontend
  • 함수형자바스크립트
  • til
  • css
  • 알고리즘
  • Vue.js
  • frontend
  • 데브코스
  • next.js
  • mil
  • Vue
  • 프로젝트캠프
  • 함수형 자바스크립트
  • 프로그래머스
  • vercel
  • 오픈소스컨트리뷰션
  • 코딩부트캠프

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
zunwon
웹 보안 공격
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.