갑작스러운 이상 현상, 누군가 해킹한 걸까?
하루는 제 블로그에 접속해보니, 이상한 일이 벌어졌습니다. 사이트에 접속하자마자 전혀 모르는 해외 광고 페이지로 자동 리디렉션이 되는 겁니다. 처음엔 ‘브라우저 문제인가?’ 싶어서 다른 기기로 접속해봤지만, 똑같이 엉뚱한 페이지로 연결되더라구요. 시크릿모드로 접속해봐도 여전히 같은 문제였습니다. 처음엔 스트레스를 엄청 받았는데 계속 그렇게 되다 보니 정말로 사이트가 해킹당한 게 아닐까 하는 두려움이 밀려왔습니다.
워드프레스는 오픈소스라 해킹에 취약하다는 이야기를 들은 적이 있어 더욱 걱정됐습니다. 저는 즉시 사이트 점검에 나섰습니다.
증상을 통해 원인 파악해보기
처음 의심한 것은 테마나 플러그인 쪽이었습니다. 관리자로 로그인해서 HTML 구조를 살펴보니, 특정 광고 스크립트가 페이지 하단에 삽입되어 있었습니다. 제가 작성하지 않은 코드였고, 외부 도메인으로 연결되는 JavaScript였습니다.
이런 경우는 보통 다음과 같은 원인에서 발생한다고 합니다.
- 오래된 플러그인을 통한 악성 코드 유입
- 불법 테마 또는 무료 테마에서 삽입된 광고 스크립트
- wp-config.php 또는 index.php 파일 변조
- 데이터베이스 내 포스트 내용에 직접 삽입된 경우
저는 특히 최근 설치한 무료 테마와 이전부터 비활성화한 채 방치된 플러그인 때문에 그런건 아닌지 생각했습니다.
보안 플러그인으로 전체 점검하기
먼저 ‘Wordfence Security’라는 보안 플러그인을 설치했습니다. 이 플러그인은 워드프레스 파일 구조 전체를 스캔해서 변경된 파일이나 의심되는 코드를 표시해줍니다.
스캔 결과, 테마 디렉토리 내의 functions.php 파일에 외부 스크립트를 삽입하는 코드가 포함되어 있다는 것을 발견했습니다. 또한 wp-content 경로 아래 일부 파일이 자동 생성되어 있었고, 이상한 코드가 숨겨져 있었습니다.
저는 바로 해당 테마를 삭제하고, 보안 플러그인을 통해 전체 악성 파일을 정리했습니다.
데이터베이스 내 코드 삽입 여부도 확인
한 가지 놓치기 쉬운 부분은 데이터베이스에 삽입된 악성 코드입니다. 이건 저한테 꽤 어려운 부분이어서 거의 하루 종일 씨름한 부분인데요, ‘Better Search Replace’라는 플러그인을 활용해 <script, iframe, base64_ 같은 문자열이 포함된 콘텐츠를 검색한 결과, 예전 게시물 일부에 광고 코드가 숨겨져 있던 것을 찾아냈습니다. 해당 게시물의 HTML 코드를 수동으로 정리해 문제를 해결했습니다. 이 덕분에 공부가 많이 되긴 했는데 여러분도 저와 비슷한 문제라면 데이터베이스를 꼭 확인하셔야 합니다.
사이트 복구 후 추가로 한 일들
해킹 문제를 겪고 나서 다음과 같은 보안 조치를 추가로 취했습니다.
- 모든 플러그인과 테마 최신 상태로 유지
- 관리자 비밀번호를 복잡하게 변경하고, 2단계 인증 활성화
- wp-config.php 파일 권한 설정 및 wp-admin 접근 제한
- Cloudflare 보안 설정 강화
또한 자동 백업 플러그인인 UpdraftPlus를 설치해 주기적으로 사이트 전체를 백업해두고 있습니다. 만약 또다시 문제가 발생하더라도, 빠르게 복구할 수 있게 된 것이죠. 저는 비밀번호만 잘 안전하게 유지하면 된다고 생각했는데 의외로 테마 때문에 해킹됐단 사실에 놀랐습니다.
해킹이 아니라 테마 광고였던 충격적인 진실
결국 이번 문제의 근본 원인은 엄밀히 말하면 해킹이 아닌, 무료 테마에 삽입된 광고 스크립트였습니다.
해커의 공격은 아니었지만, 방문자에게는 악성 광고로 보일 수밖에 없었고, 이는 사이트 신뢰도에 심각한 타격을 줄 수 있었습니다.
워드프레스의 유료 테마가 괜히 존재하는 게 아니었습니다.
무료 테마나 검증되지 않은 출처의 플러그인은 예상치 못한 문제를 일으킬 수 있다는 사실을 뼈저리게 느꼈습니다. 이후로는 제너레이트프레스 유료 테마를 구매하여 안전하게 사이트를 운영하고 있습니다.
마무리하며 – 워드프레스 보안, 무조건 챙기셔야 합니다
이번 일을 겪고 나서 워드프레스 보안은 절대 소홀히 해서는 안 된다는 사실을 깨달았습니다.
사이트가 열리지 않거나, 이상한 페이지로 넘어가는 순간 방문자는 돌아오지 않습니다. 피싱사이트로 인식되면 절대 들어오지 않죠. 저도 그렇거든요.
지금 이 글을 읽고 계시다면, 단 한 번이라도 보안 점검을 하시길 권해드립니다.
무료 테마, 오래된 플러그인, 관리자 계정 보안은 특히 주의가 필요합니다.
지금 당장은 아무 문제가 없더라도, 나중에 문제가 생겼을 때 복구하는 시간과 비용은 훨씬 더 큽니다. 심지어 새로 워드프레스를 깔아야 하는 경우도 생깁니다. 문제 없을 때 미리미리 백업도 하고 소 잃고 외양간 고치는 일은 없었으면 합니다. 화이팅요!