Phase 04.03 · Known CVEs, Real Footholds

Attacking Unpatched Services

Hollywood sells the breach as a lone genius writing a zero-day in a dark room. The reality of real engagements is far more boring — and far more useful. Most footholds come not from exotic, never-seen exploits but from known vulnerabilities that were patched years ago in services nobody bothered to update. The job, most of the time, is simply matching a discovered version number to a public vulnerability and a working exploit. This lesson is about that loop: how to recognize the easy win, run it cleanly, and understand why it keeps working.

00

The unglamorous truth about footholds

If you remember one thing about how attackers actually get in, make it this: the vast majority of breaches exploit vulnerabilities that already had a patch available. Not a secret flaw the vendor never knew about, but a documented weakness with a published fix — one the target organization simply never applied. The exotic zero-day exists, but it is rare, expensive, and hoarded for high-value targets. The everyday foothold is a forgotten server running software that went out of date and stayed that way.

This reframes the whole task. You are not usually inventing an exploit; you are recognizing one. A version banner says a service is three years behind. Three years is a long time in security — long enough for someone to have found a serious flaw, for the vendor to have shipped a fix, and for a reliable public exploit to exist. Your work is to connect those dots faster than the defender patched, which, on an unpatched box, they never did.

This is the "low-hanging fruit." Before you reach for anything clever, you check whether the easy answer is sitting in plain sight — an old, vulnerable, internet-facing service. It almost always is, and it is almost always how a real adversary would have gotten in too. Reporting that path is more valuable to the client than any flashy technique.
Lesson
04.03
Phase
Exploitation
Reads with
CVE · Exploit-DB
01

The repeatable pattern

Attacking an unpatched service is not improvisation — it is a loop you run over and over until something lands. The same four steps apply whether the target is a web server, a file share, a database, or a mail daemon. Master the loop once and every new service is just another pass through it.

That is the entire method. Enumerate → look up → find → validate and run. The skill is not memorizing exploits; it is running this loop quickly, accurately, and without breaking things you were not authorized to break.

02

Famous worked examples

A handful of vulnerabilities show up again and again because they were widespread, devastating, and well documented — which is exactly why they are studied. Each one is a textbook case of the loop above: a specific service, a known flaw, a public exploit. Knowing them by name lets you recognize the shape of the next one.

VulnerabilityServiceWhy it matters
EternalBlue · MS17-010SMBv1A flaw in the SMBv1 file-sharing protocol allowed remote code execution with no credentials, and it powered the global WannaCry ransomware outbreak that hit hundreds of thousands of unpatched Windows machines.
Log4Shell · CVE-2021-44228Log4jA logging library used everywhere could be tricked into fetching and executing attacker-controlled code through a crafted JNDI lookup, turning a simple log message into remote code execution across countless Java applications.
Path traversal & RCE · CVE-2021-41773Apache HTTP ServerA botched fix in Apache 2.4.49 let an attacker walk outside the web root and, on some configurations, read sensitive files or achieve remote code execution with a single crafted request.
Backdoored releasevsftpd 2.3.4A tampered copy of the vsftpd FTP server shipped with a hidden backdoor that opened a root shell when a username ending in a smiley was supplied — a stark lesson in supply-chain trust and running outdated software.
Heartbleed · CVE-2014-0160OpenSSLA missing bounds check in OpenSSL's TLS heartbeat let an attacker read chunks of server memory — including private keys, session tokens, and passwords — without leaving a trace, exposing huge swaths of the encrypted web.

These are presented for understanding and defense, not as a checklist to point at strangers. The pattern is the lesson: a known flaw in an unpatched service, an exploit anyone can find, and an organization that simply never updated. Internalize that shape and you will spot the next "famous" vulnerability while it is still fresh.

03

Why unpatched services persist

It is tempting to assume that anyone running years-old vulnerable software is simply careless. Sometimes they are — but more often the unpatched service is the result of real, rational constraints that defenders live with every day. Understanding why patches do not get applied tells you where to look, and tells you what a good remediation actually has to overcome.

Every one of these is why the low-hanging fruit from earlier exists in the first place. The forgotten box, the frozen legacy app, the end-of-life appliance — these are the easy wins both attackers and testers find first, precisely because the organization had a reason, good or bad, to leave them alone.

04

The defensive flip

Knowing how this attack works is only half the value — the other half is knowing how to shut it down. Because the root cause is so consistent (a known flaw left unpatched), the defenses are well understood. They are not glamorous, but they are exactly what closes the easy path you just learned to walk.

The throughline of this lesson is that the most common way in is also the most preventable. An attacker matches a version to a CVE to an exploit; a defender breaks that chain at any link. Once a service is compromised, though, the exploit is only the entry — what runs after the door opens is the next question. That is where we turn next: the payloads that ride in on an exploit, and the encoders that help them survive the trip.