[CVE-2024-6408] 취약점 분석 보고서
Slider by 10Web에서 발생하는 Stored XSS 취약점
1. 취약점 개요
Slider by 10Web은 웹사이트의 페이지, 게시물, 테마 헤더에 빠르게 로딩되어 사용자 친화적인 슬라이더를 추가할 수 있게 하는 플러그인이다. 슬라이드에 이미지와 비디오를 모두 지원하며, 다양한 효과로 슬라이드를 더욱 생동감 있게 꾸밀 수 있다.
사용자에게 입력 받은 슬라이더의 제목을 이스케이프하지 않으므로 편집자 이상의 권한이 높은 사용자가 unfiltered_html이 허용되지 않더라도 XSS 공격을 수행할 수 있다.
2. 영향을 받는 버전
- Slider by 10Web < 1.2.57
3. 취약점 테스트
슬라이더 제목에 아래와 같이 마우스 이벤트를 삽입하고 Publish로 저장한다.
1
Test" onmouseover=alert(/XSS/)//
생성된 슬라이더 썸네일의 마우스를 올리면 alert가 동작하게 된다.
해당 취약점은 슬라이더를 추가하거나 편집할 때 모두 동작한다.
4. 취약점 상세 분석
슬라이더의 이름은 $this->form()
메서드에서 <input>
태그로 입력 받아 처리되며 이 데이터는 $row->name
변수에 저장된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
// slider-wd/admin/views/Sliders.php
public function display( $params = array() ) {
ob_start();
echo $this->body($params);
$form_attr = array(
'id' => WDS()->prefix . '_sliders_form',
'name' => WDS()->prefix . '_sliders',
'class' => WDS()->prefix . '_sliders wd-form',
'action' => add_query_arg(array( 'page' => 'sliders_' . WDS()->prefix ), 'admin.php'),
);
echo $this->form(ob_get_clean(), $form_attr);
}
$row->name
값은 그대로 <img>
태그의 title
속성에 들어가며, 이 값은 브라우저에서 이미지 위에 마우스를 올릴 때 툴팁으로 표시된다.
1
2
3
<!-- slider-wd/admin/views/Sliders.php -->
<img class="preview-image" title="<?php echo $row->name; ?>" src="<?php echo $preview_image; ?>" width="60" height="60" />
5. 패치
패치에서는 사용자 입력값 $row->name
을 HTML로 출력하기 전에 이스케이프 처리하여 스크립트 삽입을 방지하였다.
This post is licensed under CC BY 4.0 by the author.