본문 바로가기

프로그램&DB/MS-SQL

Mass SQL 인젝션으로 삽입된 악성코드 일괄 삭제

Mass SQL 인젝션으로 삽입된 악성코드 일괄 삭제 하기!

최근 쿠키 취약점을 토대로 들어오는 Mass SQL 인젝션의 경우, 기존 DB 내용을 변조하지 않고, 악성코드가 덧붙여 삽입되는 형식이기 때문에 악성코드 일괄 삭제 쿼리로 손쉽게 정상 상태로 복원이 가능하다. 하지만 SQL 인젝션 특성 상 언제 또 코드가 바뀔지 모르는 일이기 때문에 현재에 안주해서는 안 된다. 반드시 웹 취약점을 보완해야 한다는 것을 명심하시길…

SQL 인젝션으로 인해 DB 내용이 변조되었을 때 SQL 인젝션 코드를 역으로 이용하여 악성코드만 삭제하는 쿼리다. 참고로 DB 내용의 일부분이 손상 및 변조되고, 악성코드가 그 자리에 치환되는 수법이라면 정상 상태로 복원되지 않는다.

당시 이 쿼리를 만들기 위해 여러 웹사이트들을 참조했었는데 죄송스럽게도 지금은 정확하게 기억이 나지 않아서… (만일, 본인이 만들었던 스크립트라면 댓글 부탁 드립니다. 출처 명시해 드리겠습니다.)

이하 주의 사항 입니다.

이 스크립트의 단점이라 하면 로그인 아이디가 해당 DB에 DBO 권한을 가지고 있어야 하며 테이블의 소유자가 DBO로 설정되어 있어야 합니다. 물론 그 부분를 보안하기 위해 추가 처리가 되어있긴 합니다만, 필히 참고해 주셔야 하는 부분이므로 미리 공지합니다. 또한 SA 계정이나 윈도우즈 로그인 등을 통해 DB 서버의 최상위 권한으로 쿼리를 실행시켜 주어야 합니다. 그 외 중요한 부분들은 주석으로 설명이 되어 있으니 필히 주석을 참고해 주십시오. 궁금하신 사항들은 댓글로 부탁 드립니다.

이미 로그인 아이디가 DBO 권한을 가지고 있고, 테이블의 소유자가 DBO로 설정되어 있는 경우와 그렇지 않을 경우로 나누어 SQL 파일을 공개합니다. 다운로드에 유념해 주시기 바라며 실제 스크립트를 돌리시기 전에는 미리 원본 DB를 반드시 백업 받아 두세요.

 [다운로드1] 로그인 아이디가 해당 DB의 DBO 권한을 가지고 있고, 테이블의 소유자가 DBO로 설정되어 있는 경우.

 [다운로드2] 로그인 아이디가 해당 DB의 DBO 권한을 가지고 있지 않고, 테이블의 소유자 역시 해당 로그인 아이디로 설정되어 있는 경우.

 

이상입니다. 그럼~