Connect with our team of offensive security, AI security and pen testing experts at Black Hat Europe 2023. Learn More

Connect with our team of offensive security, AI security and pen testing experts at Black Hat Europe 2023. Learn More

Managed Detection & Response

Eradicate cyberthreats with world-class intel and expertise

Managed Security Services

Expand your team’s capabilities and strengthen your security posture

Consulting & Professional Services

Tap into our global team of tenured cybersecurity specialists

Penetration Testing

Subscription- or project-based testing, delivered by global experts

Database Security

Get ahead of database risk, protect data and exceed compliance requirements

Email Security & Management

Catch email threats others miss with layered security & maximum control

Co-Managed SOC (SIEM)

Eliminate alert fatigue, focus your SecOps team, stop threats fast, and reduce cyber risk

Microsoft Exchange Server Attacks
Stay protected against emerging threats
Rapidly Secure New Environments
Security for rapid response situations
Securing the Cloud
Safely navigate and stay protected
Securing the IoT Landscape
Test, monitor and secure network objects
Why Trustwave
The Trustwave Approach
Awards and Accolades
Trustwave SpiderLabs Team
Trustwave Fusion Platform
SpiderLabs Fusion Center
Security Operations Centers
Technology Alliance Partners
Key alliances who align and support our ecosystem of security offerings
Trustwave PartnerOne Program
Join forces with Trustwave to protect against the most advance cybersecurity threats
SpiderLabs Blog

No Country For Old Vulnerabilities

Finding a common cross-site scripting vulnerability in Cisco's new IOS Software Checker Feature.

During my normal day-to-day work I interface with a number of websites while researching the details of recently released vulnerabilities. It was a pleasant surprise when one day this mundane task turned into unearthing a vulnerability in one vendor's security checker web interface.

Now, everyone makes mistakes. I know I do, Little Flippant Inaccuracies happen. It's always good to remember how small the security community can be and engaging your peers with respect is smarter than taking pot shots at them. This post is not intended to be a jab at the vendor in question, their web developers were quick to understand the issue and produce a patch, but not before I could have a little fun practicing some web application filter evasion techniques.

The day started like any other, I was looking into a few new vulnerabilities reports provided by Cisco. With each new vulnerability report I looked into though, instead of getting a list of affected software versions I was directed to the new "Cisco IOS Software Checker" tool. It's a useful tool for administrators who need to identify whether a version of Cisco IOS is missing security patches/updates. Unfortunately this tool is not so useful for identifying what advisories affect which versions of IOS (what I needed to do).

Inconvenienced by a minor change, I half jokingly submit some garbage into their form field and was rejected for not inputting a valid IOS version string - which I expected.


Knowing that IOS version strings can contain a lot of various characters, I try again leading with a valid IOS version string. "15.1" followed by a bunch of A's. I was surprised to see the "AAAAAA" injection made it through onto the destination page.

Screen Shot 2014-11-13 at 8.12.40 AM

Seeing what looked like a weakness in the app, I felt compelled to poke around a bit. Looking through the HTML, I found one injection point with promise: an input field's onclick attribute.


Now I needed to figure out what, if any, useful characters I would have to work with. I submitted a sample string of HTML-specific characters and found a few that did not get mangled or changed in the response.


That double quote and parenthesis they let through there, that made my day. I now knew what I would be able to inject into that input field and that was all that was needed.

The first step was to escape into that <input> tag, the onclick="…" attribute was my way in, with a basic double quote added to the attack string I would be able to add elements into the <input> tag. Here is the input tag after submitting 15.1"INJECTION_STUFF_HERE into the form.

<input … onclick="redrawRSS('15.1"INJECTION_STUFF_HERE … >

Now that I was outside of the onclick attribute, but stuck inside input, my first thought was to change the input field to an image type so I could get some visual response from their web tool.

<input … onclick="redrawRSS('15.1" type=image src=… >

This worked perfectly, but I wanted one to be sure I could execute javacsript as well … with a basic onload="" attribute added to the <input> tag. I was easily able to alert(1); on the destination page.

... but a basic alert(1); wouldn't suffice for the Spiderlabs Blog. I've spiced it up a little in the example walk through below:



With the attack validated, the information was sent over to Cisco who quickly addressed the issue. Now, any similar requests to the Cisco IOS Software Checker are denied.

The moral of this story is: never trust user input, and blacklists fail. Blocking just the characters that are assumed bad did not work, allowing just one character too many left the application vulnerable to this old and basic attack method.

Latest SpiderLabs Blogs

The 2023 Retail Services Sector Threat Landscape: A Trustwave Threat Intelligence Briefing

The annual holiday shopping season is poised for a surge in spending, a fact well-known to retailers, consumers, and cybercriminals alike. The latter group, however, is poised to exploit any...

Read More

Pwning Electroencephalogram (EEG) Medical Devices by Default

Overall Analysis of Vulnerability Identification – Default Credentials Leading to Remote Code Execution During internal network testing, a document was discovered titled the “XL Security Site...

Read More

Hidden Data Exfiltration Using Time, Literally

I was looking at my watch last week and my attention was moved towards the seconds over at the right of the watch face, incrementing nicely along as you’d expect. Now, I don’t know if I’d just spent...

Read More