4. UART shell + System enumeration

1. Gaining a shell

First, identify the device name of the USB-UART adapter:

Next, use picocom to retrieve a shell, with the baud rate as 115200 (a common first guess)

  • Received a log output with non-gibberish text

    • this means that the correct baud rate was chosen

  • A "Hit enter to continue..." message was shown

    • From there, we are able to pop a BusyBox v1.7.2 shell

2. System enumeration

List of enumeration steps:

  1. Read through the initial boot logs

  2. Useful commands

  • View available memory

  • List available binaries

  • Identify architecture and stack protections

  1. Firmware version discovery

  • web interface

  • nvram

  1. Identify httpd binary location

2.1 Boot logs

  1. Boot version

  1. Other useful information

2.2 Useful commands

Available memory:

List all the available binaries:

Architecture and stack protections:

2.3 Firmware version discovery

2.3.1 Web interface (port 80)

We are able to identify the firmware version from the main web page running on port 80:

2.3.2 nvram command

My device is running the firmware version 2.0.02

2.4 httpd binary (CVE-2025-60690, CVE-2025-60691, etc.)

3. Filesystem permissions

  • Notice that there are a few "mount points" of the filesystem that are readable + writable (rw). However, there are a few caveats, explained for each part:

  1. rootfs (/)

  • Shown as read+writable (rw)

  • However, it maps to the /dev/root partition when the kernel is loaded

  • Hence, it inherits the permissions of /dev/root, and will be read-only (ro)

  1. devfs (/dev)

  • read+writable

  1. sysfs (/sys)

  • Shown as read+writable (rw)

  • However, it is mainly for the kernel to generate data on the fly

  • Files can't be created directly, but existing ones (created by the kernel) can be modified

  1. proc (/proc)

  • Shown as readable+writable (rw)

  • Similar to the sysfs, files can't be created, but existing ones (created by the kernel) can be modified:

    • Eg. echo 1 > /proc/sys/net/ipv4/ip_forward

  1. ramfs (/tmp)

  • read+writable

Last updated