Lucene search
+L

Yoast SEO 16.7-17.2 - Information Disclosure Detection

🗓️ 28 Jul 2026 11:27:38Reported by KittySploitType 
kittysploit
 kittysploit
🔗 kittysploit.com👁 2 Views

Yoast SEO plugin discloses full internal paths of featured images via wp/v2/posts.

Related
Refs
Code
ReporterTitlePublishedViews
Family
attackerkb
attackerkb
CVE-2021-25118
28 Feb 202209:15
–attackerkb
circl
Circl
CVE-2021-25118
27 Apr 202309:58
–circl
cnnvd
CNNVD
WordPress plugin Yoast SEO 信息泄露漏洞
28 Feb 202200:00
–cnnvd
cnvd
CNVD
WordPress Yoast SEO plugin information leakage vulnerability
2 Mar 202200:00
–cnvd
cve
CVE
CVE-2021-25118
28 Feb 202209:06
–cve
cvelist
Cvelist
CVE-2021-25118 Yoast SEO 16.7-17.2 - Unauthenticated Full Path Disclosure
28 Feb 202209:06
–cvelist
euvd
EUVD
EUVD-2021-12030
28 Feb 202209:06
–euvd
nuclei
Nuclei
Yoast SEO 16.7-17.2 - Information Disclosure
15 Oct 202602:05
–nuclei
nvd
NVD
CVE-2021-25118
28 Feb 202209:15
–nvd
openvas
OpenVAS
WordPress Yoast SEO Plugin 16.7 < 17.3 Information Disclosure Vulnerability
14 Sep 202300:00
–openvas
Rows per page
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Yoast SEO plugin 16."""

import re
from kittysploit import *
from lib.protocols.http.http_client import Http_client


class Module(Scanner, Http_client):
    __info__ = {
        'name': 'Yoast SEO 16.7-17.2 - Information Disclosure Detection',
        'description': 'Yoast SEO plugin 16.7 to 17.2 is susceptible to information disclosure, The plugin discloses the full internal path of featured images in posts via the wp/v2/posts REST endpoints, which can help an attacker identify other vulnerabilities or help during the exploitation of other identified vulnerabilities.',
        'author': ['KittySploit Team'],
        'severity': 'medium',
        'tags': ['web', 'scanner', 'cve', 'cve2021', 'wpscan', 'wordpress', 'wp-plugin', 'fpd', 'wp', 'yoast', 'vuln'],
        'agent': {
            'risk': 'active',
            'effects': ['network_probe'],
            'expected_requests': 1,
            'reversible': True,
            'approval_required': False,
            'produces': ['tech_hints', 'risk_signals', 'endpoints'],
            'cost': 1.0,
            'noise': 0.3,
            'value': 1.0,
            'requires': {
                'min_endpoints': 0,
                'min_params': 0,
                'tech_hints_any': [],
                'tech_hints_all': [],
                'specializations_any': [],
                'risk_signals_any': [],
                'auth_session': False,
                'capabilities_any': [],
                'capabilities_all': [],
                'confidence_min': {},
                'confidence_min_any': {},
                'endpoint_pattern_any': [],
                'param_any': [],
                'api_surface_ready': False,
            },
            'chain': {
                'produces_capabilities': [
                    {
                        'capability': 'admin_surface',
                        'from_detail': '',
                    },
                ],
                'consumes_capabilities': [],
                'option_bindings': {},
                'suggested_followups': ['auxiliary/scanner/http/login_page_detector'],
            },
        },
        'references': [
            'https://wpscan.com/vulnerability/2c3f9038-632d-40ef-a099-6ea202efb550',
            'https://plugins.trac.wordpress.org/changeset/2608691',
            'https://nvd.nist.gov/vuln/detail/CVE-2021-25118',
            'https://github.com/20142995/sectool',
            'https://github.com/ARPSyndicate/cvemon',
        ],
        'cve': 'CVE-2021-25118',
    }

    def run(self):
        r = self.http_request(method="GET", path='/wp-json/wp/v2/posts?per_page=1', allow_redirects=False)
        if not r or r.status_code != 200:
            return False
        body = r.text or ""
        headers = "\n".join(f"{k}: {v}" for k, v in r.headers.items())
        header_any = ('application/json',)
        body_regexes = ('"path":"(.*)/wp-content\\\\(.*)","size',)
        if (any(m in headers for m in header_any)) and (any(re.search(rx, body, 0) for rx in body_regexes)):
            self.set_info(
                severity='medium',
                reason="Yoast SEO 16.7-17.2 - Information Disclosure detected",
                path='/wp-json/wp/v2/posts?per_page=1',
            )
            return True
        return False

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

28 Jul 2026 11:27Current
6Medium risk
Vulners AI Score6
CVSS 25
CVSS 3.15.3
EPSS0.05632
2