IT에서 살아남기

SQL Injection 본문

IT/정보

SQL Injection

게으른 CPU 2022. 12. 16. 00:14

 

 

 


SQL Injection

 

클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격하는 공격 방식을 말하며, OWASP Top 10 2021 개정판 A03:Injection에 속한다.

 


SQL Injection 종류

- Error based SQL Injection

- Union based SQL Injection

- Blind based SQL Injection

 


Error based SQL Injection

논리적 에러를 이용하여 서버에서 정보를 얻어오는 기술로 사용한다.

 

공격 예시

 

- 로그인 시 ID와 PW을 입력하는데 이 때 서버에서 받아오는 구문은 아래와 같다.

 

1. SELECT * FROM client WHERE id='id' and password='password'

 

1번와 같이 들어와야 정상이지만

 

2. SELECT * FROM client WHERE id='' or '1' = '1' -- 

 

2번과 같이 id  컬럼 뒤에 or 구문을 통해 입력된 값이 하나라도 참이면 참으로 인식이 되며, '--' 때문에 password가 주석처리가 된다.

 

이를 통해 id에만 입력해도 로그인이 성공하게 된다.

 


Union based SQL Injection

 

SQL 문법 중 Union은 여러 쿼리를 하나로 이어주며, 공격자가 인젝션에 성공하면 원하는 쿼리문을 실행할 수 있다.

 

공격을 성공하기 위해 만족해야하는 조건이 2가지

 

1. UNION 쿼리와 테이블이 동일한 필드 개수

2. UNION 쿼리와 테이블이 동일한 테이터형

 

위 조건에 맞을 시 공격이 성공한다.


Blind based SQL Injection

서버로투버 특정한 값이나 데이터를 전달받지 않고, 참 혹은 거짓의 정보만으로 DB의 테이블 정보를 추출한다.

 

조건이 참인 경우 페이지가 정상적으로 출력하고, 거짓이면 페이지가 출력하지 않거나 응답 오류를 통해 정보를 확인한다.


 

예방법

- 입력 값에 대한 검증

 

> 검증 로직을 추가하여 부적절한 입력값에 대한 검증 후 차단

 

- Error Message 노출 금지

 

> 에러 발생 시 사용자에게 보여줄 페이지를 따로 제작하거나 메시지 박스를 띄우도록 변경

 

- 저장 프로시저 사용

 

> 사용하고자하는 Query에 미리 형식을 지정하는 것을 말하며, 지정된 형식의 데이터가 아니면 Query문이 실행되지 않음

'IT > 정보' 카테고리의 다른 글

File Upload Vulnerability  (0) 2022.12.17
XSS(Cross-Site Scripting)  (0) 2022.12.16
OWSAP Top 10 - 2021  (0) 2022.12.15
Snort Rule Option  (0) 2022.12.13
Wireshark 사용법 및 필터 정리  (0) 2022.12.13