1. 개요
- 현재 대부분의 웹 사이트들은 사용자로부터 입력 받은 값을 이용해 데이터 베이스 접근을 위한 SQL Query를
만들고 있다. 사용자 로그인 과정을 예로 들면, 사용자가 유효한 계정과 패스워드를 입력했는지 확인하기 위해
사용자 계정과 패스워드에 관한 SQL Query문을 만든다. 이때 SQL injection 기법을 통해서 정상적인 SQL
query를 변조할 수 있도록 조작된 사용자 이름과 패스워드를 보내 정상적인 동작을 방해할 수 있다. 이러한
비정상적인 SQL Query를 이용해 다음과 같은 공격이 가능하다.
● 사용자 인증을 비정상적으로 통과할 수 있다.
● 데이터베이스에 저장된 데이터를 임의로 열람할 수 있다.
● 데이터베이스의 시스템 명령을 이용하여 시스템 조작이 가능하다.
이러한 취약점을 SQL Injection 취약점이라고 하며, 사용자가 데이터 입력이 가능한 수 많은 웹
페이지 상에 이러한 취약점이 존재할 수 있다.
2. 위협 사례
(1) 사용자 인증
아래의 그림과 같이 인증을 처리하는 모듈이 입력 값에 대해 적절히 검사하지 않았을 때 공격자는 비정상적인 SQL Query를 삽입 할 수 있고 이를 이용해 사용중인 데이터베이스에 영향을 줄 수 있다.
<그림> 악의적인 SQL Query문 삽입
다음은 SQL 구문을 이용하여 인증을 처리하는 일반적인 웹 페이지 구조를 나타낸다.
이 스크립트에 공격자가 test라는 신청인명을 입력하고 인터넷 접수번호 대신 A’or‘ A’=’A 이란 값을 입력하면 아래와 같은 SQL Query가 완성된다.
이 경우 구문의 WHERE 절은“참 AND 거짓 OR 참”의 WHERE 절이 생성되며 무조건 참이 되어 SQL 구문은 올바른 입력 값으로 처리하게 되며 공격자는 웹 인증 페이지를 쉽게 통과할 수 있게 된다.
'시스템/웹/포렌식 보안 > 웹 해킹/보안' 카테고리의 다른 글
Windows 2008 파일 시스템 보안설정 (0) | 2014.04.06 |
---|---|
웹 진단(모의해킹) 가이드 라인 OWASP10 (0) | 2014.04.06 |
취약점 위험평가 Framework (0) | 2013.10.08 |
악성코드 삽입 인지 및 삭제 가이드 라인 (0) | 2013.10.08 |
Apache 보안 설정 (0) | 2013.09.13 |