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
'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 |