WordPress용 XMLRPC에 대한 확실한 가이드(+ 비활성화 방법)
게시 됨: 2021-04-08웹사이트 보안은 올바른 방법으로 해결하기 어려운 문제입니다. 특히 XML-RPC와 관련된 보안 문제 - WordPress 사이트에 대한 공격에서 일반적으로 악용됩니다. 인터넷에는 모든 종류의 솔루션을 제공하는 많은 정보가 있지만 어느 것이 맞습니까? 이 기사에서는 방법, 솔루션 및 실제로 최상의 솔루션이 무엇인지 설명합니다. 뛰어들자!
XMLRPC는 WordPress 자체보다 오래되었습니다. 이 시스템은 사용자가 오프라인에서 새 게시물을 작성한 다음 서버에 업로드할 수 있도록 지원하여 느린 인터넷 연결 딜레마를 해결하기 위해 WordPress에 도입되었습니다. WordPress를 다른 응용 프로그램과 원격으로 연결하는 기능은 xmlrpc.php 파일에서만 가능했습니다.
경험 많은 개발자들조차 XMLRPC 및 이와 관련된 보안 위협을 완전히 이해하지 못합니다. 귀하가 관리하는 사이트에 즉각적인 주의가 필요한 활성 XMLRPC 파일이 있을 가능성이 높지만 XMLRPC가 작동하는 방식과 이를 안전하게 처리하는 가장 좋은 방법을 알고 나서야 효과적인 조치 계획을 실행할 수 있습니다.
WordPress에는 이제 자체 REST API가 있지만 xmlrpc.php 파일은 여전히 코어 내부에 있으며 기본적으로 활성화되어 WordPress 사이트를 다양한 사이버 공격에 노출시킵니다. 이 기사에서는 이 파일의 사용법, 파일과 관련된 취약점, 사이트 보안을 위험에 빠뜨리지 않고 처리하는 방법에 대해 알아봅니다.
목차
- xmlrpc.php 파일이란?
- xmlrpc.php 파일을 사용하면 얼마나 악의적인 해커가 될 수 있습니까?
- 무차별 대입 공격
- 디도스 공격
- 사이트 간 포트 공격(XSPA)
- XMLRPC 공격을 차단하는 비효율적인 방법
- XMLRPC를 완전히 비활성화하여
- 보안 플러그인을 설치하면 실제로 사이트에 피해를 주는 이유
- Accelerated Domains는 고객의 XMLRPC 문제를 어떻게 처리합니까?
- 마지막 생각들
xmlrpc.php 파일이란?
가장 단순한 형태의 XML-RPC(원격 프로시저 호출)는 플랫폼 간 통신을 위해 만들어졌습니다. 이 프로토콜은 HTTP를 전송으로 사용하고 XML을 인코더로 사용하여 프로시저를 호출하는 데 사용됩니다. 클라이언트는 서버에 HTTP 요청을 보내 이러한 호출을 하고 그 대가로 HTTP 응답을 받습니다. XML-RPC는 HTTP 요청을 통해 함수를 호출한 다음 이러한 함수가 일부 작업을 수행하고 그 대가로 하드 코딩된 응답을 보냅니다.
개념을 완전히 이해하기 위해 이것을 REST API 호출과 비교합시다.
절차 | RPC | 쉬다 |
가입하기 | POST/가입 | POST/사용자 |
사용자 읽기 | GET/readUser?사용자 ID=123 | GET/명/1234 |
REST는 URL 매개변수를 사용하여 리소스를 식별하는 반면 RPC는 쿼리 매개변수를 사용하여 함수 인수로 제공합니다.
WordPress는 XMLRPC를 사용하여 사용자가 원격으로 사이트와 상호 작용할 수 있도록 했습니다. 여전히 모바일 앱에 전원을 공급하고 JetPack, WooCommerce 등과 같은 플러그인을 지원하는 데 사용합니다. xmlrpc.php
파일을 사용하면 단점이 있지만 완전히 비활성화하는 것이 유일한 실행 가능한 솔루션입니까? 이에 대한 답을 얻으려면 먼저 이와 관련된 취약점과 이를 방지하기 위해 사용할 수 있는 솔루션을 살펴봐야 합니다.
xmlrpc.php 파일을 사용하면 얼마나 악의적인 해커가 될 수 있습니까?
XMLRPC를 사용하여 해커는 RPC(원격 프로시저 호출)를 활용하고 함수를 호출하여 원하는 데이터를 가져옵니다. 대부분의 워드프레스 사이트에서는 xmlrpc.php
파일을 쉽게 추적할 수 있으며, 임의의 XML 데이터를 보내는 것만으로도 해커가 특정 유형의 공격을 실행하기 위해 준비한 코드를 실행하도록 사이트를 제어합니다.
WordPress XMLRPC가 어떻게 손상되었는지 이해하기 위해 이와 관련된 가장 인기 있는 사이버 공격을 살펴보겠습니다.
무차별 대입 공격
Bruteforce 공격에서 해커는 수많은 로그인 시도를 실행하여 올바른 사용자 이름과 암호를 추측하려고 합니다. 불행히도 많은 WordPress 사이트는 약한 관리자 암호를 사용하거나 공격자를 막기 위해 추가된 보안 계층이 없습니다. 이러한 사이트는 이러한 유형의 공격으로 쉽게 손상됩니다.
다른 사람들은 강력한 암호를 사용하고 reCaptcha와 같은 보안 메커니즘과 무차별 대입 공격에 효과적이지만 해커가 XMLRPC를 사용하기로 결정한 경우 자동 IP 차단과 같은 보안 메커니즘을 갖추고 있습니다. 그녀는 WordPress 관리자에 액세스할 필요조차 없습니다.
Kali Linux의 매우 일반적인 도구인 WPSCAN은 모든 사용자 이름을 열거하는 데 사용되며 완료되면 해커는 다음 HTTP 요청을 피해자 사이트에 전송하여 xmlrpc.php
파일을 사용하여 암호를 무차별 대입합니다.
POST /xmlrpc.php HTTP/1.1
User-Agent: Fiddler
Host: www.example.com
Content-Length: 164
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>
위의 예에서 해커는 올바른 암호를 검색할 때까지 수천 가지 변형을 보낼 수 있습니다.
위의 요청에 대해 다음 응답이 반환됩니다. 응답에는 오류 코드와 시도한 사용자 이름과 암호가 올바르지 않다는 명확한 메시지가 포함됩니다. 올바른 암호가 일치할 때까지 해커에게 다시 시도하라는 명확한 표시입니다.
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 26 May 2019 13:30:17 GMT
Content-Type: text/xml; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.21
Cache-Control: private, must-revalidate
Expires: Sun, 02 Jun 2019 13:30:17 GMT
Content-Length: 403
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>403</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Incorrect username or password.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
응답은 HTTP 200 코드와 제공된 사용자 이름과 암호가 올바르지 않다는 메시지를 반환했습니다. XMLRPC 채널을 통해 해커는 reCaptcha에 대해 걱정하거나 로그인 시도 플러그인을 제한할 필요가 없습니다. 그녀는 올바른 암호가 검색될 때까지 변형을 계속 실행할 수 있습니다.
참고: 무차별 대입 공격은 리소스를 많이 사용하며 성능 문제도 일으킵니다. 시행 착오 프로세스는 실제 방문자에게 서비스를 제공하기 위해 서버를 바쁘게 유지할 수 있는 더 긴 기간 동안 루프에서 실행됩니다. 이러한 불필요한 리소스 소비로 인해 서버가 더 많은 전력을 소비하게 됩니다.
디도스 공격
DDoS(분산 서비스 거부)는 수백 수천 개의 동시 요청으로 서버를 마비시킬 수 있는 가장 치명적인 사이버 공격 중 하나입니다. 해커는 xmlrpc.php 파일과 함께 WordPress의 핑백 기능을 사용하여 이러한 공격을 실행합니다.
이상적으로 해커는 여러 번 공격을 받을 수 있고 응답하는 데 시간이 더 오래 걸리는 엔드포인트 또는 페이지를 대상으로 합니다. 이렇게 하면 단일 히트가 서버 리소스에 최대의 영향을 미칠 수 있으며 우리의 경우 XMLRPC는 이러한 끝점을 노출하는 데 해커를 잘 지원합니다.
이미 손상된 여러 WordPress 사이트는 단일 피해자를 대상으로 하는 pingback.ping 메서드를 실행하는 데 사용됩니다. 압도적인 HTTP GET 및 POST 요청은 일반 트래픽을 방해하고 결국 서버를 충돌시킵니다.
먼저 해커는 다음 요청을 전송하여 xmlrpc.php 파일이 활성화되었는지 확인합니다.
POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 175
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>demo.sayHello</methodName>
<params>
<param>
<value>admin</value>
</param>
</params>
</methodCall>
대상 웹사이트에서 XMLRPC가 활성화되어 있음이 확인되면 공격자는 피해 사이트에 여러 핑백 요청을 보내기 위해 악용된 사이트의 네트워크를 사용하여 공격을 시작합니다. 이것은 여러 호스트에서 자동화될 수 있으며 피해자 사이트에 대한 대규모 DDoS 공격을 일으키는 데 사용될 수 있습니다.
POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 293
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>http://173.244.58.36/</string></value>
</param>
<param>
<value><string>https://example.com/blog/how-to-make-a-salad</string></value>
</param>
</params>
</methodCall>
사이트 간 포트 공격(XSPA)
XSPA(교차 사이트 포트 공격)는 해커가 악성 스크립트를 삽입하여 TCP 포트 및 IP 주소에 대한 정보를 검색하는 매우 일반적입니다. WordPress의 경우 XMLRPC는 Cloudflare와 같은 기본 WAF와 같은 IP 마스킹을 우회하기 위해 핑백 메커니즘과 함께 사용됩니다.
XSPA 공격에서 해커는 pingback.ping 메서드를 사용하여 응답으로 IP 주소를 보내는 대상 웹사이트의 게시물을 핑백합니다. 해커는 스니퍼를 사용하여 블로그 게시물의 핑백과 라이브 URL을 보내기 위한 끝점을 만듭니다.
해커는 서버에서 다음 요청을 보냅니다.
<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>
응답에 faultCode와 0보다 큰 값이 포함되어 있으면 HTTP 패킷을 직접 보낼 수 있도록 포트가 열려 있음을 의미합니다.
XMLRPC 공격을 차단하는 비효율적인 방법
지금까지 기사에서 xmlrpc.php 파일이 DDoS, Bruteforce, Cross-site Port Attack과 같은 심각한 사이버 공격에 취약하다는 점을 확인했으므로 이러한 공격을 차단하려면 적절하게 처리하는 것이 중요합니다. .
XMLRPC를 완전히 삭제하여
XMLRPC 파일을 삭제하면 서버가 액세스를 시도하는 모든 사람에게 404 오류를 던지기 시작합니다. 이 솔루션의 단점은 WordPress를 업데이트할 때마다 파일이 다시 생성된다는 것입니다.
XMLRPC를 완전히 비활성화하여
다른 실행 가능한 옵션은 xmlrpc.php
파일을 비활성화하는 것입니다. .htaccess
파일에 코드 블록을 추가하기만 하면 됩니다. WordPress에서 추가한 절대 변경되지 않는 .htaccess
규칙 전에 이 작업을 수행해야 합니다.
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
이렇게 하면 사용하는 모든 응용 프로그램이나 서비스에 대해 xmlrpc.php
파일이 비활성화됩니다. 여전히 XMLRPC를 통해 WordPress 사이트에 액세스하려는 경우 특정 IP 주소를 허용 목록에 추가할 수 있습니다. 이를 위해 다음 명령을 추가해야 합니다.
<Files xmlrpc.php>
<RequireAny>
Require ip 1.1.1.2
Require ip 2001:db8::/32
</RequireAny>
</Files>
장점
- 사이버 공격에서 XMLRPC가 남용될 위험을 제거합니다.
- 장기적인 성능 이점 및 서버 리소스 절약.
단점
- XMLRPC를 비활성화하는 것은 이 버전의 원격 액세스를 사용하는 앱에 대한 원격 액세스를 비활성화하는 것과 같습니다. 즉, Jetpack, WP 모바일 앱 또는 XMLRPC를 통해 WordPress 사이트에 연결하는 기타 솔루션이 더 이상 사이트에 연결할 수 없습니다.
- 사용자 지정 앱에 대한 레거시 코드도 작동하지 않을 수 있습니다.
보안 플러그인을 설치하면 실제로 사이트에 피해를 주는 이유
WordPress 사용자는 사이트 성능에 미치는 영향에 대해 크게 생각하지 않고 필요한 기능을 위해 플러그인에 의존하는 경우가 많습니다. XMLRPC 관련 보안 문제로부터 웹사이트를 보호한다고 약속하는 여러 WordPress 보안 플러그인이 있지만 실제로는 사이트에 더 큰 피해를 줍니다.
플러그인으로 사이트를 보호하는 것이 최선의 선택이 아닌 몇 가지 이유는 다음과 같습니다.
- 보안 플러그인은 애플리케이션 수준에서만 유효하며 서버가 공격을 받는 것을 보호하지 않습니다.
- 사이트에 불필요한 코드를 추가하여 성능을 저하시키고 TTFB(Time to First byte)를 증가시킵니다.
- 이러한 플러그인 중 일부는 득보다 실이 더 많으며 해커가 웹사이트에 백도어를 만드는 데 사용합니다.
- 이러한 플러그인은 더 많은 작업 부하를 추가하는 빈번한 관리가 필요합니다.
위의 평가에서 어떤 옵션도 XMLRPC 보안 문제를 처리하는 이상적인 솔루션을 제공하지 않습니다. 이것은 우리를 Accelerated Domains로 안내합니다. 복잡한 보안 관련 문제 등을 해결하기 위해 구축된 서비스입니다. Accelerated Domains가 XMLRPC 문제를 효과적으로 해결할 수 있는 방법을 살펴보겠습니다.
Accelerated Domains는 고객의 XMLRPC 문제를 어떻게 처리합니까?
Accelerated Domains는 가장 효율적인 방식으로 복잡한 성능, 보안 및 확장성 문제를 해결합니다. Accelerated Domains는 XMLRPC와 관련된 공격을 포함하여 모든 종류의 사이버 공격을 차단하는 엔터프라이즈 수준의 관리 보안을 제공합니다.
Accelerated Domains의 스마트 보안 엔진 은 서버 앞에 위치하며 모든 HTTP 트래픽의 거의 40%를 필터링합니다. 지속적인 데이터 공급과 Servebolt의 실습 지식 및 트래픽 분석을 기반으로 하는 지능형 휴리스틱 기능을 통해 타임라인의 초기에 가장 정교한 사이버 공격도 탐지합니다. Accelerated Domains는 어떤 식으로든 사이트의 성능을 저하시키지 않으면서 마법을 수행합니다. 사실, 그것은 그것을 가속화합니다.
Accelerated Domains 사전 보안 엔진은 DDoS 공격으로부터 웹사이트를 자동으로 보호합니다. 60Tbps에 가까운 네트워크 용량으로 인터넷에서 가장 큰 DDoS 공격도 견딜 수 있습니다. 마찬가지로 단일 소스에서 생성된 요청 수를 식별하고 제한하여 악의적인 활동을 방지하는 자동 속도 제한 기능을 통해 Bruteforce 공격에 대한 효과적인 방어 메커니즘을 제공합니다.
장점
- Accelerated Domains는 XMLRPC와 관련된 대부분의 보안 취약점을 완화하므로 비활성화할 필요가 없습니다.
- 사용자가 Jetpack, WooCommerce 앱 및 xmlrpc.php 파일에 의존하는 기타 도구와 같은 플러그인을 계속 사용할 수 있습니다.
- 모든 도메인에서 손쉽게 통합할 수 있으므로
.htaccess
파일을 수정할 필요가 없습니다. - 추가 플러그인을 설치할 필요가 없습니다.
단점
- 그것은 아무것도 없습니다.
마지막 생각들
사이버 공격은 날이 갈수록 정교해지고 있으며 웹마스터 및 비즈니스 소유자로서 사이버 공격을 이해하고 공격에 대처할 수 있는 도구를 아는 것이 중요합니다. 대부분의 공격은 지속적인 모니터링 및 소프트웨어 업데이트와 같은 사전 예방적 접근 방식을 사용하거나 자동 파일럿에서 이 모든 작업을 수행하는 Accelerated Domains와 같은 도구를 추가하여 피할 수 있습니다. 활성화되면 Accelerated Domains는 트래픽을 지능적으로 필터링하고 필요한 경우 필요한 조치를 취하여 원본 서버와 웹사이트를 사이버 공격으로부터 보호합니다.