최대 1 분 소요

SQL Injection

개념

  • 임의의 SQL 질의문을 삽입해 실행하는 공격이다.

공격 피해

인증 우회

  • 입력에 SQL 질의문을 삽입하여 인증 우회를 한다.
  • 사용자가 입력한 값이 별도의 검증 과정 없이 서버의 SQL 문과 합쳐져 발생하는 문제이다.

데이터 추출

  • 공격자가 원하는 정보를 DB에서 읽어올 수 있다.
  • 사용자가 입력한 값이 별도의 검증 과정 없이 서버의 SQL 문과 합쳐져 발생하는 문제이다.

데이터 변조

  • insert, delete, update 구문을 이용하여 DB 서버에 저장된 데이터를 변화시킨다.
  • 사용자가 입력한 값이 별도의 검증 과정 없이 서버의 SQL 문과 합쳐져 발생하는 문제이다.

Web Shell

  • 업로드 취약점을 통하여 시스템에 명령을 내릴수 있는 코드를 말한다.
  • SQL Injection 공격을 통해 악성코드를 업로드할 수 있다.
  • 하지만 웹 서버와 DB 서버가 물리적으로 분리되어 있다면 악성코드를 실행하기 힘들다.

공격 유형

Union SQLi

  • union 문을 이용하여 select 문을 추가하고, 결과를 받아본다.

Error Based SQLi

  • 논리에러를 유발시킬 수 있는 특정 함수를 이용한다.

Blind SQLi

  • 참과 거짓 조건을 이용해서 데이터 문자 하나씩 추출한다.

대응 방안

  • Prepared Statement 를 이용하기. 단 order by, table 이름, column 이름에는 적용할 수 없다.
  • 화이트 리스트 필터링.(허락. 더 안전하다. ) 즉 정해놓은 애들만 들어올 수 있다.
  • 블랙 리스트 필터링. (금지) 금지한 명령어는 사용할 수 없다.

참고 사이트

댓글남기기