카테고리 없음

SQL Injection

chanfficial 2023. 1. 8. 19:53

SQL Injection

: 악의적인 사용자가 보안상의 취약점을 이용하여 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위이다. 공격이 비교적 쉬운 편이고 공격 성공 시 큰 피해를 입힐 수 있다.

 

 


 

공격 종류

1. Error based SQL Injection

  • 논리적 에러를 이용한다.
  • 에러가 발생하는 사이트에서 에러 정보들을 이용하여 DB 및 쿼리 구조 등의 정보를 추측할 수 있다.

 

2. UNION based SQL Injection 

  • UNION : 두 개의 쿼리문에 대한 결과를 통합해 하나의 테이블로 보여주는 키워드
  • 정상적인 쿼리문에 하나의 추가 쿼리를 삽입하여 원하는 정보를 획득한다.
  • UNION Injection 이 성공하기 위해 필요한 두 가지 조건 : (1) UNION 하는 두 테이블의 컬럼 수가 같아야 함,              (2) UNION 하는 두 테이블의 데이터 형이 같아야 함

 

3. Blind SQL Injection(1) 

  • Boolean based SQL로 limit, SUBSTR, ASCII SQL 문을 사용한다.
  • 특정한 값이나 데이터를 전달받는 것이 아닌 쿼리를 통해 나온 참과 거짓의 정보만을 통해 정보를 취득한다.
  • 에러가 발생되지 않는 사이트에서는 논리적 에러를 이용하거나 UNION 을 이용할 수 없으므로 Blind 를 통해 정상적인 쿼리가 수행되는지, 혹은 쿼리가 수행되지 않아 쿼리 결과가 없는지를 판단한다.
  • 서버가 응답하는 성공과 실패 여부를 이용하여 DB의 테이블 정보 등을 추출해낼 수 있다.

 

4. Blind SQL Injection(2) 

  • Time based SQL로 SLEEP, BENCHMARK SQL 문을 사용하여 쿼리 결과를 특정 시간만큼 지연시킨다.
  • Blind 와 마찬가지로 에러가 발생되지 않는 조건에서 사용하며, 참 / 거짓이라는 결과값이 나오지 않기 때문에 시간을 측정한다.

 

5. Stored Procedure SQL Injection 

  • 저장 프로시저(Stored Procedure) : 편의를 위해 일련의 쿼리들을 모아 하나의 함수처럼 모아둔 것
  • 대표적으로 MS-SQL 에서 사용할 수 있는 xp_cmdshell 을 통해 윈도우 명령어를 실행할 수 있어서 자주 악용되지만, 공격자가 시스템 권한을 획득해야 하므로 공격 난이도가 높다.
  • 공격에 성공한다면 서버에 직접적인 피해를 입힐 수 있다.

 

6. Mass SQL Injection 

  • 다량의 SQL Injection 공격, 한 번의 공격으로 다량의 DB 가 조작되어 큰 피해를 입히는 것을 의미한다.
  • MS-SQL 을 사용하는 ASP 기반 웹 애플리케이션에서 많이 사용된다.
  • 쿼리문은 Hex 인코딩 방식으로 인코딩하여 공격한다.
  • DB 값을 변조하여 DB 에 악성 스크립트를 삽입하고, 사용자들이 변조된 사이트에 접속하면 좀비 PC로 감염되게 한다. 이렇게 감염된 좀비 PC 들은 DDos 공격에 사용된다.