Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Tools/GitHubGitHub/thawphone/cve-2025-61183
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & Education
GitHubthawphone/cve-2025-61183

CVE-2025-61183

Detailed disclosure of a stored XSS vulnerability in VaahCMS via unsafe SVG file upload handling, including exploitation flow, affected endpoints, and mitigation strategies for security researchers.

View Repository
6 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

[CVE-2025-61183] Stored XSS in User Avatar Upload via Unsafe SVG Handling

Overview

A Stored Cross-Site Scripting (XSS) vulnerability was identified in the vaahcms, specifically within the interaction between the file upload logic in MediaController.php and the storeAvatar() method in UserBase.php, allowing a low-level registered user to upload a malicious SVG file containing embedded JavaScript. The vulnerability stems from file storage occurring before content or MIME-type validation, leaving malicious files on a predictable, publicly accessible path on the server. The vulnerability arises from the upload() method in MediaController.php

$path = $request->file($input_file_name) ->storeAs($request->folder_path, $upload_file_name); allowing an attacker to specify the directory path, enabling them to place malicious files (like an XSS-laden SVG) directly into the public/ directory, making the payload immediately accessible via a web browser.

Impact

Successful exploitation allows an attacker to control the content and filename of a file written to a public storage path (/storage/media/YYYY/MM/<controlled-filename>.svg). If this publicly accessible SVG is subsequently rendered by a user's browser via an ``, <object>, or crafted link, the embedded script will execute, leading to persistent XSS.

Affected Product and Versions

  • Product: VaahCMS
  • Vulnerable Versions: 2.3.1

Vulnerable Endpoint

POST /backend/vaah/manage/media/upload

Critical Flaws

  1. Race Condition/Timing Issue: The file is physically saved to disk before any content validation or MIME-type checking is performed.
  2. Predictable Path: Malicious files are saved under a predictable public path: /storage/media/YYYY/MM/<controlled-filename>.svg.
  3. No Cleanup: Files persist even if the backend returns an error (e.g., {"success": false, "errors": ["Unable to decode input"]}).

Exploitation Flow (Proof of Concept)

  1. An attacker creates a specially crafted SVG file (see POC.svg).
  2. The attacker sends a request to the vulnerable endpoint, controlling the filename (e.g., xss.svg).
  3. Despite a failed backend response, the file is saved to disk, for example, at /storage/media/2025/08/xss.svg.
  4. The attacker delivers a link or embeds the path (e.g., in a forum post or email) to a victim, triggering the payload. POC

Mitigation/Vendor Response

  • Vendor: VaahCMS
  • Status: Acknowledged, fix pending
  • Temporary Mitigation:
    • Disable SVG file uploads entirely in the application
    • Implement server-side file type validation using MIME type checking before storing files
    • Use a dedicated SVG sanitizer library (e.g., enshrined/svg-sanitize for PHP)
    • Store uploaded files outside the web root and serve them through a secure proxy
    • Implement automatic cleanup of files that fail validation

🔗 References

  • https://github.com/webreinvent/vaahcms/issues/301

Researcher: Thaw Phone Nyo

Date Disclosed: 2025/10/8

Download Tool