{"id":305,"date":"2025-10-31T14:07:48","date_gmt":"2025-10-31T13:07:48","guid":{"rendered":"https:\/\/ttz-wue.fiw.thws.de\/blog\/?p=305"},"modified":"2025-10-31T14:07:48","modified_gmt":"2025-10-31T13:07:48","slug":"ttz-wue-entdeckt-neue-schwachstelle-reflected-cross-site-scripting-xss-in-beo-gmbh-beo-atlas-einfuhr-ausfuhr-3-0","status":"publish","type":"post","link":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/2025\/10\/31\/ttz-wue-entdeckt-neue-schwachstelle-reflected-cross-site-scripting-xss-in-beo-gmbh-beo-atlas-einfuhr-ausfuhr-3-0\/","title":{"rendered":"TTZ-WUE entdeckt neue Schwachstelle: Reflected Cross-Site Scripting (XSS) in BEO GmbH \u201eBEO Atlas Einfuhr Ausfuhr\u201c 3.0"},"content":{"rendered":"\n<p><strong>Reflected XSS in BEO Atlas Einfuhr-Ausfuhr 3.0 (Login: <code>userid<\/code>, <code>password<\/code>)<\/strong><br><strong>Entdecker:<\/strong> Lennard Kie\u00dfling<br><strong>CVE:<\/strong> CVE-2025-61427<br><strong>Status:<\/strong> Patch ver\u00f6ffentlicht (Responsible Disclosure)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kurzfassung<\/h2>\n\n\n\n<p>In der Login-Komponente von <strong>BEO GmbH \u2014 BEO Atlas Einfuhr &#8211; Ausfuhr 3.0<\/strong> haben wir eine <strong>reflected Cross-Site Scripting (XSS)<\/strong>-Schwachstelle gefunden. Durch nicht ausreichend escaped\/validierte Parameter (<code>userid<\/code>, <code>password<\/code>) kann ein Angreifer eine pr\u00e4parierte URL erzeugen, durch deren \u00d6ffnung im Browser eines Opfers beliebiges JavaScript ausgef\u00fchrt wird. <\/p>\n\n\n\n<p>Die Schwachstelle wurde gegen\u00fcber BEO GmbH gemeldet und von diesem best\u00e4tigt. Am <strong>19. August 2025<\/strong> wurde ein Patch ver\u00f6ffentlicht, der die Problematik behebt. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Betroffene Produkte \/ Versionen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BEO Atlas Einfuhr &#8211; Ausfuhr 3.0<\/strong> \u2014 Build\/Release <code>20250328<\/code> (Stand: 08.05.2025).<br>Betroffen sind die Versionen <strong>vor<\/strong> dem Patch vom <strong><strong>19. August 2025<\/strong><\/strong>. Bitte bezieht euch auf die Release-Notes des Vendors f\u00fcr genaue Build-IDs.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Technische Beschreibung<\/h2>\n\n\n\n<p>Die Login-Seite reflektiert Benutzereingaben aus den Parametern <code>userid<\/code> und <code>password<\/code>, ohne diese kontextsensitiv zu escapen. Dadurch kann unter anderem sch\u00e4dlicher JavaScript Code in die Seite eingeschleust werden.<\/p>\n\n\n\n<p>Angreifer-Szenario:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ein Angreifer konstruiert eine URL zur Login-Seite mit einem pr\u00e4parierten Payload in <code>userid<\/code> oder <code>password<\/code>.<\/li>\n\n\n\n<li>Das Opfer klickt den Link (z. B. in einer E-Mail oder Chatnachricht).<\/li>\n\n\n\n<li>Der Browser des Opfers l\u00e4dt die Seite; der Payload wird in der Response reflektiert und ausgef\u00fchrt \u2014 z. B. zum Diebstahl von Session-Cookies, zur Manipulation der Seite oder zum Nachladen weiterer Payloads.<\/li>\n<\/ol>\n\n\n\n<p><strong>Wichtig:<\/strong> Zur Minimierung missbr\u00e4uchlicher Nutzung enth\u00e4lt dieses Advisory keine einsatzbereiten Exploit-URLs oder aktiven Payload-URLs. Die Demonstration unten ist absichtlich abstrahiert und dient nur der Nachvollziehbarkeit.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Proof of Concept (abstrahiert)<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Hinweis:<\/strong> Ich ver\u00f6ffentliche keine aktiven Exploit-URLs oder ausf\u00fchrbaren Payloads. Folgende vereinfachte Darstellung zeigt die Art der Schwachstelle, nicht ein fertiges Exploit:<\/p>\n<\/blockquote>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u00d6ffne die Login-URL der Anwendung (z. B. <code>https:\/\/&lt;host&gt;\/beo-software<\/code>).<\/li>\n\n\n\n<li>H\u00e4nge an die URL einen Query-Parameter <code>userid<\/code> oder <code>password<\/code> an, der HTML\/JS-Inhalt enth\u00e4lt<br><code><code>?userid=\"&gt;&lt;script&gt;\/*payload*\/&lt;\/script&gt;&amp;password=anything<\/code><\/code><\/li>\n\n\n\n<li>Die Login Page reflektiert die URL Parameter und l\u00e4d somit den Payload<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"https:\/\/ttz-wue.fiw.thws.de\/blog\/wp-content\/uploads\/2025\/10\/cve-1024x607.png\" alt=\"\" class=\"wp-image-306\" srcset=\"https:\/\/ttz-wue.fiw.thws.de\/blog\/wp-content\/uploads\/2025\/10\/cve-1024x607.png 1024w, https:\/\/ttz-wue.fiw.thws.de\/blog\/wp-content\/uploads\/2025\/10\/cve-300x178.png 300w, https:\/\/ttz-wue.fiw.thws.de\/blog\/wp-content\/uploads\/2025\/10\/cve-768x455.png 768w, https:\/\/ttz-wue.fiw.thws.de\/blog\/wp-content\/uploads\/2025\/10\/cve-1536x910.png 1536w, https:\/\/ttz-wue.fiw.thws.de\/blog\/wp-content\/uploads\/2025\/10\/cve-2048x1214.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Abbildung 1: Das Bild zeigt, die aktive Ausnutzung der XSS Schwachstelle beim Kunden. Aufgrund von anonymisierung wurde der Name des Kunden geschw\u00e4rzt. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Wie haben wir die Schwachstelle gefunden?<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Directory-Scan:<\/strong> Im Rahmen eines autorisierten Scans haben wir alle \u00f6ffentlich erreichbaren Pfade der Anwendung aufgelistet.<\/li>\n\n\n\n<li><strong>Auswahl nach Design:<\/strong> Eine gefundene Seite wirkte aufgrund ihres Designs &#8222;alt&#8220; und einer Eigenentwicklung, deswegen entschieden wir uns, diese gezielt zu pentesten.<\/li>\n\n\n\n<li><strong>Initiale Tests:<\/strong> In ersten Eingabetests \u00fcberpr\u00fcfte ich typische Felder auf unsauberes Escaping (wie SQL Injection, XSS, usw.). Als ich dann einen treffer beim XSS hatte, sah es zun\u00e4chst so aus, als m\u00fcssten die User selbst Werte in die Felder eingeben, damit dieses Schwachstelle ausnutzbar w\u00e4re.<\/li>\n\n\n\n<li><strong>Versuch Reflected XSS zu erreichen:<\/strong> Bei weiterem gezielten Testen nach reflected XSS entdeckte ich, dass die Anwendung Eingaben aus der URL direkt in die DOM reflektiert. Damit l\u00e4sst sich die XSS-Payload \u00fcber eine, wie im PoC gezeigt, pr\u00e4perierte URL einf\u00fcgen. Hier entsteht ein viel leichterer Angriffsweg, weil er ohne direkte Interaktion mit dem Formular funktioniert (Opfer muss nur auf einen Link klicken).<\/li>\n\n\n\n<li><strong>Reporting<\/strong>: Nach dem Fund, setzen wir uns direkt mit unserem Kunden und dem Softwaredienstleister in Verbindung, der direkt einen Patch ver\u00f6ffentlichte und dem Kunden aufspielte.<\/li>\n\n\n\n<li><strong>Nachtrag<\/strong>:<strong> <\/strong>Im Nachhinein haben wir erfahren, dass die betroffene Login-Seite eigentlich nicht von extern erreichbar sein sollte. Gerade deshalb war der Directory-Scan entscheidend. Nur dadurch fiel die Fehlkonfiguration auf und die Seite konnte als potenzieller Angriffsvektor identifiziert werden.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Timeline (kompakt)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Entdeckung: w\u00e4hrend autorisiertem Assessment (intern dokumentiert)<\/li>\n\n\n\n<li>Vendor informiert: unmittelbar nach Verifikation<\/li>\n\n\n\n<li>Patch ver\u00f6ffentlicht (Vendor): <strong>19.08.2025<\/strong><\/li>\n\n\n\n<li>CVE zugewiesen: <strong>CVE-2025-61427<\/strong><\/li>\n\n\n\n<li>\u00d6ffentliche Beschreibung: dieser Eintrag (31.10.2025)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Nur weil eine Anwendung eigentlich nur intern verf\u00fcgbar sein soll, bedeutet das nicht, dass sie es auch immer ist. Durch besondere Umst\u00e4nde oder eine Fehlkonfiguration kann ein Endpunkt pl\u00f6tzlich von au\u00dfen erreichbar werden. <\/p>\n\n\n\n<p><strong>Genau das war hier der Fall.<\/strong> <\/p>\n\n\n\n<p>Der unerwartete Zugriff von au\u00dfen hat letztlich dazu gef\u00fchrt, dass ich die Schwachstelle in der Anwendung von BEO identifizieren konnte.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reflected XSS in BEO Atlas Einfuhr-Ausfuhr 3.0 (Login: userid, password)Entdecker: Lennard Kie\u00dflingCVE: CVE-2025-61427Status: Patch ver\u00f6ffentlicht&#8230;<\/p>\n","protected":false},"author":5,"featured_media":310,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[72],"tags":[132,131,133,134],"class_list":["post-305","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bedrohungen-angriffe","tag-beo","tag-cve","tag-schwachstelle","tag-xss"],"_links":{"self":[{"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/posts\/305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=305"}],"version-history":[{"count":7,"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/posts\/305\/revisions"}],"predecessor-version":[{"id":317,"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/posts\/305\/revisions\/317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/media\/310"}],"wp:attachment":[{"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ttz-wue.fiw.thws.de\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}