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
CVE-2026-30862 — Proof-of-concept demonstrating stored XSS in Appsmith Table Widget leading to vertical privilege escalation and full admin takeover via XSS-to-CSRF attack. | Kitploit
Tools/GitHubGitHub/drkim-dev/cve-2026-30862
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingRed Teaming
GitHubdrkim-dev/cve-2026-30862

CVE-2026-30862

Proof-of-concept demonstrating stored XSS in Appsmith Table Widget leading to vertical privilege escalation and full admin takeover via XSS-to-CSRF attack.

View Repository
214 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-2026-30862 PoC - Privilege Escalation in Appsmith

Proof-of-Concept for Privilege Escalation in Appsmith via Stored XSS

Disclosure: Originally reported by me via GHSA-5hw4-whxv-6794

⚠️ Authorized pentesting/research use only.

Vulnerability Information

FieldValue
CVE IDCVE-2026-30862
Severity🔴 Critical
CVSS Score9.1
CVSS Vector[CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H]
CWECWE-79, CWE-269, CWE-352
Affected ProductAppsmith ≤ 1.95
Patched Version1.96
AdvisoryGHSA-5hw4-whxv-6794

CVE-2026-30862: Critical Stored XSS & Privilege Escalation in Appsmith v1.95

Summary

A Critical Stored XSS vulnerability exists in the Table Widget (TableWidgetV2). The root cause is a lack of HTML sanitization in the React component rendering pipeline, allowing malicious attributes to be interpolated into the DOM. By leveraging the "Invite Users" feature, an attacker with a regular user account ([email protected]) can force a System Administrator to execute a high-privileged API call (/api/v1/admin/env), resulting in a Full Administrative Account Takeover.


Details

1. Root Cause: Lack of Output Sanitization Sink The vulnerability resides in the Table Widget's rendering engine

  • File: app/client/src/widgets/TableWidgetV2/component/cellComponents/BasicCell.tsx

  • The BasicCell component fails to sanitize data when the columnType is set to URL or Plain Text. It returns raw user-supplied values that are directly rendered as React children, which the browser interprets as executable HTML.

Vulnerable Code Snippet (Lines 132-143 & 172-173):

root@kitploit:~
const contentToRender = useMemo(() => {
  switch (columnType) {
    case ColumnTypes.URL:
      // Direct interpolation of 'url' into href without sanitization
      return <a href={url} target="_blank">{value}</a>;
    default:
      return value; // Line 141: Raw value returned
  }
}, [columnType, url, value]);

// Line 173: Final sink where unsanitized content is injected into the DOM
<Content ref={contentRef}>{contentToRender}</Content>

2. Attack Vector: XSS-to-CSRF via Social Engineering (Invite Feature) Although the SESSION cookie is protected by HttpOnly, the XSRF-TOKEN is accessible via document.cookie. Since Appsmith allows any user to "Invite" others to their app, an attacker can use this as a delivery mechanism to execute a Cross-Privilege Request Forgery (CPRF) within the Admin's active session.


PoC (Proof of Concept)

Step 1: XSS Vulnerability Verification

  1. Log in with a regular user account: [email protected].

  2. Create a new application and add a Table Widget.

  3. In the Table Data property, inject the following:

root@kitploit:~
[{ "id": 1, "payload": "" }]
  1. Observe the alert() execution, confirming the sanitization bypass.

-- Step 2: Weaponization (Full Admin Takeover)

  1. As [email protected], update the Table Data with the following payload designed to modify the administrative environment:
root@kitploit:~
[
  {
    "id": 1,
    "Status": "System Update Required",
    "payload": "alert('Admin Privileges Granted to [email protected]'));\">"
  }
]
  1. Use the "Share" feature to invite the System Administrator ([email protected]) to the app. This forces the Admin to view the malicious table upon opening the invitation.

  2. Once the Admin launches the app, the script executes in the background. It reads the Admin's XSRF-TOKEN and sends a PUT request to add [email protected] to the administrative whitelist.

  3. Result: Log in again as [email protected]. You will now have full access to the Admin Settings and all instance configurations.


Impact

  • Vulnerability Type: Stored XSS / Vertical Privilege Escalation.

  • Severity: 9.1 (Critical) | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H

  • Risk: Complete compromise of the Appsmith instance. Attackers gain access to sensitive environment variables, database credentials, and the ability to modify any application within the instance.


Recommended Remediation

  1. Sanitize Sinks: Wrap all dynamic outputs in BasicCell.tsx and related components with DOMPurify.sanitize().

  2. Hardened CSP: Implement a strict connect-src policy to prevent unauthorized API calls to administrative endpoints from XSS payloads.


https://github.com/user-attachments/assets/206a10e4-1619-4887-a552-99761baa0a29

Download Tool