웹 보안 공격

yoo chang heon·2022년 7월 14일
0

Web

목록 보기
6/6

웹 보안

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

공격 기법

SQL Injection

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

Error based SQL Injection

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

Blind SQL Injection

Query 결과의 참/거짓을 보고 원하는 정보가 존재하는지 알 수 있다.
DB, Table 명을 알 수 있다.

Union SQL Injection

Union 명령을 사용하여 정보 취득한다.

방어

  • SQL에서 특별한 의미를 가지는 문자를 이스케이프 한다.
  • 준비된 선언을 사용
  • 최근 라이브러리, 프레임워크에서 대부분 막아준다.

XSS(Cross-Site-Scripting)

웹페이지에 악성 스크립트를 삽입하는 공격으로 사이트 이용자 정보를 탈취할 수 있다.

방어

HTML 필터링을 한 후 DB에 저장(<,>,script,html,head,meta...)

Reflected XSS

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

DOM Based XSS

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

CSRF Attack (Cross-Site Request Forgery)

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

방어

  • Referrer Check: 허용한 도메인만 요청 허락하도록 설정
  • CSRF Token: 모든 요청에 토큰을 발급하여 서버에서 검증
  • CAPTCHA: 사람이 요청한 것이 맞는지 검증

Command Injection

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

방어

  • 가급적 시스템 함수는 사용 x
  • 민감한 문자를 필터링

FileUpload Attack

  • 악성 스크립트 파일을 업로드하는 공격
  • 업로드 후 파일 위치를 찾아 실행시키면 공격 성공
    (요즘은 좀 힘듬, 옛날 php 쓸 때나 쓰던 것)

방어

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

JavaScript Injection

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

방어

Clinet-Side엔 민감한 정보를 절대 넣지 않는다.

  • 데이터 유효성 검사가 필요한 경우 서버와 통신한다.(Clinet에서만 검사하면 x)

DDoS (Distributed Denial of Service)

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

방어

제일 단순하지만 제일 막기 어렵다.

  • 확장 가능한 서비스 구조 설계
  • IP 필터링
  • Rate Limit
  • 솔루션 구매

Dictonary Attack

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

방어

의미가 있는 문자열은 암호로 등록 못하도록 설정
Account Lockout Policy
2-factor 인증

Rainbow Table

해시 함수를 이용한 평문을 모두 저장시켜 놓은 표(이미 해킹을 당함)
계정 탈취 후 암호 원문을 알아내기 위해 사용한다.

방어

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

보안정책

CORS (Cross-Origin Resource Sharing)

개발자가 지정한 프로토콜, 도메인, 포트가 아니라면 리소스를 가져올 수 없다.
Resoponse header를 보고 허용 여부를 브라우저가 정한다.

CSP (Content-Security-Policy)

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

HTTPS

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

0개의 댓글