🇰🇷 한글 설명
WP Review Slider Pro 플러그인 12.7.2 이하 버전의 wprp_load_more_revs AJAX 액션에서 notinstring 매개변수가 SQL 쿼리에 직접 연결되어 SQL 인젝션이 발생합니다. 인증되지 않은 공격자도 공개 페이지에 노출된 nonce를 이용해 시간 기반 블라인드 인젝션으로 데이터베이스 정보를 추출할 수 있습니다.
💡 쉬운 설명
사이트 방문자가 볼 수 있는 페이지의 입력값을 조작해 웹사이트 데이터베이스의 내용을 몰래 빼낼 수 있는 취약점입니다. 로그인 없이도 공격이 가능해 위험도가 높습니다.
🇺🇸 원문 (English)
The WP Review Slider Pro plugin for WordPress is vulnerable to SQL Injection via the 'notinstring' parameter of the wprp_load_more_revs AJAX action in versions up to, and including, 12.7.2. The parameter is read via $_POST['notinstring'] and passed through sanitize_text_field() — which strips HTML and whitespace but does not provide SQL safety. The value is then concatenated directly into a numeric/unquoted `AND id NOT IN (...)` clause and executed via $wpdb->get_results() without $wpdb->prepare() or intval() casting. Because the value sits in an unquoted numeric context, WordPress's wp_magic_quotes protection (which only escapes embedded quotes) is ineffective. The AJAX hook is registered via wp_ajax_nopriv_wprp_load_more_revs, and the required check_ajax_referer nonce is publicly available via wp_localize_script on any frontend page that renders the plugin shortcode, so an unauthenticated attacker who can reach a public page hosting the plugin can extract arbitrary data from the database via blind/time-based injection.
📍 영향받는 시스템
WP Review Slider Pro 플러그인 12.7.2 이하 버전이 설치된 WordPress 사이트
⚔️ 공격 벡터
공개 페이지의 nonce를 수집한 뒤 wprp_load_more_revs AJAX 요청의 notinstring 매개변수에 시간 지연 SQL 구문을 삽입해 데이터를 추출
🛡️ 대응 방법
플러그인을 12.7.3 이상 최신 버전으로 업데이트하거나 해당 기능을 비활성화하고, 입력값을 intval 또는 $wpdb->prepare()로 처리하도록 패치
🔧 검증 코드
출력된 버전이 12.7.2 이하이면 취약하며, 12.7.3 이상이면 패치된 버전으로 판단합니다.
wp plugin get wp-review-slider-pro --field=version 2>/dev/null || grep -i 'Version' wp-content/plugins/wp-review-slider-pro/*.php 2>/dev/null | head -1