CVE-2020-23754

9.6 CRITICAL

📋 TL;DR

This is a Cross-Site Scripting (XSS) vulnerability in PHP-Fusion's poll administration feature that allows attackers to inject malicious scripts into web pages. Attackers can execute arbitrary code in victims' browsers when they view compromised poll pages. This affects PHP-Fusion 9.03.50 installations with the polls feature enabled.

💻 Affected Systems

Products:
  • PHP-Fusion
Versions: 9.03.50
Operating Systems: All operating systems running PHP
Default Config Vulnerable: ⚠️ Yes
Notes: Requires the polls feature to be enabled and accessible. The vulnerability is in the poll administration interface.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator session cookies, perform actions as administrators, deface websites, or redirect users to malicious sites, potentially leading to complete system compromise.

🟠

Likely Case

Attackers inject malicious JavaScript to steal user session cookies or credentials, potentially gaining administrative access to the PHP-Fusion installation.

🟢

If Mitigated

With proper input validation and output encoding, the malicious scripts would be rendered harmless as text rather than executable code.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires access to poll administration features. The GitHub issue shows proof-of-concept screenshots demonstrating the vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 9.03.51 or later

Vendor Advisory: https://github.com/php-fusion/PHP-Fusion/issues/2315

Restart Required: No

Instructions:

1. Upgrade PHP-Fusion to version 9.03.51 or later. 2. Apply the specific patch for poll_admin.php that adds proper input validation and output encoding. 3. Clear any cached content.

🔧 Temporary Workarounds

Disable Polls Feature

all

Temporarily disable the polls feature to prevent exploitation while planning upgrade.

# Disable via admin panel or remove/rename infusions/member_poll_panel/ directory

Input Validation Filter

all

Add custom input validation to sanitize poll-related inputs before processing.

# Add htmlspecialchars() or similar filtering to poll input handling

🧯 If You Can't Patch

  • Implement a Web Application Firewall (WAF) with XSS protection rules
  • Restrict access to poll administration features to trusted IP addresses only

🔍 How to Verify

Check if Vulnerable:

Check if running PHP-Fusion 9.03.50 and examine poll_admin.php for missing input sanitization in poll parameter handling.

Check Version:

Check includes/version.php or admin panel for version information

Verify Fix Applied:

Verify PHP-Fusion version is 9.03.51+ and check that poll_admin.php includes proper htmlspecialchars() or equivalent output encoding.

📡 Detection & Monitoring

Log Indicators:

  • Unusual poll creation/modification activity
  • Suspicious JavaScript in poll-related POST requests
  • Multiple failed poll administration attempts

Network Indicators:

  • Malicious script injection in poll-related HTTP requests
  • Unexpected redirects from poll pages

SIEM Query:

web_requests WHERE (uri CONTAINS 'poll_admin.php' OR uri CONTAINS 'member_poll_panel') AND (body CONTAINS '<script>' OR body CONTAINS 'javascript:')

🔗 References

📤 Share & Export