SQL injection continues to be one of the primary methods by which attackers exploit vulnerable Web applications and gain access to critical corporate databases. These attacks strike various types of infrastructures and software platforms; sometimes they are launched from inside the corporate network, but more typically external attackers use globally accessible Web applications as entry points.
There have been several instances of SQL injection attacks in the news recently, including a major breach that hit Sony Corp. What all these attacks have in common is that they rely on structured data, stored in a relational database in a multitier application structure.
SQL injection flaws are arguably public enemy No. 1. Even after years as a leading Web security threat, SQL injection still makes up the largest portion of the vulnerabilities discovered today. In 2010, they were by far the most commonly found Web application vulnerability, followed by cross-site scripting errors, and have been on the OWASP Top 10 list of most serious Web security issues for years.
SQL injection, at its most basic level, is simply manipulating an existing SQL query to perform an action not intended by the developer. This is typically done through the user interface in some area of a Web application.
All SQL injection vulnerabilities begin with nonvalidated user input of some type. User input can take many forms and include anything an attacker can manipulate that is processed by the server in some way. This includes user-agents, HTTP headers, POST parameters, cookies, GET parameters, and even referrer headers.
What makes nonvalidated user input unique is that the application does not perform sufficient checks to ensure that the input received is of the type and manner expected. Simplified, this means that although your application is written to receive, for example, a string of alphanumeric characters to be input as a user name, it does not validate that input and allows an attacker to insert, in the case of SQL injection, a database query.
There are two broad methods attackers use to take advantage of SQL injection vulnerabilities: automated and manual. These two kinds of attacks are mechanically very different. Automated exploitation is generally the result of a tool built for a specific purpose. LizaMoon and Asprox, for example, use mass injection attacks to maximize their breadth and spread their code indiscriminately. These types of mass attacks generally target a very specific application architecture, such as IIS servers running classic ASP with Microsoft SQL Server database servers, in the case of Asprox.
In many cases, the attacker can take complete control over the underlying operating system of the SQL server; the attacker can even take over the Web application, and ultimately the Web server itself.
To get a detailed description of how SQL injection attacks work -- and to get recommendations on how to prevent them -- download the free report.
Have a comment on this story? Please click "Comment" below. If you'd like to contact Dark Reading's editors directly, send us a message.