root@thehacksparrow:~/writeups$ SYSTEM ONLINE
root@sparrow:~/writeups$ cat atom.md
// writeups

Atom

17 Apr 2021 · 14 min read · root access
Atom - maquina de Hack The Box

Executive summary — Atom is a Windows machine built around a poorly designed software-update channel: an SMB share writable by an anonymous guest lets an attacker deliver a malicious "update" to an automated QA process, which runs it with no real validation beyond an Authenticode signature check broken by CVE-2020-4075 in electron-updater. From there, a configuration file belonging to a task-board app (PortableKanban) stores the Redis password encrypted with an obsolete algorithm and static, public keys — and Redis, in turn, stores the Administrator's password encrypted with the exact same broken scheme.

PlatformHack The Box
Operating systemWindows 10 Pro (Build 19042)
DifficultyMedium
StatusRetired
Target IP10.129.82.30
HostnameATOM
Starting pointAnonymous SMB (guest, no password)

Attack map

guest (anonymous SMB)
   │  "Software_Updates" share is WRITABLE + QA PDF
   ▼
PDF: "drop an update in a client folder and QA will install it"
   │  decompile heed_setup_v1.0.0.zip -> app.asar -> electron-updater < 4.3.1
   ▼
CVE-2020-4075 (electron-updater signature-check bypass)
   │  latest.yml + s'hell.exe (apostrophe breaks Get-AuthenticodeSignature)
   │  uploaded to client1/ over guest SMB, the automated QA process installs the "update"
   ▼
[USER] atom\jason (reverse shell)    user.txt: 9f0d33cc04cd04de394bc52aed17be69
   │  PortableKanban.cfg -> DbEncPassword (static-key DES-CBC)
   ▼
Redis password: kidvscat_yes_kidvscat
   │  redis-cli -a ... keys/get -> pk:urn:user:... record for Administrator
   │  same static DES -> plaintext password
   ▼
[ROOT] Administrator : kidvscat_admin_@123 -> WinRM -> root.txt: 4f066823192a6372c0917db6e68f613d

1. Enumeration

1.1 Ports

sudo nmap -p- --min-rate 2000 -T4 -Pn 10.129.82.30 -oN nmap/allports.txt
sudo nmap -p 80,135,443,445,5985,6379 -sCV -Pn 10.129.82.30 -oN nmap/services.txt
80/tcp   http         Apache 2.4.46 (Win64) PHP/7.3.27  -> "Heed Solutions"
135/tcp  msrpc
443/tcp  ssl/http     Apache (same site)
445/tcp  microsoft-ds Windows 10 Pro 19042 (host: ATOM)
5985/tcp WinRM
6379/tcp redis        Redis key-value store

A Windows host with Redis exposed directly on port 6379 is unusual — Redis is almost always a Linux-side service in these environments — and it is the first hint that some third-party application bundles it as a backend, rather than it being a deliberate infrastructure deployment. Together with the "Heed Solutions" web app (a product name, not a generic company), it points at the real target not being the website itself, but a desktop application the website distributes.

1.2 SMB (guest)

nxc smb 10.129.82.30 -u guest -p '' --shares
Share             Permissions
IPC$              READ
Software_Updates  READ,WRITE      <-- writable as guest

The Software_Updates share is writable by anyone, authenticated or not. Inside it there are three folders, client1/2/3, and a PDF:

smbclient //10.129.82.30/Software_Updates -U 'guest%' -c 'ls; get UAT_Testing_Procedures.pdf'
pdftotext UAT_Testing_Procedures.pdf -

The PDF, "Heedv1.0 - Internal QA Documentation", explains:

  • "Heed" is a notes app built with electron-builder.
  • QA process: "To initiate the QA process, just place the updates in one of the 'client' folders, and the appropriate QA team will test it to ensure it finds an update and installs it correctly."

In other words: if an "update" is dropped in a client folder, an automated process will install it with no further human intervention. This is the key that unlocks the whole chain — a writable share alone is worth nothing unless something on the other end is willing to run whatever gets dropped into it.

1.3 The application (web)

The website offers heed_setup_v1.0.0.zip. Unzipping it and extracting the NSIS installer leads to app-64.7z, whose resources folder contains:

  • resources/app-update.yml → url: 'http://updates.atom.htb' (the update feed the app polls periodically).
  • resources/app.asar → extractable with asar e; main.js shows the app uses the electron-updater module to self-update.

electron-updater (< 4.3.1) is vulnerable to CVE-2020-4075, a signature verification bypass publicly documented by Doyensec. Before running a downloaded installer, electron-updater on Windows shells out to PowerShell to check its Authenticode signature with Get-AuthenticodeSignature <path>, but builds that command by concatenating the downloaded file's name without sanitizing it. A file name containing a single quote breaks PowerShell's quoting and injects arbitrary code into that command — with the practical effect that the "signature check" never actually runs, and the installer executes regardless of whether it's signed or its signature is invalid.

🔒 Clearance required

Root Access unlocks the content you can't see — everything else on the site is already open.

See Root Access plans

No account? Create one free then upgrade from your console.