CVE-2025-22662

2025. 1. 30. 18:44·Report/Zero-Day

Component type

WordPress plugin

 

Component details

Component name: SendPulse Email Marketing Newsletter

Vulnerable version: <=2.1.5

Component slug: sendpulse-email-marketing-newsletter

Component link: https://wordpress.org/plugins/sendpulse-email-marketing-newsletter/

 

SendPulse Email Marketing Newsletter

Add e-mail subscription form, send marketing newsletters and create autoresponders.

wordpress.org

 

OWASP 2017: TOP 10

Vulnerability class A3: Injection

Vulnerability type: XSS

 

Pre-requisite

Contributor+

 

Vulnerability details

Short description

SendPulse Email Marketing Newsletter 플러그인은 SendPulse를 위한 WordPress 플러그인으로, 웹사이트에 이메일 구독 폼을 추가할 수 있도록 도와준다. 새로운 구독자가 추가되면 자동으로 이메일 리스트에 등록되며, SendPulse 플랫폼을 통해 이메일 캠페인을 생성하고 보낼 수 있다. 해당 플러그인 2.1.5 버전 이하에서는 뉴스 폼을 추가하는 부분에서 Stored XSS 취약점이 발생한다.

 

How to reproduce (PoC)

1. SendPulse Email Marketing Newsletter 플러그인 2.1.5 이하 버전이 활성화된 워드프레스 사이트를 준비한다.

2. 최소 권한인 contributor 계정으로 로그인하고 플러그인 페이지에서 뉴스 폼 추가 버튼을 클릭한다.

 

3. textarea에 아래 코드를 넣고 저장한다.

</textarea><script>alert('XSS');</script>

 

4. 이후 admin 계정으로 변경하고 contributor로 작성한 폼의 Edit 버튼을 클릭한다.

 

5. 편집 페이지에서 XSS가 트리거 된 것을 확인할 수 있다.

 

Additional information (optional)

class-senpulse-newsletter-forms.php에서 save_meta 메서드에서 사용자 입력값인 save_meta 메서드에서 사용자 입력값인 $_POST['sp_form_code']가 검증 없이 그대로 데이터베이스에 저장되고 있다. 다음으로, 편집 페이지인 code_metabox_output 메서드에서, 데이터베이스에서 가져온 값 $code를 필터링 없이 그대로 출력하고 있기 때문에 저장된 스크립트가 브라우저에서 실행된다.

// sendpulse-email-marketing-newsletter/inc/class-senpulse-newsletter-forms.php

public function code_metabox_output( $post ) {
    $code = get_post_meta( $post->ID, '_sp_form_code', true );
    ?>
    <textarea rows="20" cols="40" name="sp_form_code" id="sp_form_code"
              placeholder="<?php _e( 'Paste code here', 'sendpulse-email-marketing-newsletter' ); ?>"><?php echo $code; ?></textarea>
    <p><?php echo sprintf( __( 'Code from <a href="%s">Constructor Form</a> (<a class="%s" href="%s" title="Open help page in new tab" target="_blank">Need help?</a>)', 'sendpulse-email-marketing-newsletter' ),
            'https://login.sendpulse.com/emailservice/forms/constructor/',
            'h-help',
            'https://sendpulse.com/ru/blog/subscription-forms?utm_campaign=novinki-za-sentiabr&utm_source=sendpulse&utm_medium=email' ); ?></p>
    <?php
}

public function save_meta( $post_id ) {
    if ( array_key_exists( 'sp_form_code', $_POST ) ) {
        update_post_meta(
            $post_id,
            '_sp_form_code',
            $_POST['sp_form_code']
        );
    }
}

 

Attach files (optional)

 

Reference

  • Wordfence Report
  • Patchstack Report
  • Trac Changeset

'Report > Zero-Day' 카테고리의 다른 글

CVE-2025-22783  (2) 2025.05.12
CVE-2025-22352  (0) 2025.05.11
CVE-2025-24587  (0) 2025.05.10
CVE-2025-26886  (0) 2025.03.01
CVE-2025-26971  (0) 2025.02.28
'Report/Zero-Day' 카테고리의 다른 글
  • CVE-2025-22352
  • CVE-2025-24587
  • CVE-2025-26886
  • CVE-2025-26971
bde574786
bde574786
  • bde574786
    꾸러기해커
    bde574786
  • 전체
    오늘
    어제
    • 분류 전체보기 (173)
      • 워게임 (108)
        • 웹해킹 (88)
        • 시스템해킹 (6)
        • 리버싱 (12)
        • 암호학 (2)
      • 보안 (3)
        • 웹 (3)
      • Report (7)
        • One-Day (1)
        • Zero-Day (6)
      • Git (35)
      • CTF Write Up (10)
        • b01lers CTF 2025 (5)
        • BYU CTF 2025 (5)
      • AI4C (7)
      • etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dom clobbering
    Wordpress
    RCE
    php deserialization
    crlf injection
    Path Traversal
    type juggling
    SSRF
    return address overwrite
    git
    prototype pollution
    XSS
    url globbing
    sql injection
    LFI
    Stack Buffer Overflow
    SSTI
    case mapping collision
    CVE
    Blind SQL Injection
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
bde574786
CVE-2025-22662
상단으로

티스토리툴바