ASP 의 경우 인젝션 침해가 자주 발생한다.
문제는 백업 스케쥴링에 의한 백업 데이터가 없거나.
혹은 최근 업데이트된 자료가 소중하여 복원을 할수 없을때 생긴다 ‘ㅅ’a
아래는 인젝션 침해된 소스 코드를 NULL 로 치환해 주는 ms-sql 용 쿼리문이다.
원래대로라면 IIS 의 선언된 사이트를 중지 시키고 해야 겠지만 아래와 같은 쿼리문으로
진행 할경우 현재 sql connect 된 접속을 끊고 진행하기 때문에 편하다 =3=a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
use 아이디 declare @org_user varchar(50) set @org_user = 'dbo' DECLARE @TABLE_NAME VARCHAR (50) DECLARE @TABLE_OWNER VARCHAR (50) DECLARE TCURSOR CURSOR FOR SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties' FOR READ ONLY OPEN TCURSOR FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER WHILE @@FETCH_STATUS = 0 BEGIN EXEC ('SP_CHANGEOBJECTOWNER ''[' + @TABLE_OWNER + '].[' + @TABLE_NAME + ']'', ''아이디 혹은 dbo''') FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER END CLOSE TCURSOR DEALLOCATE TCURSOR declare @t varchar(255),@c varchar(255) declare table_cursor cursor for select a.name, b.name from sysobjects a, syscoluMns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) open table_cursor fetch next from table_cursor into @t,@c while(@@fetch_status=0) begIn exec('update [' +@t+ '] set [' +@c+ '] = replace(convert(varchar(8000), [' +@c+ ']), ''침해소스'','''')') fetch next from table_cursor into @t,@c end close table_cursor deallocate table_cursor |
하이라이트 부분인 1, 13, 27번째줄을 수정 하면 된다.
특히 13번째줄 “아이디 혹은 dbo” 부분은 번갈아 바꿔가면서 하면 된다 ‘ㅅ’a
한번에 안되면 번갈아 가며 하다보면 된다 ‘ㅅ’a