Privilege escalation in SQL*Plus is not magic. It is the moment a misstep in configuration or permissions becomes a direct path from limited access to full control over a database instance. The danger comes from how quietly it happens. A single overlooked privilege. An unpatched role. An assumption that users only run what they are supposed to run.
SQL*Plus remains common because it is simple, fast, and works everywhere. It’s also old enough that forgotten defaults and insecure grants still lurk in real systems. One weak credential, one misconfigured TNS listener, and low-level accounts can chain commands, query internal tables, and elevate themselves to DBA. From there, roles can be created, users modified, auditing turned off, schema altered, and critical data dumped.
Privilege escalation through SQL*Plus usually follows patterns: misplaced grants like GRANT DBA TO PUBLIC, excessive privileges on PL/SQL packages, or abuse of EXECUTE on dangerous system procedures. Sometimes the vector is a chain of stored procedures that weren’t reviewed for escalating paths. Other times it’s a trust between instances that passes privileges without validation. The attack surface also expands when developers or automation scripts store credentials in clear text, especially in environments where OS_AUTHENT_PREFIX is poorly understood or disabled.