My Name is Kay....

DIY , 먹방 , 개발 , 육아 , 여행 좋아합니다.
AdBlock 사용시 화면이 정상적으로 노출되지 않습니다.
포스팅 관련 문의 및 개발 문의는 Email : wkzkfmxksi@gmail.com

추가 포스팅이 이뤄지지 않는 블로그입니다. 문의는 wkzkfmxksi@gmail.com 으로 연락주세요.
kay
조회 수 3648 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

zasfe님 블로그 내용입니다.

 

요즘 많은 분들이 MASS SQL Injection 으로 피해를 보고 있는것 같습니다. 필자도 물론 예외는 아니였습니다.
지금에야 '쿠키를 이용한 인젝션공격이였습니다' 라고 이야기를 하지만 얼마전까지만해도 스크립트가 추가된 구문을 볼때마다 필자가 관리하는 서버를 사용하는 분들에게 송구스러운 마음이 참 많았습니다.

예전부터 심심치 않게 SQL Injection 을 이용한 스크립트 삽입공격은 있었습니다.
쿼리스트링에 추가하여서 공격하는 수준이였기때문에 웹나이트(Webknight) 문법으로 전부 막아내는 쿼거(?)도 이루었던 적도 있습니다.

이렇게 자만하다 큰코다친겁니다.  제가 관리하는 몇개의 사이트가 스크립트가 추가되는 사례가 발견되더니 잊을만 하면 한번씩 스크립트가 추가되는 현상을 발견하게 되었고, 쇼핑몰같은 경우는 데이터베이스를 복구할수도 없는 그런 상황까지 겪게 되었습니다.

"목마른 사람이 우물을 판다"고 했던가요..
일단 삽입이 되도록 하는 구문을 분석하여서 이를 바탕으로 스크립트만 삭제하는 구문을 작성하려고 하였습니다. char, nchar, varchar, nvarchar 는 너무 쉽게 변경이 가능했지만 문제는 text, ntext 같은 대용량의 유니코드 형식의 데이터에서 스크립트를 삭제하는 부분이였습니다.

몇몇 다른 분들의 경우 text 타입을 varchar(8000) 으로 변환하고 이를 수정하는 방법을 선택하셨습니다.
이 방법도 좋은 방법입니다. 쿼리만으로 작업을 진행할수도 있고, 일단 SQL 쿼리를 구하기가 쉬웠습니다. ( SQL 쿼리를 공개해주신 분들 감사합니다.)

그래도 문제는 발생하였습니다. 문자열을 신문을 집어 넣은건지 상당히 큰 text 타입의 데이터를 만나버리고 말았던 것이였습니다.
결국 VBScript 를 이용해서 다시 작업을 하도록 변경하였습니다. (사실 SQL 쿼리 수정보다 VBScript가 더 쉽게 생각되었습니다.;)

이래서 탄생한 Replace_string_in_mssql.vbs 입니다.

Replace_string_081117.vbs
 

내용은 무척 간단합니다. 컬럼중에 text, ntext, varchar, char, nvarchar, nchar 에 해당하는 것들에 대해서 "<script" 라는 구문이 포함되어 있으면 삭제작업을 하는 것으로 text, ntext 타입에 대해서만 특별히 ado를 이용해서 처리하였습니다.


PS) 덕분에 웹방화벽인 웹나이트(webknight) 버젼업그레이드와 룰셋의 추가 작업에 매진(?) 하는 기간이 되었습니다. 계속되고 있습니다.

수정1. 컬럼명이 [컬럼명] 과 같은형식의 컬럼도 처리하도록 수정.

수정2. 내용이 없는 항목에 대한 구문오류 우회토록 수정.


?

List of Articles
번호 제목 글쓴이 날짜 조회 수
48 프로시져 & 함수 백업 및 정보 확인 ( 생성일 , 수정일 등..) kay 2013.03.08 5011
47 LDF 최대용량 및 로그 삭제가 안될 때 kay 2013.03.08 3192
46 캐시 초기화 kay 2013.03.08 3063
45 데이터 베이스 소유자 아이디 매칭 kay 2013.03.08 2896
44 디비 로그 축소 kay 2013.03.08 4143
43 데이터 대소문자 구분하기 - case-insensitive(CI) , accent-insensitive(AS) kay 2013.03.08 4064
42 테이블 정의서 생성 file kay 2013.03.15 17624
» MASS SQL Injection 일괄 삭제하기 kay 2013.03.31 3648
40 TRY CATCH 예외처리하기 kay 2013.04.04 5361
39 openxml - xml 데이터 처리하기 kay 2013.04.10 4199
38 ASP Insert SQL 쿼리문 생성 kay 2013.04.10 4254
37 테이블 자동 증가값 초기화 kay 2013.04.25 2574
36 특정 컬럼 , 타입 , 테이블 조건 확인하기 - information_schema .columns kay 2013.05.09 15706
35 MS-SQL Express 원격접속 허용하도록 셋팅하기 file kay 2013.05.12 9660
34 물리적 스토리지 용량 체크하기 (exec master.dbo.xp_fixeddrives) kay 2013.05.23 12821
33 DataBase 파일정보 및 사이즈 확인하기 ( exec sp_helpfile ) kay 2013.05.23 3279
32 프로시저 내용 보기 ( sp_helptext ) kay 2013.05.28 7495
31 테이블 내용 비교 쿼리 kay 2013.06.05 4883
30 Zip Code 테이블 생성 및 데이터 kay 2013.06.07 3265
29 덤프쿼리 생성.. ( sp_generate_insert_script ) file kay 2013.06.07 3192
Board Pagination Prev 1 2 3 Next
/ 3