SQL Injection
~
mercredi 17 septembre 2014
Libellés :
Tutorials
SQL Injection
SQL injection is a code injection technique, used to attack data driven
applications, in which malicious SQL statements are inserted into an
entry field for execution (e.g. to dump the database contents to the
attacker).SQL injection must exploit a security vulnerability in an
application's software, for example, when user input is either
incorrectly filtered for string literal escape characters embedded in
SQL statements or user input is not strongly typed and unexpectedly
executed. SQL injection is mostly known as an attack vector for websites
but can be used to attack any type of SQL database.
In a 2012 study, security company Imperva observed that the average web
application received 4 attack campaigns per month, and retailers
received 2 times as many attacks as other industries.
Classic SQLIA
Inference SQL injection
Interacting with SQL injection
Database management system-specific SQLIA
Compounded SQLIA
SQL injection + insufficient authentication
SQL injection + DDoS attacks
SQL injection + DNS hijacking
SQL injection + XSS
SQL injection + Filter bypass + Havij + Backtrack R6
A complete overview of the SQL Injection classification is presented in the next figure. The Storm Worm is one representation of Compounded SQLIA.
This classification represents the state of SQLIA, respecting its evolution until 2010—further refinement is underway.
This form of SQL injection occurs when user input is not filtered for
escape characters and is then passed into a SQL statement. This results
in the potential manipulation of the statements performed on the
database by the end-user of the application.
The following line of code illustrates this vulnerability:
The following line of code illustrates this vulnerability:
' or '1'='1
Renders one of the following SQL statements by the parent language:
SELECT * FROM users WHERE name = '' OR '1'='1' -- ';
The following value of "userName" in the statement below would cause the deletion of the "users" table as well as the selection of all data from the "userinfo" table (in essence revealing the information of every user), using an API that allows multiple statements:
a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't
This input renders the final SQL statement as follows and specified:
Blind SQL Injection is used when a web application is vulnerable to an
SQL injection but the results of the injection are not visible to the
attacker. The page with the vulnerability may not be one that displays
data but will display differently depending on the results of a logical
statement injected into the legitimate SQL statement called for that
page. This type of attack can become time-intensive because a new
statement must be crafted for each bit recovered. There are several
tools that can automate these attacks once the location of the
vulnerability and the target information has been established.
Conditional responses
One type of blind SQL injection forces the database to evaluate a
logical statement on an ordinary application screen. As an example, a
book review website uses a query string to determine which book review
to display. So the URL http://books.example.com/showReview.php?ID=5
would cause the server to run the query
SELECT * FROM bookreviews WHERE ID = 'Value(ID)';
SELECT * FROM bookreviews WHERE ID = '5' AND '1'='1';
0 commentaires :
Enregistrer un commentaire