From be2f607839cc2306b9891ec33f18b328d461f89f Mon Sep 17 00:00:00 2001 From: TSYS Group COO Date: Thu, 13 Aug 2026 21:01:22 -0500 Subject: [PATCH] feat: enable Cloudron TOTP 2FA for vp-techops (CMMC compliance) Cloudron's 2FA enrollment flow discovered via comprehensive DOM dump: 1. Profile page -> click "Setup" to start 2FA 2. Cloudron defaults to Passkey -> click "switchToTotp" 3. TOTP secret appears as base32 text -> extract via regex 4. Enter code in #totpTokenInput -> click Enable Fixed wrong selectors in cloudron_panel_login: the OIDC TOTP field is #inputTotpToken (not #inputTotp as previously assumed). Verified full 2FA round-trip: password login -> TOTP prompt -> code entry -> #/apps. 2FA is now enabled on the vp-techops Cloudron account with TOTP secret stored in Bitwarden. This removes a hard blocker for CMMC L3 compliance. --- docker-compose.yml | 4 + dump-cloudron-dom.py | 222 ++++++++++++++++++++++++++++ enable-cloudron-2fa.py | 309 +++++++++++++++++++++++++++++++++++++++ investigate-2fa-login.py | 116 +++++++++++++++ provision-agent.py | 253 +++++++++++++++++++++++--------- verify-cloudron-2fa.py | 74 ++++++++++ 6 files changed, 905 insertions(+), 73 deletions(-) create mode 100644 dump-cloudron-dom.py create mode 100644 enable-cloudron-2fa.py create mode 100644 investigate-2fa-login.py create mode 100644 verify-cloudron-2fa.py diff --git a/docker-compose.yml b/docker-compose.yml index a947ea8..de5c721 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,3 +13,7 @@ services: - ./provision-agent.py:/app/provision-agent.py:ro - ./test_bw_helper.py:/app/test_bw_helper.py:ro - ./test_bw_persistence.py:/app/test_bw_persistence.py:ro + - ./dump-cloudron-dom.py:/app/dump-cloudron-dom.py:ro + - ./enable-cloudron-2fa.py:/app/enable-cloudron-2fa.py:ro + - ./verify-cloudron-2fa.py:/app/verify-cloudron-2fa.py:ro + - ./investigate-2fa-login.py:/app/investigate-2fa-login.py:ro diff --git a/dump-cloudron-dom.py b/dump-cloudron-dom.py new file mode 100644 index 0000000..16e5c98 --- /dev/null +++ b/dump-cloudron-dom.py @@ -0,0 +1,222 @@ +#!/usr/bin/env python3 +""" +dump-cloudron-dom.py -- Comprehensive DOM dump of Cloudron profile page. + +Captures ALL interactive elements (not just standard form inputs) to find +the TOTP enable button that previous dumps missed. Cloudron uses Pankow/Vue +components where buttons are often
not