Dingtian harden(): rotate the admin/admin web login (cosmetic)
harden() now rotates the device's default admin/admin web-UI login via GET /userset.cgi?<old>&<old>&<new>&<new>& (best-effort: a failure logs and doesn't fail the assign). The new password is stored back in config (webUser/webPassword) so a re-run can rotate again, and is stripped from the assign response like the push secret. Documented the load-bearing caveat: this device's CGI API is fully UNAUTHENTICATED — config read/write, relay fire, and userset.cgi itself all return 200 with no credentials (verified on hardware). admin/admin gates only the browser UI, and there's no inbound-auth setting (only session_en, which bricks the read API). So the rotation is defence-in- depth for the UI, NOT a boundary; the signed event log remains the real anti-fraud guarantee. Verified rotation end-to-end on 10.0.10.5 (success &0&, wrong-old-pw &2&); device left at admin/admin.
This commit is contained in:
+13
@@ -192,3 +192,16 @@ firmware breaks the config-READ API (ECONNRESET) — locked us out, needed a FAC
|
||||
RESET to recover. harden() deliberately does NOT touch session_en. The open CGI
|
||||
API is accepted as flat-network reality; the signed log is the real guarantee.
|
||||
Recorded in [[device-input-flow]] + [[dingtian-relay]].
|
||||
|
||||
## [2026-06-14] query | Dingtian web-login rotation + CGI API is unauthenticated
|
||||
While addressing "change the device's default admin/admin", traced the device web
|
||||
UI JS (system.js) → the change-login endpoint is
|
||||
`GET /userset.cgi?<old_u>&<old_p>&<new_u>&<new_p>&` (response `&0&/&` = success,
|
||||
`&2&/&` = wrong old pw). Added a best-effort `setWebLogin`/`#rotateWebLogin` step
|
||||
to `harden()` (new pw stored back as config `webPassword`, stripped from API
|
||||
responses). KEY FINDING: the device CGI API needs NO authentication — config dump,
|
||||
config write, relay fire, and userset.cgi itself all return 200 unauthenticated
|
||||
(verified on 10.0.10.5). admin/admin gates only the browser UI; there is no
|
||||
inbound-auth setting (only session_en, which bricks the read API). So rotating the
|
||||
login is COSMETIC, not a boundary — the signed event log remains the real
|
||||
guarantee. Recorded in [[dingtian-relay]] (new Hardening section).
|
||||
|
||||
Reference in New Issue
Block a user