The vulnerability is a reflected Cross-Site Scripting (XSS) issue in Admidio. The root cause lies in the application's internationalization component. The user-facing entry point is system/msg_window.php, which accepts a message_var1 GET parameter. This input is first sanitized with htmlspecialchars, which does not encode square brackets ([ and ]). The sanitized string is then passed as a placeholder to the Admidio\Infrastructure\Language::get() method.
In vulnerable versions (<= 5.0.8), the get method calls Admidio\Infrastructure\Language::prepareTextPlaceholders(). This function's responsibility was to replace placeholders, but it also contained a line of code, return strtr($text, '[]', '<>');, which translated all square brackets in the processed text into HTML angle brackets (< and >).
This sequence of operations allowed an attacker to craft a payload like [script]alert(1)[/script]. The initial htmlspecialchars call would leave it unchanged. However, the subsequent strtr call within prepareTextPlaceholders would transform it into <script>alert(1)</script>, which would then be rendered by the browser, executing the script. The patch, identified in commit a0fe499385c4c2c15d7755f4b42e0003a8933cfa, resolves the issue by removing the unsafe strtr call from the prepareTextPlaceholders function, thus preventing user-supplied input from being converted into executable HTML.