NShiftKey-Rule-Guide logo NShiftKey-Rule-Guide

1. 취약점 설명

<그림 1. 정상 시나리오>

<그림 2. 공격 시나리오>

(1) 파일을 쓰고 읽는 프로시저들을 이용한 파일 업로드 + 웹 쉘

(2) shell execution을 이용한 reverse connection

<그림 3. SQL injection 위협 정도(OWASP 2013)>

사고 사례

- 소니 픽쳐스 침해사고(100만 계정 유출)
- 뽐뿌 침해 사고(196만 계정 유출)
- 중국 완구 업체 침해사고(500만 계정 유출)
- Wordpress Plugin을 이용한 침해 사고(100만개 웹사이트 해킹)
- 그 밖에 언론에 알려지진 않았지만, 빈번하게 일어나는 언론사 침해 사고
- 내부 침해사고 사례 : 특정 서비스의 관리자 페이지를 통한 사고

2. 취약점 확인 방법

2.1. Line-Comments (주석)

Comment syntax MySQL MSSQL Oracle
-- comment YES YES YES
# commnet YES NO NO
/* comment */ YES YES YES

<표1. DB에 따른 주석 문법>

2.2. Error-Base (에러 기반)

2.3. Boolean(참/거짓)

2.4. Interger Based (정수형 기반)

3. 취약점 예방과 대응 방안

3.1. Prepared Statements 사용

3.2. Stored Procedure 사용

3.3. 공통 에러 페이지 노출(DB Error 시)

3.4. Input Validation(Logic & Filtering & escape)

Filtering 문자

--, #, \@, \@@, /*, */, table, sys, char, varchar, nvarchar, create, declare, alter, exec, insert, delete, drop, end, sys, table, update