SQL Injection

reference:
홈페이지 개발 보안 가이드. 정통부
[마이크로소프트웨어] - SQL Injection 해킹 보안
악의적인 명령어 주입 공격, SQL Injection
    - 웹 사이트의 사용자 인증 창이나 URL 직접 입력 창 등을 통해 비 정상적인 SQL 명령어를 입력함으로써 SQL query를 변조하여 허가되지 않은 정보를 취득하는 해킹 기법

SQL Injection을 통해 가능한 공격
    - 사용자 인증을 비정상적으로 통과할 수 있다.
    - 데이터베이스에 저장된 데이터를 임의로 열람할 수 있다.
    - 데이터베이스의 시스템 명령을 이용하여 시스템 조작이 가능하다.

SQL Injection의 종류 및 설명
1. 사용자 인증 공격
    - 사용자 인증 과정을 통과하기 방법으로서 사용자 인증 창을 통해 입력 받은 id와 password 문자열이 인증을 위한 SQL query의 일부가 됨을 악용한 기법
    예) 사용자 인증 query가 [select 아이디 from USER_TABLE where id='첫번째 입력값' and password='두번째 입력값']일 경우, 두번째 입력값에 [' or 'A' = 'A]을 입력하면 where 절에는 or 연산에 피연산자로 참이 들어가 전체는 무조건 참이되어 인증에 성공.

2. OS 명령어 실행
    - DB 접근 권한이 시스템 권한일 경우 저장 프로시저를 주입함으로 OS의 명령어를 실행하는 기법
    예) MS SQL일 경우 1의 query에서 두번째 입력값이 [; exec master..xp_cmdshell ' ping 10.10.1.2'--]이라면 DB는 먼저 select ~ 문을 실행하고 exec ~ 문을 순차적으로 처리한다. 마지막의 [--]는 이후에 오는 SQL 문장을 주석처리하여 전체 문장을 완성시킨다(OS 명령어인 ping을 실행함).

SQL Injection 대응 방법
1. DB와 연동하는 스크립트의 모든 매개변수를 점검하여 사용자의 입력값이 SQL Injection을 발생시키지 않도록 수정
2. 입력값을 검사하여 허용되지 않은 문자열이나 문자가 포함된 경우에는 오류로 처리
3. SQL 서버의 오류 메시지를 사용자에게 보여주지 않도록. 공격자는 반환되는 오류 메시지를 분석하여 공격 성공 가능한 SQL Injection 문자열을 알아낼 수 있다.
4. 웹 애플리케이션에 사용하는 DB 사용자의 권한을 제한.

'digging IT 인프라 > 보안' 카테고리의 다른 글

PKI : Public Key Infrastructure  (1) 2007.11.12
PMI : Privilege Management Infrastructure  (0) 2007.11.12
SQL Injection  (0) 2007.10.10
XSS : cross Site Scripting  (2) 2007.10.10
OTP(One Time Password)  (2) 2007.10.05
IPSec : IP Security  (2) 2007.08.21
Posted by 어쨌건간에