Malware Trojan.Mebromi

Download Report

Transcript Malware Trojan.Mebromi

(CPSC620)
Sanjay Tibile
Vinay Deore
Agenda

Database and SQL

What is SQL Injection?

Types

Example of attack

Prevention

References
Database :
A database is an organized collection of data for one or more
purposes in digital form.
SQL :
It is a programming language designed for managing data
in relational database management systems (RDBMS).
SQL Injection:
SQL injection is an attack in which malicious code is inserted
into strings that are later passed to an instance of SQL Server
for parsing and execution.
A SQL injection is often used to attack the security of a
website by inputting SQL statements in a web form to get a
badly designed website to dump the database content to the
attacker.
Many web applications take user input from a form, Often
this user input is used literally in the construction of a SQL
query submitted to a database.
Examples :
Brute-force password guessing
SELECT email, passwd, login_id, full_name FROM members WHERE email =
'[email protected]' AND passwd = 'hello123';
The database isn't readonly
SELECT email, passwd, login_id, full_name FROM members WHERE email = 'x'; DROP
TABLE members;
Adding a new member
SELECT email, passwd, login_id, full_name FROM members WHERE email = 'x'; INSERT
INTO members ('email','passwd','login_id','full_name') VALUES
('[email protected]','hello','steve','Steve Friedl');
Mail me a password
SELECT email, passwd, login_id, full_name FROM members WHERE email = 'x'; UPDATE
members SET email = '[email protected]' WHERE email = '[email protected]';
Types

Incorrect Type Handling

Poorly Filtered Strings

White Space Multiplicitytackers
error information
get hold of the
Using SQL injections, attackers can
 Add new data to the database
Could be embarrassing to find yourself selling some
inappropriate items on your site
Perform an INSERT in the injected SQL
 Modify data currently in the databaseCould be
very costly to have an expensive item suddenly be
deeply ‘discounted’Perform an UPDATE in the injected
SQL
 Often can gain access to other user’s system
capabilities by obtaining their password
Examples:




In January 2008, tens of thousands of PCs were infected
by an automated SQL injection attack that exploited a
vulnerability in application code that uses Microsoft
SQL Server as the database store.
On March 27, 2011 mysql.com, the official homepage
for MySQL, was compromised by TinKode using SQL
blind injection.
In August, 2011, Hacker Steals User Records From
Nokia Developer Site using "SQL injection“.
Sony Playstation user data compromised.
DefensesPrivilege Restrictions
 Restrict functions that are not necessary for the
application
 Use stored procedures for database access
 use stored procedures for performing access on
the application's behalf, which can eliminate SQL
entirely.
More Defenses


Check syntax of input for validity
Many classes of input have fixed languages
Email addresses, dates, part numbers, etc.
Verify that the input is a valid string in the language
Sometime languages allow problematic characters
(e.g., ‘*’ in email addresses); may decide to not
allow these
If you can exclude quotes and semicolons that’s
good
Have length limits on input
 Many SQL injection attacks depend on entering long
strings

Limit database permissions and segregate
users


Even a "successful" SQL injection attack is going to
have much more limited success.
Isolate the webserver

For instance, putting the machine in a DMZ with
extremely limited pinholes.
Configure database error reporting
Default error reporting often gives away information that
is valuable for attackers (table name, field name, etc.)
Configure so that this information is never exposed to a
user
If possible, use bound variables
Some libraries allow you to bind inputs to variables inside
a SQL statement
PERL example (from
http://www.unixwiz.net/techtips/sql-injection.html)
$sth = $dbh->prepare("SELECT email, userid FROM members
WHERE email = ?;");
$sth->execute($email);
References:



http://www.unixwiz.net/techtips/sqlinjection.html
http://msdn.microsoft.com/enus/library/ms161953.aspx
http://php.net/manual/en/security.databa
se.sql-injection.php
http://en.wikipedia.org/wiki/SQL_injectio
n