CVE-2020-19229

9.8 CRITICAL

📋 TL;DR

CVE-2020-19229 is a critical vulnerability in Jeesite 1.2.7 that uses a vulnerable version of Apache Shiro (1.2.3). This allows attackers to exploit a Java deserialization flaw via the rememberMe parameter to execute arbitrary commands on affected systems. Organizations running Jeesite 1.2.7 with default configurations are at risk.

💻 Affected Systems

Products:
  • Jeesite
Versions: 1.2.7
Operating Systems: Any OS running Java
Default Config Vulnerable: ⚠️ Yes
Notes: Specifically affects Jeesite installations using Apache Shiro 1.2.3 for authentication/authorization.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full system compromise with remote code execution leading to data theft, ransomware deployment, or complete system takeover.

🟠

Likely Case

Unauthenticated attackers gaining shell access to the server, installing backdoors, and pivoting to internal networks.

🟢

If Mitigated

Attackers blocked at perimeter with proper input validation and network segmentation limiting lateral movement.

🌐 Internet-Facing: HIGH - Exploitable remotely without authentication via HTTP requests.
🏢 Internal Only: MEDIUM - Still exploitable from internal networks but requires initial access.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: CONFIRMED
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploit tools for CVE-2016-4437 (the underlying Shiro vulnerability) are widely available and can be adapted for Jeesite.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Update Apache Shiro to version 1.2.5 or later

Vendor Advisory: https://github.com/thinkgem/jeesite/issues/490

Restart Required: Yes

Instructions:

1. Stop Jeesite service. 2. Update Apache Shiro dependency to version 1.2.5+. 3. Update Jeesite if newer versions exist. 4. Restart Jeesite service. 5. Verify fix by testing exploit attempts.

🔧 Temporary Workarounds

Disable rememberMe functionality

all

Temporarily disable Shiro's rememberMe feature to block the attack vector

Edit shiro.ini or equivalent config file and set shiro.rememberMe.enabled = false

WAF rule blocking

all

Implement web application firewall rules to block rememberMe parameter exploitation

Add WAF rule: Block requests containing malicious rememberMe cookie patterns

🧯 If You Can't Patch

  • Network segmentation: Isolate Jeesite servers from critical systems and internet
  • Strict input validation: Filter rememberMe parameter at application or proxy level

🔍 How to Verify

Check if Vulnerable:

Check Jeesite version in web interface or configuration files, and verify Apache Shiro version in dependencies (typically in pom.xml or lib directory).

Check Version:

Check Jeesite version: grep -r 'version' web.xml or similar config files. Check Shiro version: find . -name '*.jar' | grep shiro

Verify Fix Applied:

Test with known exploit payloads for CVE-2016-4437 against the rememberMe parameter - successful exploitation should fail after patching.

📡 Detection & Monitoring

Log Indicators:

  • Unusual rememberMe parameter values in access logs
  • Java deserialization errors in application logs
  • Unexpected process execution from web server user

Network Indicators:

  • HTTP requests with unusually long rememberMe cookies
  • Outbound connections from web server to unknown IPs

SIEM Query:

source="web_access_logs" AND rememberMe AND (length(rememberMe) > 100 OR rememberMe CONTAINS "rO0AB")

🔗 References

📤 Share & Export