본문 바로가기

OS 관련/SQL 관련

MASS SQL Injection 에 대한 DB 복구



MASS SQL Injection 에 당해서 피해보는 사례가 많은것 같습니다.

그래서 요즘 이런 형태 분석에 많은 시간을 투자하고 있네요..

참고가 될까 해서 올립니다.(마지막이 될듯...)

 

아래 쿼리를 실행시키면 MASS SQL Injection로 당한 DB에서 악성코드 문자열을 제거합니다.

 

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+ ']), ''<script src=http://www.killpp.cn/m.js></script>'','''')')
fetch next from table_cursor into @t,@c

end

close table_cursor
deallocate table_cursor


굵은 폰트 부분이 악성 스크립트 입니다.

굵은 폰트 부분을 DB에서 지우는 쿼리입니다.

 

그렇지만 완전 복구는 불가능 합니다.

왜냐하면 공격이 성공하면서 데이터가 짤려서 업데이트가 되기 때문입니다.

쉽게예기해서 '인터넷 보안커뮤니티 시큐리티플러스 입니다.' 라는 컬럼은

'인터넷 보안커뮤니티 시큐리티플<script src=http://www.killpp.cn/m.js></script>' 로 업데이트가 됩니다.

30바이트 이후의 데이터 '러스 입니다.' 는 삭제되는 거죠..,

안습이네요..

 

결국 백업받은 데이터를 가지고 복구할 수 밖에 없습니다.

반응형