SQL Injection
1. SQL Injection의 정의

- SQL Injection 이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위
- 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있기 때문에 보안 위협 1순위로 불리기도 함
- 2017년 3월에 일어난 “여기어때” 의 대규모 개인정보 유출 사건도 SQL Injection 으로 인해 피해가 발생
2. 공격 방법 및 종류
- Error based SQL Injection
- SQL의 잘못된 문법을 사용했을 때 나오는 에러메시지를 기반으로 데이터베이스의 정보와 구조를 알아내는 공격기법

2. Union Based SQL injection
- union을 사용하여 sql injection을 시도하고, 여러 값을 탈취하는 기법
- union하는 테이블들의 컬럼 수가 같아야한다.
자세한 설명은 잘 정리된 블로그 첨부하겠습니당
https://cha4ser.tistory.com/entry/Web-Hacking-Union-Based-SQL-Injection
[Web Hacking] - Union Based SQL Injection
이번 포스팅에서는 SQL 인젝션 중에서 Union Based SQL Injection 에서 알아보도록 하겠습니다. Union SQL Injection은 2개 이상의 쿼리를 요청하여 결과를 얻는 UNION 이라는 SQL 연산자를 이용한 SQL 인젝션 공
cha4ser.tistory.com
3. Blind SQL Injection
- 오류 메시지가 잘 보이지 않는 사이트에서 SQL 쿼리의 참/거짓 동작만으로 DB의 구조를 파악하는 공격기법
- 삽입한 쿼리문의 참/거짓 결과를 기반으로 값을 추측한다.
4. Stored Procedure SQL Injection
- 웹에서 Stored Procedure에 대한 접근 권한을 가짐으로써 실행하는 공격기법
-
더보기저장 프로시저
만들어 놓은 SQL문을 저장해 놓고, 필요할 때마다 호출해서 사용하는 방식으로 사용 - > 실무에서 많이 사용
- 사용하고자 하는 Query에 미리 형식을 지정하는 것
- 일련의 쿼리를 하나의 함수처럼 실행하기 위한 쿼리의 집합
- 운영상 편의를 위해 만들어둔 SQL 집합 형태
- 시스템 권한을 획득해야 하므로 공격 난이도가 높으나, 성공한다면 서버에 직접적인 피해를 입힐 수 있음
5. Mass SQL Injection
- 보통 DB접속을 통하는 SQL injection과 달리, 툴을 이용하여 한번의 공격으로 방대한 코드를 삽입하여 다량의 DB값을 변조시킴으로써 웹사이트에 치명적인 영향을 입히는 공격 기법
- 쿼리스트링의 길이를 제한함으로써 약간의 예방이 가능하다.
SQL Injection 예방 방법
- 신뢰할 수 있는 네트워크, 서버에 대해서만 접근 허용
- 에러 메시지 노출 차단
- 최소 권한 유저로 DB 운영
'개발 > DB' 카테고리의 다른 글
| SQL vs NoSQL (0) | 2024.04.21 |
|---|---|
| JOIN (2) | 2024.04.08 |
| DB 기본 개념 및 키(Key)정리 (0) | 2024.04.08 |