🇰🇷 한글 설명
WordPress용 Planyo Online Reservation System 플러그인 3.0 이하 버전에서 서버 측 요청 위조(SSRF)를 통한 로컬 파일 포함(LFI) 취약점이 발견되었습니다. ulap.php 파일이 인증 없이 접근 가능한 AJAX 프록시 역할을 하며, URL 프로토콜 검증 미흡으로 인해 공격자가 file:// 스킴을 사용하여 서버의 민감한 파일을 읽을 수 있습니다.
💡 쉬운 설명
해커가 특수한 주소를 입력하여 웹사이트 서버 안에 저장된 비밀번호 파일이나 설정 파일을 몰래 훔쳐볼 수 있는 보안 약점입니다. 인증 절차 없이도 서버 내부의 중요한 정보를 외부로 유출시킬 수 있어 위험합니다.
🇺🇸 원문 (English)
The Planyo Online Reservation System plugin for WordPress is vulnerable to Server-Side Request Forgery leading to Local File Inclusion in all versions up to, and including, 3.0. The ulap.php file acts as an AJAX proxy and is directly accessible without WordPress bootstrapping or any authentication. The send_http_post() function validates the host of the provided URL against an allowlist that includes 'localhost', but critically fails to validate the URL scheme/protocol. This makes it possible for unauthenticated attackers to supply a file:// URL (e.g., file://localhost/etc/passwd) which bypasses the host allowlist check because parse_url() returns 'localhost' as the host. The URL is then passed to curl_init() or fopen(), both of which support the file:// protocol, allowing the attacker to read arbitrary local files on the server and have their contents returned in the HTTP response. This can lead to disclosure of sensitive files such as /etc/passwd, wp-config.php (containing database credentials and authentication keys), and other server-side files.
📍 영향받는 시스템
Planyo Online Reservation System plugin for WordPress (버전 3.0 및 그 이하 모든 버전)
⚔️ 공격 벡터
인증되지 않은 공격자가 ulap.php에 file:// 프로토콜을 포함한 악의적인 URL을 전송하여 서버 내부 파일을 탈취
🛡️ 대응 방법
플러그인을 최신 버전으로 업데이트하거나, ulap.php 파일에 대한 직접적인 접근을 차단하고 URL 프로토콜 검증 로직을 강화해야 합니다.
🔧 검증 코드
명령어 결과에 Planyo 관련 플러그인이 나타나고 버전이 3.0 이하인 경우 취약할 가능성이 높습니다.
wp plugin list --status=active | grep -i 'planyo'