SQL 인젝션을 당했는지 확인 및 일괄삭제 > 기술자료 | 해피정닷컴

SQL 인젝션을 당했는지 확인 및 일괄삭제 > 기술자료

본문 바로가기

사이트 내 전체검색

SQL 인젝션을 당했는지 확인 및 일괄삭제 > 기술자료

MSSQL SQL 인젝션을 당했는지 확인 및 일괄삭제

페이지 정보


본문

검색 쿼리와 추가된 <script 등을 제거해주는 쿼리입니다.
아래의 쿼리를 돌리기 전에 해당 DB로 가셨어 각 DB마다 확인을 하신 후 발견되시면 제거해주면 됩니다.


* Script 삽입 공격을 당했는지 확인하는 쿼리

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 ('select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%''');
-- print 'select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%'''

FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;





* 위의 공격을 당했을 때 복원하는 쿼리 (100% 다 되는 것은 아님 - 별도 확인 필요)
* 해킹 시 길이가 긴 경우에는 짤리고 들어가는 현상이 발생함 - 이 경우에는 복원을 해도 원상복구가 안됨
* 백업 받은 것을 복원하는 수 밖에는 없음

[ 방법 1 ]
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+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script src=http://xxx.com/s.js></script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;

[ 방법 2]
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+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script%</script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;



* 일괄 삭제후 Script 삽입 공격을 당했는지 확인하는 쿼리 로 검색결과




참고자료
http://saybox.tistory.com/453 
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=e09r73HUi2TsjbBq+N+3LM/EjZrEhTeH&qb=c3FsIMDOwae8xyC+x7y6xNq15SC6ubG4&enc=euc-kr&pid=flLVeloi5TNsstGUupwsss--043004&sid=SgI4dJ4WAkoAACTPbRs

댓글목록

등록된 댓글이 없습니다.


Total 74건 3 페이지
  • RSS
기술자료 목록
34
MSSQL   25753  2010-09-01 16:11 ~ 2020-03-11 09:55  
33
MSSQL   15144  2010-08-05 08:11  
32
MSSQL   18662  2010-08-05 04:21  
31
MSSQL   21890  2010-04-26 22:35  
30
MSSQL   15766  2010-04-07 14:01 ~ 2017-09-22 00:00  
29
MSSQL   17631  2010-04-03 17:25  
28
MSSQL   14234  2010-01-15 11:47  
27
MSSQL   15058  2009-11-11 19:46  
26
MSSQL   18726  2009-09-25 06:08  
25
MSSQL   35052  2009-09-24 22:49  
24
MSSQL   21002  2009-09-24 20:55 ~ 2017-02-15 00:00  
23
MSSQL   15291  2009-09-24 20:03  
22
MSSQL   42241  2009-07-27 07:33  
21
MSSQL   40870  2009-07-27 07:28  
20
MSSQL   17519  2009-07-22 18:52  
19
MSSQL   17735  2009-06-22 10:25  
18
MSSQL   21513  2009-06-16 03:24 ~ 2017-04-02 00:00  
열람
MSSQL   16542  2009-05-08 09:43  
16
MSSQL   18299  2009-05-08 08:28  
15
MSSQL   20955  2009-01-28 03:15  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.