SQL Injection 정리
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 이름에는 적용할 수 없다.
- 화이트 리스트 필터링.(허락. 더 안전하다. ) 즉 정해놓은 애들만 들어올 수 있다.
- 블랙 리스트 필터링. (금지) 금지한 명령어는 사용할 수 없다.
댓글남기기