Skip to main content

Summary

defaultChangePassword.jsp in Silverpeas through 6.4.6 reflects the Login and DomainId request parameters into HTML attribute values without context-appropriate output encoding. Because the page is reachable without authentication, a remote attacker can craft a link that executes JavaScript in a victim’s Silverpeas origin.

Technical details

The password-change page writes both request parameters directly into hidden input values:
Neither value is encoded for an HTML attribute context. A double quote in either parameter closes the value attribute, allowing the rest of the input to be parsed as markup. An XSS filter applies to the page, but the relevant rule only rejects script and iframe elements:
Event handlers on other elements, including svg and img, pass this blocklist. Output encoding is therefore required even with the filter enabled.

Reproduction

1. Inject markup through Login

No Silverpeas account is required. Open the following URL, replacing <target> with the test instance:
The resulting input contains the injected element, which runs as soon as the page is rendered:
The same attribute injection is present in DomainId.
JavaScript executing after injection through the Login parameter

XSS through the Login parameter

JavaScript executing after injection through the DomainId parameter

XSS through the DomainId parameter

Silverpeas response containing injected SVG onload elements

The injected SVG element in the server response

2. Extract an API token from an authenticated session

The vulnerable page itself is public. If the victim is already signed in, injected JavaScript runs with access to the victim’s Silverpeas origin. The profile page exposes the user’s API token in the DOM, so the payload can request that page, extract the token, and send it to an attacker-controlled endpoint:
The script can be Base64-encoded to make it easier to place inside the query string:
The captured token can then be verified against the profile API:

API-token extraction from an authenticated administrator session

Impact

The attacker does not need a Silverpeas account. JavaScript executes in the application origin after a victim opens the crafted link. For an authenticated administrator, the exposed API token allows the attacker to authenticate to the API and perform administrative actions, including creating or taking over accounts.

Remediation

Upgrade to Silverpeas 6.4.7 or later. The direct fix is to encode Login and DomainId for an HTML attribute context before rendering them. Expanding the XSS blocklist can provide additional filtering, but it does not replace contextual output encoding.

References

Last modified on September 8, 2026