사이트 내 전체검색
PHP
[MS-SQL] SQL 인젝션으로 인한 홈페이지 내 악성코드 삽입피해 (2008-12-27 수정)
로빈아빠
https://cmd.kr/php/715 URL이 복사되었습니다.

본문

1. 피해 현상

1) 홈페이지 초기화면에 정적(Static)으로 악성코드가 은닉되는 것이 아니라,  데이터베이스 내 악성코드 링크를 삽입함으로써 해당 데이터베이스와 연동된 게시판, 상품정보 등 웹 페이지에 악성코드가 동적(Dynamic)으로 삽입됨

※ 해당 해킹도구는 일부 웹 보안 장비의 보안기능을 우회할 수도 있으므로 주의가 필요




2. 원인

1) 게시판이나 회원 인증 등 웹서비스와 데이터베이스가 연동되는 부분에서 전달되는 인자값에 대한 검증절차 부재로 인해 악의적인 SQL 명령어 주입이 가능하게 됨 (SQL Injection 취약점)

2) 특히, 최근에는 웹 사이트를 통해 유포되는 악성코드는 쿠키 등 HTTP 헤더정보를 통해서도 삽입되고 있고, 일부 웹 보안장비의 보안기능을 우회할 수도 있으므로 각별한 주의가 필요




3. (피해 발생시) 복구방법

1) 데이터베이스 백업본 사용
  - 데이터베이스 백업본이 있을 경우 복구에 활용
2) 악성코드가 삽입된 테이블을 모두 찾아 SQL명령문으로 복구
  - 반드시 데이터베이스 관리자/개발자와 충분히 검토한 후에 적용 요망
  - 자료형 변환이 필요 없는 경우 replace함수만으로 복구 가능

Update [테이블명] set [컬럼명]=replace([컬럼명], 2008-11-06‘[삭제하고자하는 악성코드 문자열]’, ‘’)
예1> Update bbs set content = replace(content, , ‘’)
예2> update bbs set content = replace(content,'<script src=http://xxx.com/s.js></script>','')


  - 자료형 변환이 필요한 경우는 cast함수를 이용하여 복구

Update [테이블명] Set [컬럼명] = replace(cast([컬럼명] as varchar(8000)), ‘[삭제하고자하는 악성코드 문자열]’, ‘’)
예1> Update bbs Set content = replace(cast(content as varchar(8000)),‘ , ‘’)
예2> Update bbs Set content = replace(convert(varchar(8000),content),‘<script src=http://xxx.com/s.js></script>', ‘’)


  ※ 컬럼의 자료형(data type)이 ntext, image 등인 경우 cast함수를 사용하여 자료형
      변환 후 replace가능하지만, replace를 위한 변수 공간(varchar(8000)) 보다
      큰 자료의 경우 자료 손실이 발생 할 수 있으므로 주의 요망.
      MS SQL 2005 이상에서는 varchar(max) 사용 가능


  - MS SQL 서버에서 사용하는 큰값 자료형 참조 자료
    a. 큰 값 자료형 설명 (바로가기)
    b. UPDATETEXT 설명 (바로가기)

3) 쿼리분석기에서 확인하기
select board_idx,b_content from tblNotice where b_content like '%script%'

4. 예방대책

1) 근본적인 해결을 위해 모든 변수값에 유효값 검증 절차 적용
2) 웹사이트에서 사용하는 DB권한의 최소화 및 SA계정 사용 제한 등의 SQL서버 최적화
3) 웹 보안 솔루션 도입 및 정책 최적화
  - MS URLscan 관련 자료
    a. URLscan 사용방법 (바로가기)
    b. URLscan 다운로드 (바로가기)
    ※ URLscan은 웹방화벽과 유사하며 서버로 전달되는 값들의 필터링 기능이 지원됨

  - 공개웹방화벽 관련 자료
    a. 사용자 커뮤니티 : "www.securenet.or.kr" > 열린지식 > 공개웹방화벽커뮤니티
    ※ WebKnight에서는 헤더설정의 Injection공격 차단이 설정되어 있어야 차단 가능하며,
        오탐발생이 예상되므로, 적용 후 일정기간 모니터링 필요






4) 웹사이트 보안 강화 가이드
  - 웹보안 4종 가이드: "www.KrCERT.or.kr" 접속 > 웹보안 4종 가이드
5) 웹사이트 취약점 점검
  - KISA 무료 웹취약점점검 서비스 (바로가기)
    ※ 비영리단체 또는 중소기업등의 정보보호취약계층만 서비스 대상임
  - MS 소스코드 검사 도구 (바로가기)
  - HP 점검 도구 (바로가기)
6) MS SQL서버에서 sysobjects 또는 syscolumns 권한을 제거하여 악성코드 삽입 스크립트 실행을 차단가능



참고자료
http://www.boho.or.kr
http://duck.pe.kr/43 
http://www.dbguide.net/dbqa/dbqa111003.jsp?catenum=28&page=1&idx=9052 

댓글목록

등록된 댓글이 없습니다.

PHP
871 (5/18P)

Search

Copyright © Cmd 명령어 18.222.56.251