Finding SQL Injection Attacks In Unexpected Quarters
SQL injection attacks have been plaguing the Web for so long that it may seem that they’ve grown ho-hum. But even while the fundamentals stay the same—namely malforming application input to trick databases into thinking they’ve been queried with SQL statements—new Web and mobile application development trends and new attack techniques using old SQL injection tricks are casting SQLi in a new light.
For example, researchers with Sucuri Security early this month announced that they discovered how attackers were able to leverage Google search engine bots to help launch SQLi attacks against websites.
“In this scenario, the bot was crawling Site A. Site A had a number of links embedded that had the SQLi requests to the target site, Site B,” wrote Daniel Cid, a researcher with the firm. “Google Bot then went about its business crawling pages and following links like a good boy, and in the process followed the links on Site A to Site B, and began to inadvertently attack Site B.”
[How do you know if you’ve been breached? See Top 15 Indicators of Compromise.]
As Cid explains, this method allows the attacker to let the Google bot do the heavy lifting in the attack while providing a way to cover tracks forensically and avoid Web application firewall detection.
While the Google bot technique is a more exotic example of how SQLi attacks have changed without many shifts in the underlying technology principles behind them, IT could be dealing with thornier but workaday changes in the SQL injection vulnerability landscape very soon. The shift will come as more SQLi vulnerabilities are exploited in unexpected mobile and web applications, says Dan Kuykendall, co-CEO and CTO of NTO Objectives. These are developed using new programming formats and development frameworks like JSON, AMF, and REST that don’t necessarily depend on the name-value pair data representation that SQLi attacks tend to target for injection.
“The world has been changing, there are a whole bunch of new formats that we’ve seen traffic being sent in. There are all these new ways of building apps, you’ve got all this REST, you’ve got AJAX and you’ve got these much more dynamic apps, mobile apps,” Kuykendall says. “And they’ve all got much more different ways of packaging up the data. They don’t like to settle for the name-value pairs of the past.”
While it would be easy to then assume that these new applications are as a result not vulnerable to SQLi attacks, the truth is different, Kuykendall explains. These applications—whether mobile or Web—are still passing large amounts of data between the application and the database, and are still vulnerable to injection as long as attackers take a little time to understand how the syntax has changed.
“I can still do my classic SQL injection attacks, I just have to start adjusting where I apply the payloads,” he says. “I no longer am able to put in the name-value pair, instead I’m having to look and understand the format, understand how to inject into that and then I can still do my SQL attacks.”
The difficulty is because the format of how these SQLi payloads are delivered looks differently in modern applications, many traditional application scanners are missing the vulnerabilities. But as he puts it, developers are still making the same core mistakes they always have.
“They’re passing data back and forth; they’re taking that data and doing the same things they’ve always done with them and use them in SQL statements. A lot of times because they’re getting the data from some parser, then the developer uses the data and they trust the client,” Kuykendall says. “Ultimately, these are just parameters; developers are taking values form the client and doing something with that. And the more it’s abstracted, the more likely they miss out on doing the input escaping or whatever they need to do [to prevent injection].”
Have a comment on this story? Please click “Add Your Comment” below. If you’d like to contact Dark Reading’s editors directly, send us a message.