CVE-2017-5638 was an OGNL expression injection in Apache Struts' file upload handler. A patch existed two months before the breach. What made this an injection vulnerability rather than another type of flaw?
Django REST endpoint. One line lets an attacker read your entire database. Click it.
Structure and data are compiled separately — the attacker's input can never change what the query does.
Parameterize every query. Never concatenate user input into a command, query, or template — regardless of language, framework, or interpreter.
Which line introduces the SQL injection vulnerability?
Which Node.js version is safe against SQL injection?
What does this payload achieve?
Quick reference: Tautology = makes WHERE always true (e.g., OR 1=1). UNION-based = appends a second query to extract other tables. Blind/boolean = infers data character by character from true/false responses.
If a string you didn't write can change what an interpreter does rather than what it reads, you have an injection vulnerability.
A05 · Injection.filter() parameterises automatically. Raw SQL only when the ORM can't express the query. Never concatenate or interpolate user input into a query string — no exceptions.Apache Struts 2 contained a critical remote code execution vulnerability (CVE-2017-5638) in its file upload handling — specifically an OGNL expression injection, a different flavor from the SQL injection you'll practice next. A patch was released on 7 March 2017. Equifax's security team received the advisory and issued an internal directive to patch within 48 hours. The directive was not followed. Attackers exploited the unpatched system on 13 May 2017 — 66 days after the patch was available. The root cause is the same across all injection variants: untrusted input reaching an interpreter without structural separation.
Attackers moved laterally across 30 servers, querying databases containing names, SSNs, birth dates, addresses, and credit data. An SSL inspection certificate had expired 19 months earlier — encrypted traffic leaving the network was flowing through uninspected. The monitoring gap wasn't discovered until after the breach was reported externally.
Equifax did not detect the breach internally. On 29 July 2017, their security team renewed the expired certificate and immediately observed suspicious encrypted traffic — but only because they were already investigating after being alerted by an outside party that customer data was circulating on criminal forums.