Kill Chains and Coffee Episode 2

7.16.26
WRITTEN BY
Greg Heon
Kill Chains and Coffee Episode 2
In the second part of the “Kill Chains and Coffee” series, Greg Heon describes how an unauthenticated Armadin attacker was able to exploit the information found in a static CLAUDE.md file on a corporate website to execute a kill chain in the production environment. This engagement demonstrates the value of a proactive offensive security strategy that helps you close exploitable paths before machine-speed threat actors can attack them.

Advancing from the Internet to Remote Code Execution on a Core Web App

When we perform scoped customer engagements, some simply want to know whether Armadin can breach their perimeter. Others want to know what happens once we’re in their system. They ask us to prove how a remote code execution (RCE) would actually impact their ability to deliver on their mission or run their business.

We recently ran a black box test in a real environment, proving an actual kill chain that started with what seemed like a low-severity issue. But this commonly known problem suddenly took on much broader implications in the AI era.

“In this new world we’re in, there’s only so long to prepare before bad actors use AI to hurt your business.”

Finding Source Code for a WebSocket Service

In this particular engagement, we came in from the Internet without any information, just like any attacker could. The purpose was to demonstrate what AI-powered attackers could do against the organization’s perimeter and help the customer quickly remediate exploitable risk. The attack sequence started with one of the core websites on their primary domain rather than some obscure entry point.

We suspected that AI (specifically, Claude Code) had helped write the website, because we discovered a static CLAUDE.md file with sensitive information such as the application’s architecture, API requests, and other key components.

One item the file referenced was a WebSocket service used for bid submission. It shouldn’t have been discoverable without a user account, but we proceeded to check different static files and found the NodeJS source code that backs the WebSocket service.

Tracking the Kill Chain Sequence

When our AI analyzed the code, we initiated the following sequence:

  • There was an authentication check in front of the WebSocket, but it had a bug. It used an “and” instead of “or,” so Armadin’s attacker could access the WebSocket without a user account.
  • There was a bid_type field in the socket messages and we saw that it was passed directly into SQL, so we ran a SQL injection attack. Armadin’s attacker submitted a bid type that included a quote to close the string, a semicolon to move to the next line, and a second line of SQL that inserted a new Armadin superadmin into the database.
  • After we created a user account with maximum possible permissions, we logged into the website and navigated to restricted admin pages.
  • We went to a Joomla administration panel and were able to prepare and upload a malicious plugin that ran shell_exec within a PHP file to get RCE and demonstrate that we could get the server to run arbitrary code that we specified. This proved that we could put anything on their website, such as malware, or expose them to all kinds of nasty things—including AI-created issues.

Creating Lessons for CISOs and Security Teams

In this engagement, the story ended well for the customer. Once they were alerted that we could get an RCE on one of their core web applications, they fixed it within 24 hours. They immediately understood the value of preempting the type of AI-driven hyperattacks we’ll increasingly see in the wild.

For CISOs and other security leaders, this type of repeatable engagement provides a vital learning opportunity for their teams in a safe environment. For frontline security staff, Armadin provides a critical tool to augment their work as they build proof behind their decisions and credibility across the organization.

It’s one thing to get an alert about an exposed static file. Your app team might eventually fix it but probably not in the next sprint. But when you tell them about an exposed static file with leaked source code that could lead to RCE on a production web application, they’re going to prioritize a fix immediately.

For frontline security staff, Armadin provides another tool to augment their work as they build proof behind their decisions and credibility across the organization.

It’s a good reminder that your goal shouldn’t just be continuous testing. The objective should be to prove an actual kill chain. The implication of this particular engagement is that exposing sensitive static files on your website is generally a bad practice. But when you factor in the possibility of AI-driven attacks, it can take on much broader implications.

One of the true advantages of Armadin is narrowing your focus to things that an attacker can actually exploit. We point a laser at the exact problem, focusing on the risks that are reachable, exploitable, and that have a blast radius where we can accomplish the objectives our customers set. Armadin’s kill chains should be treated like security incidents, and customers regularly fix them within the day.

Contributors: Armadin expert red teamers have years of experience in the world’s most critical environments, helping to build the Ultimate Attacker. Special thanks to Ryan Lindner for contributing to this engagement.

Stay Ahead of Whatever Threats May Come

To explore how a scoped assessment from Armadin can help you prepare for the new wave of AI hyperattacks, be sure to request a demo.

Continue reading
Kill Chains and Coffee Episode 2
Blog
7.16.26
Kill Chains and Coffee Episode 2
Get a Demo and Meet the Armadin Team at Black Hat 2026
Event
Blog
7.15.26
Get a Demo and Meet the Armadin Team at Black Hat 2026
Closing the Attack Paths That Lead to OT
Blog
7.14.26
Closing the Attack Paths That Lead to OT