CVE-2021-31745

7.5 HIGH

📋 TL;DR

CVE-2021-31745 is a session fixation vulnerability in Pluck-CMS that allows attackers to maintain unauthorized access even after password resets. This affects Pluck-CMS administrators because the system doesn't invalidate existing sessions when passwords change. Attackers can hijack sessions and maintain persistent access to the admin panel.

💻 Affected Systems

Products:
  • Pluck-CMS
Versions: 4.7.15 and earlier
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects installations with admin access enabled. The vulnerability is in the core login.php file.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers gain persistent administrative access, allowing complete compromise of the CMS including content manipulation, plugin installation, and potential server takeover.

🟠

Likely Case

Attackers maintain unauthorized access to the admin panel after password changes, enabling content modification, user management, and potential privilege escalation.

🟢

If Mitigated

With proper session management and monitoring, impact is limited to temporary unauthorized access until sessions expire naturally.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires initial session hijacking or fixation, but once achieved, persistence is trivial. The GitHub issue contains technical details.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.7.16

Vendor Advisory: https://github.com/pluck-cms/pluck/issues/99

Restart Required: No

Instructions:

1. Backup your Pluck-CMS installation. 2. Download Pluck-CMS 4.7.16 or later from the official repository. 3. Replace the existing installation files with the patched version. 4. Verify that login.php now includes session invalidation on password change.

🔧 Temporary Workarounds

Manual Session Invalidation

linux

Manually invalidate all sessions after password changes by clearing session data

# Clear PHP session files
rm -rf /path/to/pluck/data/sessions/*
# Alternative: Modify login.php to add session_regenerate_id(true) after password change

Session Timeout Reduction

all

Reduce session lifetime to limit exposure window

# In php.ini or .htaccess
php_value session.gc_maxlifetime 1800
# Set session cookie lifetime
php_value session.cookie_lifetime 1800

🧯 If You Can't Patch

  • Implement strict session monitoring and alert on unusual admin activity patterns
  • Require multi-factor authentication for all admin accounts to compensate for session fixation risk

🔍 How to Verify

Check if Vulnerable:

Check if your Pluck-CMS version is 4.7.15 or earlier. Examine login.php for session invalidation logic after password change.

Check Version:

Check the version.txt file in your Pluck installation directory: cat /path/to/pluck/version.txt

Verify Fix Applied:

After patching, test that changing an admin password invalidates existing sessions. Attempt to use old session tokens - they should no longer work.

📡 Detection & Monitoring

Log Indicators:

  • Multiple successful logins from same session ID after password change
  • Admin sessions persisting beyond expected lifetime after credential updates

Network Indicators:

  • Unusual admin panel access patterns, especially after password reset events

SIEM Query:

source="pluck-access.log" (event="password_change" OR event="login") | stats count by session_id, user | where count > 1

🔗 References

📤 Share & Export