🇰🇷 한글 설명
WordPress용 Sentence To SEO 플러그인이 'Permanent keywords' 필드에서 입력값을 제대로 검증하지 않아 저장된 XSS 취약점이 발생합니다. 관리자 이상 권한의 인증된 공격자가 임의의 JavaScript를 삽입할 수 있으며, 플러그인 설정 페이지에 접근하는 다른 사용자들의 브라우저에서 이 코드가 실행됩니다.
💡 쉬운 설명
WordPress SEO 플러그인에서 관리자 입력값이 검증 없이 저장되고 출력되어, 악의적인 코드를 주입할 수 있는 보안 결함입니다. 플러그인 설정 페이지를 방문하는 사용자들이 공격자의 스크립트에 노출될 수 있습니다.
🇺🇸 원문 (English)
The Sentence To SEO (keywords, description and tags) plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'Permanent keywords' field in all versions up to and including 1.0. This is due to insufficient input sanitization and output escaping. The plugin reads user input via filter_input_array(INPUT_POST) which applies no HTML sanitization (FILTER_DEFAULT), stores it unsanitized to the WordPress options table via update_option(), and then outputs the stored value directly into a textarea element without any escaping using PHP short echo tags (<?= ?>). An attacker can break out of the textarea element using a closing </textarea> tag and inject arbitrary HTML/JavaScript. This makes it possible for authenticated attackers, with administrator-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses the plugin's settings page.
📍 영향받는 시스템
Sentence To SEO plugin for WordPress version 1.0 and all prior versions
⚔️ 공격 벡터
Authenticated administrator injects malicious JavaScript via the 'Permanent keywords' field, which executes in browsers of users accessing the plugin settings page
🛡️ 대응 방법
Update plugin to patched version or remove/disable the plugin until security update is available
🔧 검증 코드
명령어가 플러그인 디렉토리 경로를 반환하면 취약한 플러그인이 설치된 것이며, 해당 디렉토리의 readme.txt에서 버전이 1.0 이하인지 확인하면 됩니다.
find / -path '*/wp-content/plugins/sentence-to-seo' -type d 2>/dev/null | head -1 && echo 'Plugin found - check version' || echo 'Not installed'