Cross-site Scripting (XSS) - Reflected in falconchristmas/fpp


Reported on

Jun 27th 2021

✍️ Description

GET parameter ?plugin= is vulnerable to reflected cross site scripting. Line 17 of pluginconfig.php sends unvalidated data to a web browser, which can result in the browser executing malicious code. In this case the data is sent at printf() in pluginconfig.php at line 17.

🕵️‍♂️ Proof of Concept


#gets unvalidated user input as "plugin"
$pluginSettings['plugin'] = $_GET['plugin'];

if (!isset($skipJSsettings))
<script type="text/javascript">
var pluginSettings = new Array();
foreach ($pluginSettings as $key => $value) {
    printf("    pluginSettings['%s'] = \"%s\";\n", $key, $value); #print it to user response

💥 Impact

The attacker can:

Perform any action within the application that the user can perform. View any information that the user is able to view. Modify any information that the user is able to modify. Initiate interactions with other application users, including malicious attacks, that will appear to originate from the initial victim user.

We have contacted a member of the falconchristmas/fpp team and are waiting to hear back 3 years ago
Akshay Jain
3 years ago


Visit /pluginconfig.php?plugin=</script><script>alert(1) and XSS will be poped up

Akshay Jain
3 years ago


Hi Team, any updates?

Greg Hormann
3 years ago

Technically you need something like /pluginconfig.php?plugin=%22;alert(1);//

Greg Hormann marked this as fixed with commit 24adba 3 years ago
Greg Hormann has been awarded the fix bounty
to join this conversation