Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
openmeetings-stale-install-admin — Apache OpenMeetings 9.1.0 - High - Remote - Privilege leftover - stale /install wizard inserts second ADMIN | Kitploit
Tools/GitHubGitHub/abraxas/openmeetings-stale-install-admin
Authentication & AuthorizationPrivilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationLabs & Practice
GitHubabraxas/openmeetings-stale-install-admin

openmeetings-stale-install-admin

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Apache OpenMeetings 9.1.0 - High - Remote - Privilege leftover - stale /install wizard inserts second ADMIN

View Repository
2 days agoNot yet reviewed

Abraxas Labs - openmeetings-stale-install-admin

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  openmeetings-stale-install-admin

openmeetings-stale-install-admin

Class: Privilege leftover Reach: Remote

Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation

InstallWizardPage redirects new requests after isInstalled(). A Wicket page opened before the first install stays live. Finish on that stale session runs loadAll(cfg, true). ImportInitvalues.checkInstalled logs "no need to install" and does not return. The second finish inserts another ADMIN+SOAP user.

IDno CVE yet
ClassPrivilege leftover
ReachRemote (unauthenticated /install during first setup)
CWECWE-367, CWE-269
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
ProductApache OpenMeetings
Affected9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) first-install window
Authnone on the stale wizard session
LicenseGNU Affero GPL v3.0
Lab127.0.0.1:18159 only. Official 9.1.0 tarball, uninstalled, HTTP 5080.

I pinned tag 9.1.0, peel 9773c59e1af327bf988018e661f456ae9997c29f. The leftover needs a wizard page opened before the first install completed.

What an attacker can do

Reach /openmeetings/install while the instance is not yet installed. Keep that JSESSIONID. Wait until an operator finishes the first install. POST Finish on the stale page.

MethodSinkPrivilege
Stale POST wizard Finish (wizard-form-buttons-finish)ImportInitvalues.checkInstalled logs and continues (ImportInitvalues.java:607-612); loadInitUserAndGroupIntegrity (lab-proven): second user staleadm with rights ADMIN, SOAP, LOGIN, DASHBOARD, ROOM. SOAP login succeeded. User list count=2.
Same loadAll(cfg, true)persistence / SMTP / paths from the stale formIntegrity (inferred): rewrite persistence.xml and mail settings from attacker-controlled wizard fields. Not required for SUCCESS.

Lab-proven vs inferred: second ADMIN+SOAP login is lab. persistence.xml rewrite is inferred from loadAll.

Requires: attacker fetched /install before isInstalled(). Operator then completed install. Same Wicket page id still posted. Official docker image is already installed, so this is the tarball first-boot window (and any reinstall).

Adjacent surface that stays closed

SurfaceWhy
Fresh GET /install after installconstructor redirects to /signin (InstallWizardPage.java:31-34). Lab: new session landed on signin.
Unauthenticated SOAP login before installhealth installed=false; login fails until wizard finish.
Tomcat manager / H2 consolemanager excluded, H2 console off on this pin.

How I found it

The constructor lock looks like a complete fix for "install after install". checkInstalled still only logs. Wicket stores the page in the session. A session that crossed isInstalled() keeps a Finish button that still calls loadAll.

admin.sh -i is a second JVM and does not load Tomcat CryptProvider, so this lab uses a second web wizard as the first installer and the stale page as the attacker.

Lab

cd lab
./run.sh

Loopback http://127.0.0.1:18159/openmeetings. Witness last line:

SUCCESS OPENMEETINGS-STALE-INSTALL-WITNESS

Suggested fix

checkInstalled must return (or throw) when already installed. Bind Finish to a one-time install token. Drop the Wicket page from the session when isInstalled() flips. Do not insert a second ADMIN from loadInitUserAndGroup if an admin already exists.

Contact

Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]

Vendor: [email protected]

Download Tool