42P by kciter1 2023-08-30 | favorite | 댓글과 토론
  • SQL Injection
    • 요청에 악의적인 SQL을 삽입하여 공격하는 기술
    • 간단하지만 아주 강력한 공격
    • 요즘은 대부분 라이브러리, 프레임워크 수준에서 막아주지만 항상 조심해야함
    • Error based SQL Injection
      • 일부러 에러를 발생시켜서 DB에 대한 정보를 알아내는 방법
      • 에러 메시지가 노출되지 않도록 조심해야함
    • Blind SQL Injection
      • 쿼리 결과의 참/거짓 정보를 보고 원하는 정보가 존재하는지 추론하는 공격 방법
      • 이를 통해 데이터베이스, 테이블, 컬럼 명을 파악할 수 있음
    • Union SQL Injection
      • union 명령을 이용하여 정보를 얻는 공격 방법
  • XSS
    • 웹 페이지에 악성 자바스크립트를 삽입하는 공격
    • 필터링을 잘 해야함
    • Stored XSS
      • 보통 XSS라하면 소개되는 공격 방법
      • DB에 자바스크립트 코드를 넣고 불러올 때 실행되도록 하는 공격
      • 브라우저에서 스크립트 실행을 막고 저장될 때 필터링을 해야함
    • Reflected XSS
      • 입력을 그대로 브라우저에 노출시키는 공격 방법
      • URL Query에 redirectUrl 등이 있을 때 이곳에 자바스크립트를 넣을 수 있음
      • 악의적인 링크를 타인에게 배포할 수 있으므로 막아야함
    • DOM Based XSS
      • DOM에 악의적인 스크립트를 넣는 방법
      • img 태그의 src 등에 넣을 수 있음
  • CSRF Attack
    • 공격자가 서비스 사용자를 이용하여 요청을 보내는 공격
    • Referer Check, CSRF Token, CAPTCHA 를 통해 막는 것이 가능
  • Command Injection
    • 쉘을 실행시키는 로직을 이용한 공격
    • 시스템 권한이 탈취되는 것이나 마찬가지기 때문에 매우 치명적
    • 쉘 명령을 실행시키는 시스템 함수를 사용하지 않는 것이 제일 좋고 만약 꼭 사용해야한다면 |, &, ;, >, <와 같은 민감한 문자는 필터링할 것
  • File Upload Attack
    • WebShell이 가능한 코드가 담긴 파일을 업로드하고 해커가 URL을 통해 접근 가능해지면 Command Injection과 같은 효과를 볼 수 있음
    • 확장자와 파일 타입을 검사하여 허락된 타입만 저장하는 것이 좋음
    • 해커가 파일을 찾을 수 없도록 업로드 파일의 이름과 확장자를 난수화하여 저장할 것
    • 특수 문자가 포함된 경우 업로드를 막는 것이 좋음 (Null byte Injection 방지)
  • JavaScript Injection
    • 브라우저에서 자바스크립트를 삽입시키는 공격
    • 만약 Client-Side에 민감한 데이터를 넣어놨다면 해당 공격을 통해 탈취 가능
    • 클라이언트엔 민감한 데이터를 절대 Plain하게 넣으면 안됨
    • 데이터 유효성 검사가 필요한 경우 서버에서 처리해야함
  • DDoS
    • 분산된 시스템을 이용하여 서버에 비정상적으로 많은 트래픽을 보내 마비시키는 공격
    • 단순한데 제일 막기 힘든 공격
  • Dictionary Attack
    • 미리 데이터베이스에 등록해놓은 수많은 문자열을 암호로 대입하는 공격
    • 간단한 단어는 비밀번호로 등록하지 못하게 막을 것
    • Account Lockout Policy를 도입
    • OTP 같은 2-factor 인증을 도입
  • Rainbow Table
    • 평문을 해시 함수로 만든 문자열을 모두 저장시켜 놓은 표
    • 주로 계정 데이터 탈취 후 암호 원문을 알아내기 위해 사용함
    • Salt 사용
    • Key Stretching
    • PBKDF2, Bcrypt 등의 암호화 알고리즘 사용