WP Manifestindependent plugin directory
manifest / users / dues-lookup

OA Dues Lookup WP Registry grade D+. High-severity findings · 2 findingsWP RegistryHigh-severity findings · 2 findingsOpen the reportD+

Wordpress plugin to use in conjunction with LodgeMaster to allow Lodge members to look up when they last paid dues

★ 8stars
31krelease downloads
2.7.1latest · 2mo ago

Install

Download dues-lookup-2.7.1.zip From the 2.7.1 release on GitHub, Aug 11, 2026

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

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/oascouting/dues-lookup/releases/download/2.7.1/dues-lookup-2.7.1.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Wordpress Compatibility

Requires at least: 5.9 Tested up to: 7.0

PHP Compatibility

Requires at least: 8.1.x Tested up to: 8.5.x

License: GPLv2 or later

License URI: http://www.gnu.org/licenses/gpl-2.0.html

Wordpress plugin to use in conjunction with OA LodgeMaster to allow members to look up when they last paid dues.

Description

Provides a lookup form to allow OA members to enter their BSA Member ID and find out whether their dues are current.

Makes use of data exported from OA LodgeMaster, which needs to be periodically imported into the plugin.

See the Github page for detailed instructions and to file bug reports. https://github.com/oabsa/dues-lookup/wiki

This plugin embeds the PhpSpreadsheet library (and its dependencies) intact with no modifications, which is licensed separately under LGPL.

NOTE: as of June 2021, LodgeMaster now offers a Member Portal in which members can see this on their profile. Depending on your desires, this plugin may no longer be needed.

What this plugin still does that LodgeMaster's Member Portal does not yet do:

  • Link to the site to pay your dues - LodgeMaster Feature Request
  • Show the member whether their BSA Registration is valid - LodgeMaster Feature Request
  • Allow someone other than the member to look up their dues status if they know their BSA ID (like Scoutmasters) -- LodgeMaster integration with the Internet Advancement System is supposed to be coming in the next year or so, then they'll be able to do that there.

Installation

  1. Place the unpacked "dues-lookup" directory in the "/wp-content/plugins/" directory.
  2. Activate the plugin through the "Plugins" menu in WordPress.
  3. Go to "OA Tools" > "Dues Lookup Settings" to find the settings
  4. Go to "OA Tools" > "Import Dues" to upload data.
  5. Put the [oadueslookup] shortcode on the page you want the lookup form to appear on.

NOTE: if you do a git check out from GitHub or download the source Zip file, you will need to run composer install inside the dues-lookup directory to install the dependencies before you can use it.

Releases

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

Tag
Published
Assets
Downloads
2.7.1 latest
Aug 11, 2026 2mo ago
dues-lookup-2.7.1.zip
8
2.7
Aug 10, 2026 2mo ago
dues-lookup-2.7.zip
3
2.6
Dec 9, 2024 1 year ago
dues-lookup-2.6.zip
5,471
Dec 9, 2024 1 year ago
dues-lookup-2.5.3.zip
4
Dec 9, 2024 1 year ago
dues-lookup-2.5.2.zip
2
Nov 23, 2024 1 year ago
dues-lookup-2.5.1.zip
900
2.5
Oct 16, 2024 2 years ago
dues-lookup-2.5.zip
2
2.4
Feb 26, 2024 2 years ago
dues-lookup-2.4.zip
182
2.3
Feb 11, 2022 4 years ago
dues-lookup-2.3.zip
13,278
2.2
Dec 9, 2021 4 years ago
dues-lookup-2.2.zip
1,442
Jun 19, 2021 5 years ago
dues-lookup-2.1.3.zip
19
Jun 6, 2021 5 years ago
dues-lookup.zip
7
Apr 8, 2020 6 years ago
dues-lookup.zip
9,335
Mar 14, 2020 6 years ago
oadueslookup-2.1.0.zip
15
Feb 18, 2019 7 years ago
oadueslookup-2.0.0.zip
20
Dec 15, 2014 11 years ago
oadueslookup-1.0.7.zip
21
Aug 14, 2014 12 years ago
oadueslookup-1.0.6.zip
6
May 8, 2014 12 years ago
oadueslookup-1.0.5.zip
5
Apr 26, 2014 12 years ago
oadueslookup-1.0.4.zip
4
Apr 21, 2014 12 years ago
oadueslookup-1.0.3.zip
7
Apr 18, 2014 12 years ago
oadueslookup-1.0.2.zip
7
Apr 18, 2014 12 years ago
oadueslookup-1.0.1.zip
9
1.0
Apr 18, 2014 12 years ago
oadueslookup-1.0.zip
7
D+ grade

Security

OA Dues Lookup 2.7.1 · audited by WP Registry

High-severity findings.

2 high
Audited release
2.7.1
Findings
2
Worst severity
high
Content hash
7254e2c341bc81a1d339dc2f…

Findings

  • high Subscriber+ can replace the public dues roster via ungated import AJAX

    missing_capability

    add_submenu_page for Import Dues requires manage_options, but the handlers the upload widget actually calls do not. oalm_process_import_upload (wp_ajax_ only) accepts any logged-in user’s multipart file whose client filename ends in .xlsx, and move_uploaded_file’s it to wp-content/uploads/dues-lookup/import.xlsx with no current_user_can, no check_ajax_referer, and no MIME/content check. oalm_import_status likewise has no cap/nonce: if that file exists and oadueslookup_import_status is waiting and cron is off, it sets ignore_user_abort(true), set_time_limit(0), and include’s bin/dues-import-processor.php. The processor TRUNCATEs {$prefix}oalm_dues_data and INSERTs the spreadsheet rows (PhpSpreadsheet Xlsx reader, setReadDataOnly), then the public [oadueslookup] shortcode SELECTs that table for any Member ID. oalm_ack_complete unlinks the file and resets the option, also with no cap/nonce. The processor file additionally require_once’s wp-load.php when hit directly over HTTP and performs the same TRUNCATE with no is_user_logged_in check, so processing after a Subscriber upload does not need a session. Observable: a Subscriber POSTs admin-ajax.php?action=oalm_process_import_upload with a crafted xlsx, then action=oalm_import_status, and every visitor of the lookup page sees attacker-controlled dues/honor/registration data; a large xlsx is an unbounded parse. JS on the admin import screen is not a gate.

    includes/dues-import.php:106-165

    Recommendation

    In all three AJAX callbacks, require current_user_can('manage_options') and check_ajax_referer before touching the filesystem or including the processor. Localize a nonce to the upload widget. Guard bin/dues-import-processor.php so HTTP requests are rejected unless included from this plugin (php_sapi_name() === 'cli' || a defined internal constant). Do not run set_time_limit(0) for unprivileged users.

  • high CSRF on settings can retarget the public pay-dues URL

    csrf

    oadueslookup_options() is the manage_options settings page. After the capability check it treats a POST with hidden field oalm_submit_hidden=oadueslookup-settings as a save: it reads oadueslookup_dues_url, oadueslookup_update_url, oadueslookup_help_email, oadueslookup_dues_register_msg, and related fields, sanitizes (esc_url_raw / sanitize_email / sanitize_text_field), and update_option’s them. The form has no wp_nonce_field, and the handler never calls check_admin_referer or wp_verify_nonce. A cross-site POST while an administrator is logged in writes those options. Consumer: includes/user-facing-lookup-page.php prints get_option('oadueslookup_dues_url') as the “pay your dues” / “pay them here” href for every shortcode visitor (line 46 is echo get_option with no esc_url). Observable: attacker CSRF form with oadueslookup_dues_url=https://evil.example/pay causes every member who follows the lookup CTA to leave the lodge site for the attacker’s payment page. oadueslookup_update_url and oadueslookup_help_email (mailto) are the same class of front-end sinks from this write.

    includes/management-options-page.php:45-118

    Recommendation

    Add wp_nonce_field to the settings form and check_admin_referer() before any update_option. Keep the manage_options gate. Echo oadueslookup_dues_url / oadueslookup_update_url with esc_url() on the front end (the unescaped echo on user-facing-lookup-page.php line 46).

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.