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
CVE-2025-68147-OSPOS-Stored-XSS — PoC-Repository für CVE-2025-68147: Stored Cross-Site Scripting (XSS) in OpenSourcePOS. Die Schwachstelle ermöglicht eine Privilegienausweitung durch bösartige JavaScript-Injektion im Store-Config-Modul. Enthält Payload-Details und Patch-Verifizierung (v3.4.0). Sicherheitsforscher: Aditya Singh (Nixon-H). | Kitploit
Tools/GitHubGitHub/nixon-h/cve-2025-68147-ospos-stored-xss
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & Bildung
GitHubnixon-h/cve-2025-68147-ospos-stored-xss

CVE-2025-68147-OSPOS-Stored-XSS

Repository anzeigen
212vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

PoC-Repository für CVE-2025-68147: Stored Cross-Site Scripting (XSS) in OpenSourcePOS. Die Schwachstelle ermöglicht eine Privilegienausweitung durch bösartige JavaScript-Injektion im Store-Config-Modul. Enthält Payload-Details und Patch-Verifizierung (v3.4.0). Sicherheitsforscher: Aditya Singh (Nixon-H).

Teilen

CVE-2025-68147: Stored Cross-Site Scripting (XSS) in OpenSourcePOS

MetadatenDetails
CVE-IDCVE-2025-68147
SchweregradHoch CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
SchwachstellentypStored Cross-Site Scripting (CWE-79)
Betroffene VersionenOpenSourcePOS v3.4.0, v3.4.1
Gepatchte Versionv3.4.2
Verwundbare KomponenteStore Configuration Module (Return Policy-Feld)
MelderAditya Singh (Nixon-H)

📝 Zusammenfassung

Eine Stored Cross-Site Scripting (XSS)-Schwachstelle wurde im Store Configuration-Modul von OpenSourcePOS entdeckt. Die Anwendung säuberte die vom Benutzer bereitgestellte Eingabe im Feld "Return Policy" nicht ordnungsgemäß, bevor sie in der Datenbanktabelle ospos_app_config gespeichert wurde.

Dieser Fehler erlaubte es einem authentifizierten Angreifer mit Konfigurationsrechten (oder einem Angreifer, der eine separate CSRF-Kette ausnutzt), beliebige JavaScript-Payloads zu injizieren. Da die "Rückgaberegelung" auf jedem Verkaufsbeleg dynamisch gerendert wird, wird die injizierte Payload automatisch im Browser jedes Benutzers ausgeführt – einschließlich Kassierern mit niedrigen Rechten, anderen Administratoren oder Kunden – sobald ein Beleg generiert oder angesehen wird.


🕵️‍♂️ Technische Ursachenanalyse

1. Die verwundbare Logik

Die Schwachstelle befindet sich in der Beleg-Ansichtsvorlage: app/Views/sales/receipt_default.php.

Die Anwendung ruft die Zeichenkette der "Rückgaberegelung" aus dem globalen Konfigurationsarray ($this->config['return_policy']) ab und bereitet sie zur Anzeige vor.

  • Der Fehler: Die Entwickler verwendeten die native PHP-Funktion nl2br(), um Zeilenumbrüche in HTML-Zeilenumbrüche (<br>) umzuwandeln.
  • Das Versäumnis: nl2br() säubert keine HTML-Sonderzeichen. Es lässt Tags wie <script>, `` und onload-Attribute vollständig intakt.

Verwundbarer Code (vor dem Patch):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br($this->config['return_policy']); ?>
</div>

2. Datenbank-Persistenz

Wenn ein Administrator die Konfiguration speichert, wird die Payload roh in der Datenbank gespeichert.

  • Tabelle: ospos_app_config
  • Schlüssel: return_policy
  • Wert: Richtlinientext... <script>alert('XSS')</script>

Da es keine Eingabebereinigung auf der Controllerseite (Config.php) und keine Ausgabe-Escaping auf der View-Seite (receipt_default.php) gibt, ist die Anwendung anfällig für Stored XSS.


💥 Proof of Concept (PoC)

Angriffsvektor

Der Angriff zielt auf das Store Configuration-Panel ab, wirkt sich jedoch auf das Sales/Receipt-Modul aus.

  1. Einstiegspunkt: http://[ZIEL]/config (POST-Anfrage zum Speichern der Konfiguration)
  2. Ausführungspunkt: http://[ZIEL]/sales/receipt/[VERKAUFS_ID]

Schritt-für-Schritt-Ausnutzung

Schritt 1: Die Injektion Wir haben uns als Administrator angemeldet und zu Store Configuration -> General navigiert. Im Textfeld "Return Policy" haben wir die folgende spezifische Payload injiziert:

root@kitploit:~
Standard Return Policy: No Refunds.
<script>alert('XSS_BY_NIXON_SUCCESSFUL')</script>

Schritt 2: Persistenz Nach dem Klicken auf "Submit" sendete die Anwendung eine POST-Anfrage an /config/save. Die Payload wurde erfolgreich in die Datenbank übernommen.

Schritt 3: Der Auslöser Um die Auswirkungen auf andere Benutzer zu überprüfen:

  1. Wir haben uns abgemeldet und als Kassierer (Konto mit niedrigen Rechten) wieder angemeldet.
  2. Wir navigierten zum Sales-Modul.
  3. Wir fügten einen Testartikel zum Warenkorb hinzu und klickten auf "Verkauf abschließen".
  4. Ergebnis: Die Anwendung leitet zur Belegansicht weiter (z. B. http://localhost/sales/receipt/1). Der Browser parst das return_policy-Div, trifft auf das <script>-Tag und führt sofort das JavaScript aus.

Beobachtetes Ergebnis: Ein Browser-Alarmfeld erschien mit der Nachricht: XSS_BY_NIXON_SUCCESSFUL.

📷 Medien-Nachweis

Screenshot 1: Der ausgelöste Alert

Screenshot 2: Payload in der Konfiguration

🎥 Videodemonstration: Klicken zum Herunterladen / Ansehen des PoC-Videos


⚠️ Auswirkungsszenarien

Hierbei handelt es sich um eine Schwachstelle mit geändertem Bereich (S:C), da der Angriff auf dem Server gespeichert wird, aber im Browser-Kontext des Opfers ausgeführt wird.

  1. Rechteausweitung und Kontoübernahme:
  • Szenario: Ein Angreifer injiziert eine JavaScript-Payload, die darauf ausgelegt ist, Sitzungscookies zu stehlen.
  • Ausführung: Ein Superadministrator sieht einen früheren Beleg an (z. B. /sales/receipt/105). Das Skript wird still ausgeführt und sendet document.cookie (mit der ospos_session-ID) an den Server des Angreifers.
  • Auswirkung: Der Angreifer übernimmt die Sitzung des Superadministrators und erhält ohne Passwort die volle Kontrolle über das System.
  1. Wurmartige Admin-Erstellung:
  • Szenario: Die Payload ist ein Skript, das AJAX (XMLHttpRequest) verwendet, um administrative Aktionen durchzuführen.
  • Ausführung: Wenn ein angemeldeter Administrator den Beleg ansieht, zwingt das Skript seinen Browser, eine versteckte POST-Anfrage an /employees/save zu senden.
  • Auswirkung: Ein neues Administratorkonto (z. B. hacker / password123) wird sofort im Hintergrund erstellt. Das Opfer sieht nur den Beleg, während der Angreifer eine permanente Hintertür erhält.
  1. Verunstaltung und Phishing:
  • Szenario: Der Angreifer modifiziert das DOM, um die Finanzinformationen des Belegs zu ändern.
  • Ausführung: Das "Rückgaberegelung"-Skript überschreibt die Fußzeile oder Zahlungsanweisungen.
  • Auswirkung: Belege zeigen betrügerische Bankdaten oder Krypto-Wallet-Adressen an ("Bitte überweisen Sie die Zahlung an..."), was zu finanziellen Betrug gegenüber Kunden oder dem Unternehmen führt.

🛡️ Behebung

Die Schwachstelle wurde in OpenSourcePOS v3.4.2 behoben.

Der Betreuer hat einen Patch angewendet, der eine kontextbezogene Ausgabe-Kodierung implementiert. Der Konfigurationswert wird jetzt mit der globalen esc()-Hilfsfunktion von CodeIgniter umschlossen, bevor er an nl2br() übergeben wird.

Der Patch (Commit 22297a):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br(esc($this->config['return_policy'])); ?>
</div>

Überprüfung: Nach dem Upgrade auf v3.4.2 wird dieselbe Payload als harmloser Text dargestellt:

Standard Return Policy: No Refunds. &lt;script&gt;alert('XSS_BY_NIXON_SUCCESSFUL')&lt;/script&gt;


📅 Offenlegungszeitplan

  • 2025-12-12: Schwachstelle von Aditya Singh (Nixon-H) während eines manuellen Sicherheitsaudits entdeckt.
  • 2025-12-13: Verantwortungsvoller Offenlegungsbericht an den Betreuer (Jeroen Peelaerts) per E-Mail/GitHub gesendet.
  • 2025-12-14: Schwachstelle vom Betreuer bestätigt. CVE-2025-68147 reserviert.
  • 2025-12-14: Patch entwickelt (Commit 22297a) und vom Forscher verifiziert.
  • 2025-12-19: Patch in Version 3.4.2 veröffentlicht.
  • 2025-12-19: Öffentliche Offenlegung über GitHub Security Advisory.

🔗 Referenzen

  • Advisory: GHSA-xgr7-7pvw-fpmh
  • Patch: Commit 22297a
  • Melder: Aditya Singh (Nixon-H)
Tool herunterladen