Hi Hi

SQL Injection, 해킹과 보안에 대해

 


웹 응용 프로그램에 강제로 구조화 조회언어(SQL) 구문을 삽입하여 내부 데이터 베이스 (DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있는 공격이다.

예를 들어 관리자 ID와 패스워드에 아래 문자열을 입력했을 때 로그인되면 취약점이 존재한다.

ID : ’or 1=1 ; -- 패스워드 : ’or 1=1 ; --


<위협 사례>
(1) 사용자 인증 공격
(2) MS-SQL상에서의 시스템 명령어 실행

<직접적인 피해사례> 
- 3대 웹 공격을 조심하라 … 'SQL 인젝션 · 웹 셸 · XSS 스크립트' 5분안에 다뚫려
- MySQL과 SUN, SQL 인젝션 공격으로 해킹당해
- 증권사, 보안 불감증 '심각'

<취약성 판단 방법>
-검색어 필드 및 로그인ID, PASSWD 필드에 ("),('),(;) 등을 입력한 후, DB Error가 일어나는지 확인하자

-로그인 모듈 점검
MS SQL인 경우 : ID필드에 ['or 1=1 ;--], 비밀번호 필드에는 아무 값이나 입력한 후 로그인을 시도한다.

Oracle인 경우: ID 필드에 ['or 1=1 --], 비밀번호 필드에는 아무 값이나 입력한 후 로그인을 시도한다.


-기타

ID 필드에 ['or ''='], 비밀번호 필드에 ['or ''=']을 입력한 후 로그인을 시도한다.

<보호 대책>
-데이터베이스와 연동을 하는 스크랩트의 모든 파라미너들을 점검하여 사용자 입력 값이 SQL injection을 발생시키지 않도록 수정한다.
-허용되지 않은 문자열이나 문자가 호함된 경우에는 에러로 처리한다.
-SQL 서버의 에러 메시지를 사용자에게 보여주지 않도록 설정한다.
-웹 애플리 케이션이 사용하는 데이터 베이스 사용자의 권한을 제한한다.

'' 카테고리의 다른 글

SQL Injection, 해킹과 보안에 대해  (0) 2011.06.28