{"id":40038,"date":"2021-06-09T15:15:43","date_gmt":"2021-06-09T13:15:43","guid":{"rendered":"https:\/\/www.pentestfactory.de\/vulnerabilities-in-ftapi-4-0-4-11\/"},"modified":"2024-07-26T10:30:46","modified_gmt":"2024-07-26T08:30:46","slug":"vulnerabilities-in-ftapi-4-0-4-11","status":"publish","type":"post","link":"https:\/\/www.pentestfactory.de\/en\/vulnerabilities-in-ftapi-4-0-4-11\/","title":{"rendered":"Vulnerabilities in FTAPI 4.0 &#8211; 4.11"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"40038\" class=\"elementor elementor-40038 elementor-6422\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-a144d8e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"43285\" data-id=\"a144d8e\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;ekit_has_onepagescroll_dot&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-10bd974a\" data-eae-slider=\"91883\" data-id=\"10bd974a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7367785 elementor-widget elementor-widget-text-editor\" data-id=\"7367785\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Um unsere Infrastruktur gegen Angriffe abzusichern, sind interne Penetrationstests ein fester Bestandteil unserer Strategie. Wir pr\u00fcfen dabei besonders die Systeme, die zur Verarbeitung von Kundendaten eingesetzt werden. In einem Penetrationstest unserer Dateiaustauschplattform FTAPI konnten wir dabei die folgenden Schwachstellen identifizieren.<\/p><p>Nach der Entdeckung haben wir die Schwachstellen an den Hersteller weitergeleitet, womit diese im n\u00e4chsten Release geschlossen werden konnten. Weitere Details finden sich hierzu am Ende des Beitrags.<\/p><hr \/><h4>\u00a0<\/h4><h4>CVE-2021-25277: FTAPI Stored XSS (via File Upload)<\/h4><p>Die Webanwendung ist anf\u00e4llig f\u00fcr \u201eStored Cross-Site Scripting\u201d: Der Dateiupload der Applikation erlaubt es Dateien mit unsicheren Namen hochzuladen. Beim Hovern \u00fcber das Dateinamensfeld wird ein Alternativtext-Element eingeblendet (siehe folgender Screenshot), was den Dateinamen zeigt. Dieses dynamisch eingeblendete Element nimmt keine Filterung des Dateinamens auf b\u00f6sartige Zeichen vor, wodurch eine XSS Schwachstelle entsteht.<\/p><p><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-6424 size-full aligncenter\" src=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_1.png\" alt=\"\" width=\"901\" height=\"505\" title=\"\" srcset=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_1.png 901w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_1-300x168.png 300w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_1-768x430.png 768w\" sizes=\"(max-width: 901px) 100vw, 901px\" \/><\/p><p style=\"text-align: center;\"><strong>Abbildung 1:<\/strong> Verwundbares Alternativtextfeld der Dateinamens-Box<\/p><p><strong>Proof-of-Concept<\/strong><\/p><p>Beim Hochladen einer Datei mit dem folgenden Namen, wird exemplarisch eine Alert-Box ausgef\u00fchrt, um die Schwachstelle zu visualisieren:<\/p><p><img decoding=\"async\" class=\"wp-image-6426 size-full aligncenter\" src=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_2.png\" alt=\"\" width=\"632\" height=\"98\" title=\"\" srcset=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_2.png 632w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_2-300x47.png 300w\" sizes=\"(max-width: 632px) 100vw, 632px\" \/><\/p><p style=\"text-align: center;\"><strong>Abbildung 2:<\/strong> Proof-of-Concept Dateiname mit alert() Ausf\u00fchrung<\/p><p>Damit der Upload erfolgreich ist, darf die Datei nicht leer sein. Sie l\u00e4sst sich mit dem folgenden Linux Befehl erzeugen:<\/p><pre style=\"padding-left: 40px;\">echo \"test\" &gt;&gt; \"&lt;iframe onload=alert('Pentest_Factory_XSS')&gt;\"<\/pre><p>Das Dateinamensfeld wird nicht nur beim Upload, sondern auch f\u00fcr den Empf\u00e4nger beim Abruf der Datei eingeblendet. Somit kommt es auch hier zu einer Ausf\u00fchrung unseres Codes, sobald die Maus das gr\u00fcne Datei-Feld ber\u00fchrt:<\/p><p><img decoding=\"async\" class=\"aligncenter wp-image-6428 size-full\" src=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_3.png\" alt=\"\" width=\"901\" height=\"582\" title=\"\" srcset=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_3.png 901w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_3-300x194.png 300w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25277_3-768x496.png 768w\" sizes=\"(max-width: 901px) 100vw, 901px\" \/><\/p><p style=\"text-align: center;\"><strong>Abbildung 3:<\/strong> Proof-of-Concept alert() wird in der Inbox des Opfers ausgef\u00fchrt<\/p><hr \/><h4>\u00a0<\/h4><h4>CVE-2021-25278: FTAPI Stored XSS (via Submit Box Template)<\/h4><p>Die Webanwendung ist anf\u00e4llig f\u00fcr \u201eStored Cross-Site Scripting\u201d: Administrativen Nutzern ist es m\u00f6glich das Submit Box Template zu \u00e4ndern. Hierbei existiert eine Funktion zum Hochladen von Hintergrundbildern. Die Uploads werden dabei nicht auf b\u00f6sartige Inhalte gefiltert, was es einem Angreifer erlaubt, eine SVG Datei mit eingebettetem XSS hochzuladen.<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6430 size-full\" src=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_1.png\" alt=\"\" width=\"903\" height=\"389\" title=\"\" srcset=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_1.png 903w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_1-300x129.png 300w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_1-768x331.png 768w\" sizes=\"(max-width: 903px) 100vw, 903px\" \/><\/p><p style=\"text-align: center;\"><strong>Abbildung 4:<\/strong> Verwundbarer Hintergrundbild-Upload im Submit Box Layout Editor<\/p><p><strong>Proof-of-Concept<\/strong><\/p><p>Um die Schwachstelle exemplarisch auszunutzen, kann eine .svg Datei mit folgendem Inhalt als Hintergrundbild hochgeladen werden:<\/p><pre style=\"padding-left: 40px;\">&lt;?xml version=\"1.0\" standalone=\"no\"?&gt;<br \/>&lt;!DOCTYPE svg PUBLIC \"-\/\/W3C\/\/DTD SVG 1.1\/\/EN\" \"http:\/\/www.w3.org\/Graphics\/SVG\/1.1\/DTD\/svg11.dtd\"&gt;<br \/>&lt;svg version=\"1.1\" baseProfile=\"full\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"&gt;<br \/>\u00a0\u00a0 &lt;polygon id=\"triangle\" points=\"0,0 0,50 50,0\" fill=\"#009900\" stroke=\"#004400\"\/&gt;<br \/>\u00a0\u00a0 &lt;script type=\"text\/javascript\"&gt;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0 alert('Pentest Factory XSS');<br \/>\u00a0\u00a0 &lt;\/script&gt;<br \/>&lt;\/svg&gt;<\/pre><pre style=\"padding-left: 40px;\">\u00a0<\/pre><p>Die hochgeladene Datei wird im Verzeichnis \/api\/2\/staticfile\/ gespeichert und f\u00fchrt zu XSS, sobald diese aufgerufen wird:<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6432 size-full\" src=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_2.png\" alt=\"\" width=\"901\" height=\"490\" title=\"\" srcset=\"https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_2.png 901w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_2-300x163.png 300w, https:\/\/www.pentestfactory.de\/wp-content\/uploads\/25278_2-768x418.png 768w\" sizes=\"(max-width: 901px) 100vw, 901px\" \/><\/p><p style=\"text-align: center;\"><strong>Abbildung 5:<\/strong> Stored XSS in Suchfunktion<\/p><hr \/><h4>\u00a0<\/h4><h4>M\u00f6gliche Auswirkungen<\/h4><p>Ein Angreifer, der eine der Cross-Site Scripting Schwachstellen ausnutzt, k\u00f6nnte unter anderem folgende Angriffe ausf\u00fchren:<\/p><ul><li>Session Hijacking mit Zugriff auf vertrauliche Dateien und Identifikatoren<\/li><li>Ver\u00e4nderung der Pr\u00e4sentation der Webseite<\/li><li>Einf\u00fcgen von sch\u00e4dlichen Inhalten<\/li><li>Umleiten von Anwendern auf sch\u00e4dliche Seiten<\/li><li>Malwareinfektion<\/li><\/ul><p>\u00a0Dies k\u00f6nnte zum Verlust der Vertraulichkeit, Integrit\u00e4t und Verf\u00fcgbarkeit der von FTAPI verarbeiteten Daten f\u00fchren.<\/p><hr \/><h4>\u00a0<\/h4><h4>Behebung der Schwachstellen<\/h4><p>Die Schwachstellen wurden im n\u00e4chsten Release des Herstellers behoben. Mehr Informationen hierzu finden sich unter <a href=\"https:\/\/docs.ftapi.com\/display\/RN\/4.11.0\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/docs.ftapi.com\/display\/RN\/4.11.0<\/a>.<\/p><p>Vielen Dank dabei an das FTAPI Team f\u00fcr die schnelle und einfache Kommunikation mit uns und die schnelle Behebung der identifizierten Schwachstellen!<\/p><p>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>To protect Pentest Factory&#8217;s own IT infrastrcture against attacks, internal penetration tests are an essential part of our strategy. We hereby put an additional focus on systems that process sensitive client data. In a penetration test of our file platform FTAPI, we could identify two vulnerabilities that we forwarded to the vendor for a patch. [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":3324,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[22],"tags":[],"class_list":["post-40038","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-specialist-article"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/posts\/40038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/comments?post=40038"}],"version-history":[{"count":1,"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/posts\/40038\/revisions"}],"predecessor-version":[{"id":40039,"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/posts\/40038\/revisions\/40039"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/media\/3324"}],"wp:attachment":[{"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/media?parent=40038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/categories?post=40038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pentestfactory.de\/en\/wp-json\/wp\/v2\/tags?post=40038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}