WP Manifestindependent plugin directory
manifest / analytics / wp-query-push

WP Query Push WP Registry grade D+. High-severity findings · 2 findingsWP RegistryHigh-severity findings · 2 findingsOpen the reportD+

WP Query Push WordPress plugin

★ 0stars
174release downloads
≈10active sites
v0.7.1latest · 2 years ago

Install

Download wp-query-push.zip From the v0.7.1 release on GitHub, Oct 26, 2023

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/zdmc23/wp-query-push/releases/download/v0.7.1/wp-query-push.zip
Updates itself. It ships its own updater (Plugin Update Checker), so new versions appear under Dashboard → Updates.

WP Query Push enables flexible, push-based analytics. Schedule SQL queries to be periodically pushed, or push one-off/adhoc queries, to an external service (ie, HTTP/S).

Installation

In order to get the plugin to work, you must run the following commands in the plugin folder

  1. composer install
  2. npm install
  3. npm run build

Releases

21 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v0.7.1 latest
Oct 26, 2023 2 years ago
wp-query-push.zip
46
Oct 26, 2023 2 years ago
wp-query-push.zip
7
Oct 15, 2023 3 years ago
wp-query-push.zip
28
Oct 15, 2023 3 years ago
wp-query-push.zip
6
Jun 19, 2023 3 years ago
wp-query-push.zip
16
Jun 19, 2023 3 years ago
wp-query-push.zip
5
Jun 16, 2023 3 years ago
wp-query-push.zip
7
Jun 15, 2023 3 years ago
wp-query-push.zip
5
Jun 15, 2023 3 years ago
wp-query-push.zip
5
Jun 15, 2023 3 years ago
wp-query-push.zip
5
May 14, 2023 3 years ago
wp-query-push.zip
13
Mar 8, 2023 3 years ago
wp-query-push.zip
15
Mar 8, 2023 3 years ago
wp-query-push.zip
5
Mar 8, 2023 3 years ago
wp-query-push.zip
4
Mar 8, 2023 3 years ago
wp-query-push.zip
2
Mar 8, 2023 3 years ago
wp-query-push.zip
2
Mar 8, 2023 3 years ago
wp-query-push-v0.2.0.zip
1
Mar 8, 2023 3 years ago
wp-query-push-v0.1.11.zip
2
Mar 8, 2023 3 years ago
tag only
—
Mar 8, 2023 3 years ago
tag only
—
Mar 8, 2023 3 years ago
tag only
—

Active-site estimate ≈10 comes from the median of recent superseded releases. Method.

D+ grade

Security

WP Query Push 0.7.1 · audited by WP Registry

High-severity findings.

1 high 1 medium
Audited release
0.7.1
Findings
2
Worst severity
high
Content hash
952e81e5303bf1ef9b566c96…

Findings

  • high Subscriber-reachable curl SSRF posts query results to attacker-controlled URLs and stores the response in logs

    ssrf

    handle_post_connection (POST /wp-json/wp-query-push/v1/connections, permission_callback nonce_check) inserts name/type/config JSON including requestData.url and requestData.headers with no URL allow-list or protocol check. handle_send and cron wpquerypush_cron_hook call WP_Query_Push::process_task, which json_decodes that config, curl_init($url), sets CURLOPT_POSTFIELDS to json_encode($wpdb->get_results($query)), and curl_exec with attacker-supplied headers. There is no CURLOPT_PROTOCOLS restriction, no block on loopback/link-local/file, and no redirect policy. The HTTP body is stored in {$wpdb->prefix}wpquerypush_logs.response; GET /logs (same nonce-only gate) is SELECT * and returns that body, so cloud-metadata or internal-service responses are readable. Combined with finding 1, a Subscriber can create a connection to https://attacker.example, send SELECT user_login,user_pass FROM wp_users, and receive the dump even if they prefer not to use /query's JSON response; or probe http://169.254.169.254/latest/meta-data/ and read the curl body from /logs. handle_send itself returns empty JSON, so the log table is the response channel.

    includes/class-wp-query-push.php:58-95

    Recommendation

    Gate connection CRUD and /send on manage_options. Allow-list https URLs to public hosts; reject file/gopher/dict, loopback, RFC1918, and link-local (169.254.169.254). Disable redirects or re-validate Location. Do not log full upstream bodies to a table readable via REST. Prefer wp_remote_post() with a deny-list of internal IPs.

  • medium No upstream maintenance path for the Subscriber SQL/SSRF holes

    unmaintained

    This tree is GitHub tag v0.7.1, published 2023-10-26; the latest commit on main is the same-day 'mark for auto-update' change. rest-api.php on main still uses nonce-only permission_callback with no current_user_can. PUC pulls https://raw.githubusercontent.com/zdmc23/wp-query-push/main/plugin.json and auto_update_plugin is forced true for slug wp-query-push, but there is no newer release that would actually patch the REST gate. A plugin whose purpose is arbitrary SQL plus outbound curl is unsafe to leave on production unpatched, and there is no in-tree remediation.

    wp-query-push.php:3-17

    Recommendation

    Do not run this plugin on production until REST routes require manage_options and SQL is restricted to SELECT. If you must keep the feature, replace it with a maintained, capability-gated reporting/export plugin or a server-side cron outside WordPress. Disable the forced auto-update filter until a real security release exists.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.