WordPress xmlrpc 취약점

728x90

WordPress xmlrpc 취약점이란?

  • XML-RPC는 XML(eXtensible Markup Language)을 사용하여 원격 프로시저 호출(RPC; Remote Procedure Call)을 수행하는 프로토콜
  • 해당 프로토콜을 사용하여, 원격으로 모바일 앱에서 포스팅을 하거나 다른 블로그와 콘텐츠를 연결하는 등의 작업이 가능합니다.
  • 현재는 더 발전된 REST API로 대체되어 사용이 권장되지 않으며, 오히려 심각한 보안 위협의 경로로 악용되고 있습니다.

주요 공격 유형

XML-RPC 취약점은 주로 두 가지 형태의 사이버 공격에 악용됩니다.

1. 무차별 대입 공격 (Brute-Force Attacks)

공격자는 xmlrpc.php 파일의 system.multicall 기능을 이용해 단 한 번의 HTTP 요청으로 수백, 수천 개의 사용자 이름과 비밀번호 조합을 테스트할 수 있습니다. 이는 일반적인 로그인 페이지를 통한 공격보다 훨씬 효율적입니다.

  • 공격 방식: 일반적인 로그인 시도는 실패 시 매번 새로운 연결을 시도해야 하지만, XML-RPC를 이용하면 하나의 요청 패킷 안에 여러 개의 로그인 정보를 담아 보낼 수 있습니다.
  • 위험성: 서버의 보안 시스템이 이를 단일 요청으로 인식하여 비정상적인 로그인 시도를 탐지하기 어렵게 만듭니다. 이로 인해 관리자 계정이 탈취될 위험이 크게 증가합니다.

2. 핑백(Pingback)을 이용한 디도스(DDoS) 공격

워드프레스의 핑백 기능은 다른 블로그가 내 글을 링크했을 때 알림을 주는 기능으로, 이 과정에서 xmlrpc.php가 사용됩니다. 공격자는 이 기능을 악용하여 대량의 워드프레스 사이트들을 좀비 PC처럼 이용, 특정 타겟 사이트를 공격하는 DDoS 공격을 감행할 수 있습니다.

  • 공격 방식: 공격자는 수많은 정상적인 워드프레스 사이트의 xmlrpc.php 파일에 "핑백 요청"을 보냅니다. 이때 요청의 반사 지점(피해를 입힐 주소)을 공격 대상의 서버 주소로 지정합니다.
  • 위험성: 수많은 워드프레스 사이트들이 동시에 공격 대상 서버로 요청을 보내게 되어 해당 서버에 과부하를 일으키고, 결국 서비스 장애 또는 서버 다운으로 이어집니다. 이 공격은 공격자의 IP를 숨기기 용이하여 추적이 어렵습니다.

대응방안

XML-RPC 기능이 더 이상 필요하지 않은 대부분의 최신 워드프레스 사이트에서는 이 기능을 비활성화하는 것이 가장 확실하고 강력한 보안 조치입니다.

1. 플러그인을 이용한 비활성화 (가장 쉬운 방법)

가장 간편한 방법은 보안 플러그인을 설치하여 XML-RPC 기능을 차단하는 것입니다.

  • 추천 플러그인:
    • Disable XML-RPC-API: 설치하고 활성화하는 것만으로 XML-RPC와 관련된 모든 기능을 효과적으로 비활성화합니다.
    • iThemes Security: 종합 보안 플러그인으로, 'WordPress Tweaks' 설정에서 XML-RPC를 비활성화할 수 있습니다.
    • Wordfence Security: 방화벽 기능의 일부로 XML-RPC를 통한 공격을 탐지하고 차단하는 규칙을 제공합니다.

2. .htaccess 파일을 수정하여 접근 차단 (웹서버 설정)

웹서버 설정 파일을 직접 수정하여 xmlrpc.php 파일에 대한 모든 외부 접근을 원천적으로 차단할 수 있습니다. (Apache 웹서버 기준)

워드프레스 설치 루트 디렉터리의 .htaccess 파일에 아래 코드를 추가합니다.

(Apache)
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>

3. 테마의 functions.php 파일에 코드 추가

사용 중인 테마의 functions.php 파일에 아래 코드를 추가하여 XML-RPC 기능을 비활성화할 수 있습니다. 단, 이 방법은 테마가 업데이트되면 설정이 초기화될 수 있으므로 차일드 테마(Child Theme)를 사용하는 것이 좋습니다.

add_filter('xmlrpc_enabled', '__return_false');

이 코드는 워드프레스 필터를 이용해 XML-RPC 기능을 꺼주는 역할을 합니다.

취약점 점검

자신의 웹사이트가 XML-RPC 공격에 노출되어 있는지 확인하려면, XML-RPC Validator와 같은 온라인 도구를 사용할 수 있습니다. 웹사이트 주소를 입력했을 때 "Congratulations! Your site passed the first and most important test..."와 같은 성공 메시지가 나타나면 XML-RPC가 활성화된 상태이므로 조치가 필요합니다. 반대로 오류 메시지가 나타나면 비활성화된 것입니다.

결론적으로, xmlrpc.php는 과거에는 유용한 기능이었지만 이제는 보안상의 큰 구멍으로 남아있습니다. 특별한 이유가 없다면 반드시 비활성화하여 소중한 웹사이트를 안전하게 보호하시기 바랍니다.

참고자료