SlideShare a Scribd company logo
1 of 34
Nguyễn Đức Duy
Hoàng Hữu Cương
Phó Văn Quang
SQL INJECTION
Nội dung trình bày:
– SQL Injection là gì?
– Các dạng tấn công bằng SQL Injection
– Kỹ Thuật tấn công bằng sql injection
– Cách phòng tránh
– Demo
SQL Injection là gì?
• SQL Injection là kỹ thuật tấn công sử dụng các câu lệnh
SQL chèn vào phần input của website, từ đó làm thay đổi
kết quả trả về câu truy vấn. Thông qua đó, hacker có thể lấy
được các thông tin quan trọng từ website như username,
password của trang quản trị, các tài khoản của khách hàng,...
• Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu
được quản lí bằng các hệ quản trị cơ sở dữ liệu như MySQL,
SQL Server, Oracle, DB2, Sysbase
Có bốn dạng thông thường bao gồm:
• Vượt qua kiểm tra lúc đăng nhập
• Sử dụng câu lệnh SELECT
• Sử dụng câu lệnh INSERT
• Sử dụng các stored-procedures
Các dạng tấn công bằng SQL Injection
Dạng tấn công vượt qua kiểm tra
lúc đăng nhập
Đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL
thao tác trên cơ sở dữ liệu của ứng dụng web.
Thông thường để cho phép người dùng truy cập
vào các trang web được bảo mật, hệ thống thường
xây dựng trang đăng nhập để yêu cầu người dùng nhập
thông tin về tên đăng nhập và mật khẩu.
Đoạn code xử lý
<?php
$username = isset($_POST['username'])? $_POST['usern
ame']:"...";
$password = isset($_POST['password'])? $_POST['pass
word']:"...";
$query = "SELECT * FROM tbl_users WHERE
username = "'+$username+'"
AND password = "'+$password+'"";
....
?>
Trường hợp 1:
Người dùng login với username = at9a123 và password=7899661.
Câu truy vấn lúc này:
SELECT * FROM tbl_user WHERE username = ‘at9a123’
AND password = ‘7989661‘
Trường hợp 2:
Hacker login với username = admin‘or 1=1-- - và
password = 123456
Câu truy vấn lúc này:
SELECT * FROM tbl_user WHERE username = ‘admin’or 1=1-- -
AND password = ‘123456’
Giải thích:
SQL check username=‘admin’ là False; 1=1 là True;
False or True = True;
Dấu -- - là comment trong SQL;
 Hacker có thể đăng nhập vào mà không cần tài khoản.
Dạng tấn công sử dụng câu lệnh SELECT
Để thực hiện được kiểu tấn công này, kẻ
tấn công phải có khả năng hiểu và lợi dụng các sơ hở
trong các thông báo lỗi từ hệ thống để dò tìm các điểm
yếu khởi đầu cho việc tấn công.
Thông thường, sẽ có một trang nhận ID của tin cần hiển
thị rồi sau đó truy vấn nội dung của tin có ID này.
Xét site có dạng:
http://site.com/chitiet.php?id=123
Có chứa điểm yếu SQL Injection
- Thông thường đoạn mã này trả về thông
tin chi tiết của sản phẩm có mã 123.
- Tuy nhiên, Nếu thay đổi như sau:
Id=0 or 1=1 thì lúc này sẽ đưa ra toàn
Bộ thông tin của bảng chứa sản phẩm vì
Câu sql bây giờ là:
SELECT * FROM sanpham WHERE id =0 or 1=1
- Dạng tấn công này phức tạp hơn. Để thực hiện được
kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và
lợi dụng các sơ hở trong ác thông báo lỗi từ hệ thống để
dò tìm các điểm yếu khởi đầu cho việc tấn công.
Khi đó hacker sẽ lợi dụng lỗi của site sẽ khai thác và lấy
thông tin như : table, columns …, hoặc hiệu chỉnh, xóa
dữ liệu bằng các câu lệnh SQL.
Tấn công kiểu select này tuy phức tạp nhưng thường
được hacker sử dụng, hacker thường khai thác lỗi này để
lấy cắp tài khoản chùa hoặc chiếm quyền Admin của một
website nào đó.
Dạng tấn công sử dụng câu lệnh INSERT
Chức năng không thể thiếu là sau khi đăng kí thành công,
người dùng có thể xem và hiệu chỉnh thông tin của mình.
SQL injection có thể được dùng khi hệ
thống không kiểm tra tính hợp lệ của thông tin nhập vào.
Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:
INSERT INTO TableName
VALUES('Value One', 'Value Two', 'Value Three')
Nếu đoạn mã xây dựng câu lệnh SQL có dạng :
<%
strSQL = "INSERT INTO TableName
VALUES(' " & strValueOne & " ',
' " _ & strValueTwo & " ', ' " & strValueThree & " '
) “
Set objRS = Server.CreateObject("ADODB.R
ecordset") objRS.Open strSQL, "DSN=..."

Set objRS = Nothing %>
Nếu ta nhập vào trường thứ nhất có dạng:
‘+(SELECT TOP 1 FieldName FROM TableName)+’
Lúc này câu truy vấn là:
INSERT INTO TableName
VALUES(‘‘+(SELECT TOP 1 FieldName FROM TableName)
+’’,’abc’,’cds’)
Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã thực
hiện thêm 1 lệnh nữa là:
SELECT TOP 1 FieldName FROM TableName
Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất
lớn nếu ứng dụng được thực thi với quyền quản trị hệ
thống 'sa'.
Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ;
EXEC xp_cmdshell 'cmd.exe dir C: '.
Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ
đĩa C: cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc và
ở câu lệnh đằng sau cmd.exe.
Kỹ Thuật tấn công bằng sql injection
Các bước tiến hành
Bước 1: Tìm kiếm mục tiêu.
Bước 2: Kiểm tra chỗ yếu của trang web
Bước 3: Khai thác các thông tin
Bước 4: Xử lý kết quả tìm được
Bước 1 : Tìm kiếm mục tiêu
• Bạn có thể dùng các bất kỳ một search-engine nào trên
mạng như các trang login, search, feedback…
• Bạn có thể “custome Search Engine” lại cho phù hợp
với yêu cầu của bạn.
Thực hiện search:
Inurl:php?id= site:com.vn
Inurl: sanpham.php?id=
Inurl: products_detail.php?id=
...
Kết quả thu được 1 số site nằm trong nhóm tính nghi:
http://www.tuduy.com.vn/productdetail.php?id=253’
http://www.akclinic.com.vn/ankhang/ser.php?id=124’
http://www.vemedim.com.vn/chitiettt.php?id=72’
http://www.shugahaircare.com/product_details.php?id=9’
http://www.sieuthibexinh.com/chitiet.php?id=179’
http://thanhloisteel.com/chitietsanpham.php?id=7’
http://aladinphoto.com/sanpham.php?id=5’
http://www.daotaonlyt.edu.vn/index.php?id=320’
http://www.beemabuild.co.uk/view_product.php?id=217’
Bước 2: Kiểm tra chỗ yếu của trang web
Bạn có thể điền thêm một số lệnh trên url, hoặc trên các
from login, search, hoặc search để phát hiện lỗi.
Một số thông báo lỗi của MySQL:
Mysql_fetch_array();
Database query failed...
You have an error in your SQL systax...
....
Bước 3: Khai thác các thông tin
Đây là bước quan trọng nhất và đòi hỏi nhiều kĩ thuật lẫn
sự am hiểu về cơ sở dữ liệu.
Trong Mysql có 2 thành phần quan trọng:
INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.COLUMNS
Dựa vào lệnh UNION SELECT, có thể khai thác được:
• Phiên bản của CSDL
• Tên Database
• Xác định được tên các Tables quan trọng
• Xác định được các Columns của Tables
Bước 4: Xử lý kết quả tìm được
Khi bạn đã có tên của tất cả các column trong table,
bạn có thể UPDATE hoặc INSERT một record mới vào
table này.
Hoặc bạn login trực tiếp vào và thực hiện dưới quyền
user đó.
CÁCH PHÒNG TRÁNH
• Lọc bỏ các ký tự và từ khóa nguy hiểm như: -- , select ,
where, drop, shutdown …
• Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các
câu lệnh SQL là bằng cách kiểm soát chặt chẽ tất cả các dữ
liệu nhập nhận được từ đối tượng Request
• Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí
dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử
dụngCác ứng dụng thông thường nên tránh dùng đến các
quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít
• Nên chú ý loại bỏ bất kì thông tin kĩ thuật nào chứa trong
thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi.
Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có
thể cho phép kẻ tấn công biết được điểm yếu của hệ thống
Đối với website (dành cho lập trình viên):
Cần kiểm tra tính đúng đắn của tất cả dữ liệu đầu vào. Dữ liệu
đầu vào
không chỉ là các tham số, mà bao gồm cả cookie, user agent,
referer …
Việc kiểm tra tính đúng đắn của dữ liệu có thể dựa trên các
phương pháp sau:
Kiểm tra dựa vào kiểu dữ liệu (số, ngày tháng …)
Kiểm tra, giới hạn độ dài đầu vào
-Loại bỏ các ký tự đặc biệt như: ‘ % ” ? # @ & …
-Loại bỏ các từ đặc biệt: select, drop, delete, information_sche
mal, insert,
union, xp_ …
Đối với web server (dành cho quản trị mạng):
Hầu hết các máy chủ web (web server) hiện nay đều có các
module hỗ trợ việc phòng chống SQL Injection, ví dụ:
Apache có modsecurity, IIS có URLScan. Bạn chỉ cần bật
tính năng này và cấu hình cho phù hợp. Nếu website của bạn
là dạng trang tin tức thì rất phù hợp để triển khai. Trong một
số trường hợp khác, các module này có thể chặn nhầm, dẫn
tới website hoạt động không chính xác.
Đối với database server (dành cho quản trị mạng):
Bạn cần thực hiện việc cấu hình phân quyền chặt chẽ đối với c
ác tài khoản. Khi đó, dù tồn tại lỗi SQL Injection, thiệt hại
cũng sẽ được hạn chế. Ngoài ra, bạn cần loại bỏ các bảng,
thành phần và tài khoản không cần thiết trong hệ thống.
Phòng chống từ bên ngoài.
Giải pháp này sẽ dùng tường lửa đặc biệt để bảo vệ bạn khỏi
những ứng dụng dùng việc truy cập database với mục đích
xấu.
Chúng ta cần lưu ý rằng attacker tương tác với ứng dụng web
thông qua một trình duyệt với kết nối từ xa. Sau đó, ứng dụng
gởi yêu cầu đến database. Như vậy chúng ta có thể ngăn chặn
các tấn công giữa attacker với ứng dụng, giữa ứng dụng với
database và ngay cả trên chính bản thân database đó.
Một số công cụ quét và kiểm tra lỗi SQL Injection hiệu
quả.
Acunetix Web Vulnerability Scanner
N-Stealth
SQLmap
....
DEMO

More Related Content

What's hot

Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationducmanhkthd
 
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTIONBáo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTIONnataliej4
 
An toan thong tin
An toan thong tinAn toan thong tin
An toan thong tinTrung Quan
 
XSS & SQL injection
XSS & SQL injectionXSS & SQL injection
XSS & SQL injectionThieu Mao
 
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPTBài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPTMasterCode.vn
 
Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt Hà Vũ
 
Cơ sở an toàn thông tin chương 2
Cơ sở an toàn thông tin chương 2Cơ sở an toàn thông tin chương 2
Cơ sở an toàn thông tin chương 2NguynMinh294
 
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...Thịt Xốt Cà Chua
 
Quản lý người dùng
Quản lý người dùngQuản lý người dùng
Quản lý người dùngGetfly CRM
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql. .
 
Kiểm thử bảo mật web
Kiểm thử bảo mật webKiểm thử bảo mật web
Kiểm thử bảo mật webMinh Tri Nguyen
 
Hệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stackHệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stacklaonap166
 
Bao cao tttn an ninh web
Bao cao tttn   an ninh webBao cao tttn   an ninh web
Bao cao tttn an ninh webNhóc Mèo
 
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPT
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPTBài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPT
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPTMasterCode.vn
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngleemindinh
 
Báo cáo xây dựng và phát triển phần mềm
Báo cáo xây dựng và phát triển phần mềmBáo cáo xây dựng và phát triển phần mềm
Báo cáo xây dựng và phát triển phần mềmytthuan
 
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Viết thuê trọn gói ZALO 0934573149
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngNguyễn Danh Thanh
 

What's hot (20)

Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
 
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTIONBáo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
 
An toan thong tin
An toan thong tinAn toan thong tin
An toan thong tin
 
XSS & SQL injection
XSS & SQL injectionXSS & SQL injection
XSS & SQL injection
 
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPTBài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
 
Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt
 
Cơ sở an toàn thông tin chương 2
Cơ sở an toàn thông tin chương 2Cơ sở an toàn thông tin chương 2
Cơ sở an toàn thông tin chương 2
 
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
 
Phân tích tự động các website để phát hiện lỗ hổng tiêm nhiễm, 9đ
Phân tích tự động các website để phát hiện lỗ hổng tiêm nhiễm, 9đPhân tích tự động các website để phát hiện lỗ hổng tiêm nhiễm, 9đ
Phân tích tự động các website để phát hiện lỗ hổng tiêm nhiễm, 9đ
 
Quản lý người dùng
Quản lý người dùngQuản lý người dùng
Quản lý người dùng
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 
Kiểm thử bảo mật web
Kiểm thử bảo mật webKiểm thử bảo mật web
Kiểm thử bảo mật web
 
Sql injection
Sql injectionSql injection
Sql injection
 
Hệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stackHệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stack
 
Bao cao tttn an ninh web
Bao cao tttn   an ninh webBao cao tttn   an ninh web
Bao cao tttn an ninh web
 
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPT
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPTBài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPT
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPT
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
Báo cáo xây dựng và phát triển phần mềm
Báo cáo xây dựng và phát triển phần mềmBáo cáo xây dựng và phát triển phần mềm
Báo cáo xây dựng và phát triển phần mềm
 
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 

Viewers also liked

Buoi3 tools-vietseo
Buoi3 tools-vietseoBuoi3 tools-vietseo
Buoi3 tools-vietseoviet nghiem
 
Cach su dung databinding
Cach su dung databindingCach su dung databinding
Cach su dung databindingtruong le hung
 
Thuc thi menh lenh voi co so du lieu
Thuc thi menh lenh voi co so du lieuThuc thi menh lenh voi co so du lieu
Thuc thi menh lenh voi co so du lieutruong le hung
 
bao cao linux
bao cao linuxbao cao linux
bao cao linuxbinhnv186
 
các bước hack server
các bước hack servercác bước hack server
các bước hack servertruong le hung
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Levis Nickaster
 
Tài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.Com
Tài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.ComTài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.Com
Tài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.Comlongkenj
 
Kiếm tiền với youtube partner
Kiếm tiền với youtube partnerKiếm tiền với youtube partner
Kiếm tiền với youtube partnervuminhphong
 
Thiet ke web dien dan
Thiet ke web dien danThiet ke web dien dan
Thiet ke web dien danVINA Design
 
Mùa Thu ở Nhật Bản - Koibito Yo
Mùa Thu ở Nhật Bản - Koibito YoMùa Thu ở Nhật Bản - Koibito Yo
Mùa Thu ở Nhật Bản - Koibito Yotomh
 
Cách kiếm tiền trên YouTube
Cách kiếm tiền trên YouTubeCách kiếm tiền trên YouTube
Cách kiếm tiền trên YouTubeThai Pham
 
Chude02 camtasia8
Chude02 camtasia8Chude02 camtasia8
Chude02 camtasia8Bảo Tiên
 
ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...
ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...
ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...Priceza
 
bài giảng phân tích thiết kệ thống thông tin (hutech)
bài giảng phân tích thiết kệ thống thông tin (hutech)bài giảng phân tích thiết kệ thống thông tin (hutech)
bài giảng phân tích thiết kệ thống thông tin (hutech)truong le hung
 
Bao cao do an Phát triển hệ thống game server Online
Bao cao do an Phát triển hệ thống game server OnlineBao cao do an Phát triển hệ thống game server Online
Bao cao do an Phát triển hệ thống game server OnlineHoàng Phạm
 

Viewers also liked (17)

Buoi3 tools-vietseo
Buoi3 tools-vietseoBuoi3 tools-vietseo
Buoi3 tools-vietseo
 
Cach su dung databinding
Cach su dung databindingCach su dung databinding
Cach su dung databinding
 
Thuc thi menh lenh voi co so du lieu
Thuc thi menh lenh voi co so du lieuThuc thi menh lenh voi co so du lieu
Thuc thi menh lenh voi co so du lieu
 
bao cao linux
bao cao linuxbao cao linux
bao cao linux
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
các bước hack server
các bước hack servercác bước hack server
các bước hack server
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
 
Tài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.Com
Tài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.ComTài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.Com
Tài liệu cài đặt, thiết lập diễn đàn Vbb, Joomla, ZenCart - LongKenj.Com
 
Kiếm tiền với youtube partner
Kiếm tiền với youtube partnerKiếm tiền với youtube partner
Kiếm tiền với youtube partner
 
Thiet ke web dien dan
Thiet ke web dien danThiet ke web dien dan
Thiet ke web dien dan
 
Mùa Thu ở Nhật Bản - Koibito Yo
Mùa Thu ở Nhật Bản - Koibito YoMùa Thu ở Nhật Bản - Koibito Yo
Mùa Thu ở Nhật Bản - Koibito Yo
 
Cách kiếm tiền trên YouTube
Cách kiếm tiền trên YouTubeCách kiếm tiền trên YouTube
Cách kiếm tiền trên YouTube
 
Chude02 camtasia8
Chude02 camtasia8Chude02 camtasia8
Chude02 camtasia8
 
ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...
ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...
ASIA BUSINESS CONNECT CONFERENCE - Content Marketing & Strategies for Mobile,...
 
bài giảng phân tích thiết kệ thống thông tin (hutech)
bài giảng phân tích thiết kệ thống thông tin (hutech)bài giảng phân tích thiết kệ thống thông tin (hutech)
bài giảng phân tích thiết kệ thống thông tin (hutech)
 
Bao cao do an Phát triển hệ thống game server Online
Bao cao do an Phát triển hệ thống game server OnlineBao cao do an Phát triển hệ thống game server Online
Bao cao do an Phát triển hệ thống game server Online
 
Tìm hiểu camtasia studio 8
Tìm hiểu camtasia studio 8Tìm hiểu camtasia studio 8
Tìm hiểu camtasia studio 8
 

Similar to Báo cáo SQL injecttion

Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Luc Cao
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Luc Cao
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5phanleson
 
Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vnJenny Nguyen
 
Sql injection2
Sql injection2Sql injection2
Sql injection2Gió Lào
 
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comphanleson
 
SQL Injection.pptx
SQL Injection.pptxSQL Injection.pptx
SQL Injection.pptxAnhQucL4
 
Tan cong
Tan congTan cong
Tan congtoan
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETHUST
 
một số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạngmột số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạngNguynQuangKhangMinh
 
báo cáo thực tập Athena - tuần1
báo cáo thực tập Athena - tuần1báo cáo thực tập Athena - tuần1
báo cáo thực tập Athena - tuần1Luc Cao
 
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injectionLoc Nguyen
 
Những lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần applicationNhững lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần applicationNgoc Dao
 
Trung tâm đào tạo
Trung tâm đào tạoTrung tâm đào tạo
Trung tâm đào tạoLuc Cao
 

Similar to Báo cáo SQL injecttion (20)

Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2
 
Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5
 
Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vn
 
Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.com
 
Owasp top 10
Owasp top 10Owasp top 10
Owasp top 10
 
SQL Injection.pptx
SQL Injection.pptxSQL Injection.pptx
SQL Injection.pptx
 
Sql injection
Sql injectionSql injection
Sql injection
 
Tan cong
Tan congTan cong
Tan cong
 
Bảo mật ứng dụng web
Bảo mật ứng dụng webBảo mật ứng dụng web
Bảo mật ứng dụng web
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NET
 
một số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạngmột số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạng
 
Đề tài: Kiểm toán trong Fine-Grained Auditing, HAY
Đề tài: Kiểm toán trong Fine-Grained Auditing, HAYĐề tài: Kiểm toán trong Fine-Grained Auditing, HAY
Đề tài: Kiểm toán trong Fine-Grained Auditing, HAY
 
báo cáo thực tập Athena - tuần1
báo cáo thực tập Athena - tuần1báo cáo thực tập Athena - tuần1
báo cáo thực tập Athena - tuần1
 
Bao cao detai
Bao cao detaiBao cao detai
Bao cao detai
 
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injection
 
Những lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần applicationNhững lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần application
 
Trung tâm đào tạo
Trung tâm đào tạoTrung tâm đào tạo
Trung tâm đào tạo
 

Báo cáo SQL injecttion

  • 1. Nguyễn Đức Duy Hoàng Hữu Cương Phó Văn Quang SQL INJECTION
  • 2. Nội dung trình bày: – SQL Injection là gì? – Các dạng tấn công bằng SQL Injection – Kỹ Thuật tấn công bằng sql injection – Cách phòng tránh – Demo
  • 3. SQL Injection là gì? • SQL Injection là kỹ thuật tấn công sử dụng các câu lệnh SQL chèn vào phần input của website, từ đó làm thay đổi kết quả trả về câu truy vấn. Thông qua đó, hacker có thể lấy được các thông tin quan trọng từ website như username, password của trang quản trị, các tài khoản của khách hàng,... • Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như MySQL, SQL Server, Oracle, DB2, Sysbase
  • 4.
  • 5.
  • 6. Có bốn dạng thông thường bao gồm: • Vượt qua kiểm tra lúc đăng nhập • Sử dụng câu lệnh SELECT • Sử dụng câu lệnh INSERT • Sử dụng các stored-procedures Các dạng tấn công bằng SQL Injection
  • 7. Dạng tấn công vượt qua kiểm tra lúc đăng nhập Đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web. Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu.
  • 8.
  • 9. Đoạn code xử lý <?php $username = isset($_POST['username'])? $_POST['usern ame']:"..."; $password = isset($_POST['password'])? $_POST['pass word']:"..."; $query = "SELECT * FROM tbl_users WHERE username = "'+$username+'" AND password = "'+$password+'""; .... ?>
  • 10. Trường hợp 1: Người dùng login với username = at9a123 và password=7899661. Câu truy vấn lúc này: SELECT * FROM tbl_user WHERE username = ‘at9a123’ AND password = ‘7989661‘ Trường hợp 2: Hacker login với username = admin‘or 1=1-- - và password = 123456 Câu truy vấn lúc này: SELECT * FROM tbl_user WHERE username = ‘admin’or 1=1-- - AND password = ‘123456’ Giải thích: SQL check username=‘admin’ là False; 1=1 là True; False or True = True; Dấu -- - là comment trong SQL;  Hacker có thể đăng nhập vào mà không cần tài khoản.
  • 11. Dạng tấn công sử dụng câu lệnh SELECT Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này.
  • 12. Xét site có dạng: http://site.com/chitiet.php?id=123 Có chứa điểm yếu SQL Injection - Thông thường đoạn mã này trả về thông tin chi tiết của sản phẩm có mã 123. - Tuy nhiên, Nếu thay đổi như sau: Id=0 or 1=1 thì lúc này sẽ đưa ra toàn Bộ thông tin của bảng chứa sản phẩm vì Câu sql bây giờ là: SELECT * FROM sanpham WHERE id =0 or 1=1
  • 13. - Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong ác thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Khi đó hacker sẽ lợi dụng lỗi của site sẽ khai thác và lấy thông tin như : table, columns …, hoặc hiệu chỉnh, xóa dữ liệu bằng các câu lệnh SQL. Tấn công kiểu select này tuy phức tạp nhưng thường được hacker sử dụng, hacker thường khai thác lỗi này để lấy cắp tài khoản chùa hoặc chiếm quyền Admin của một website nào đó.
  • 14. Dạng tấn công sử dụng câu lệnh INSERT Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three')
  • 15. Nếu đoạn mã xây dựng câu lệnh SQL có dạng : <% strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _ & strValueTwo & " ', ' " & strValueThree & " ' ) “ Set objRS = Server.CreateObject("ADODB.R ecordset") objRS.Open strSQL, "DSN=..."  Set objRS = Nothing %>
  • 16. Nếu ta nhập vào trường thứ nhất có dạng: ‘+(SELECT TOP 1 FieldName FROM TableName)+’ Lúc này câu truy vấn là: INSERT INTO TableName VALUES(‘‘+(SELECT TOP 1 FieldName FROM TableName) +’’,’abc’,’cds’) Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã thực hiện thêm 1 lệnh nữa là: SELECT TOP 1 FieldName FROM TableName
  • 17. Dạng tấn công sử dụng stored-procedures Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell 'cmd.exe dir C: '. Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C: cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc và ở câu lệnh đằng sau cmd.exe.
  • 18. Kỹ Thuật tấn công bằng sql injection Các bước tiến hành Bước 1: Tìm kiếm mục tiêu. Bước 2: Kiểm tra chỗ yếu của trang web Bước 3: Khai thác các thông tin Bước 4: Xử lý kết quả tìm được
  • 19. Bước 1 : Tìm kiếm mục tiêu • Bạn có thể dùng các bất kỳ một search-engine nào trên mạng như các trang login, search, feedback… • Bạn có thể “custome Search Engine” lại cho phù hợp với yêu cầu của bạn. Thực hiện search: Inurl:php?id= site:com.vn Inurl: sanpham.php?id= Inurl: products_detail.php?id= ...
  • 20.
  • 21. Kết quả thu được 1 số site nằm trong nhóm tính nghi: http://www.tuduy.com.vn/productdetail.php?id=253’ http://www.akclinic.com.vn/ankhang/ser.php?id=124’ http://www.vemedim.com.vn/chitiettt.php?id=72’ http://www.shugahaircare.com/product_details.php?id=9’ http://www.sieuthibexinh.com/chitiet.php?id=179’ http://thanhloisteel.com/chitietsanpham.php?id=7’ http://aladinphoto.com/sanpham.php?id=5’ http://www.daotaonlyt.edu.vn/index.php?id=320’ http://www.beemabuild.co.uk/view_product.php?id=217’
  • 22. Bước 2: Kiểm tra chỗ yếu của trang web Bạn có thể điền thêm một số lệnh trên url, hoặc trên các from login, search, hoặc search để phát hiện lỗi. Một số thông báo lỗi của MySQL: Mysql_fetch_array(); Database query failed... You have an error in your SQL systax... ....
  • 23.
  • 24.
  • 25. Bước 3: Khai thác các thông tin Đây là bước quan trọng nhất và đòi hỏi nhiều kĩ thuật lẫn sự am hiểu về cơ sở dữ liệu. Trong Mysql có 2 thành phần quan trọng: INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA.COLUMNS
  • 26. Dựa vào lệnh UNION SELECT, có thể khai thác được: • Phiên bản của CSDL • Tên Database • Xác định được tên các Tables quan trọng • Xác định được các Columns của Tables
  • 27. Bước 4: Xử lý kết quả tìm được Khi bạn đã có tên của tất cả các column trong table, bạn có thể UPDATE hoặc INSERT một record mới vào table này. Hoặc bạn login trực tiếp vào và thực hiện dưới quyền user đó.
  • 28. CÁCH PHÒNG TRÁNH • Lọc bỏ các ký tự và từ khóa nguy hiểm như: -- , select , where, drop, shutdown … • Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request • Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử dụngCác ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít • Nên chú ý loại bỏ bất kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi. Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống
  • 29. Đối với website (dành cho lập trình viên): Cần kiểm tra tính đúng đắn của tất cả dữ liệu đầu vào. Dữ liệu đầu vào không chỉ là các tham số, mà bao gồm cả cookie, user agent, referer … Việc kiểm tra tính đúng đắn của dữ liệu có thể dựa trên các phương pháp sau: Kiểm tra dựa vào kiểu dữ liệu (số, ngày tháng …) Kiểm tra, giới hạn độ dài đầu vào -Loại bỏ các ký tự đặc biệt như: ‘ % ” ? # @ & … -Loại bỏ các từ đặc biệt: select, drop, delete, information_sche mal, insert, union, xp_ …
  • 30. Đối với web server (dành cho quản trị mạng): Hầu hết các máy chủ web (web server) hiện nay đều có các module hỗ trợ việc phòng chống SQL Injection, ví dụ: Apache có modsecurity, IIS có URLScan. Bạn chỉ cần bật tính năng này và cấu hình cho phù hợp. Nếu website của bạn là dạng trang tin tức thì rất phù hợp để triển khai. Trong một số trường hợp khác, các module này có thể chặn nhầm, dẫn tới website hoạt động không chính xác.
  • 31. Đối với database server (dành cho quản trị mạng): Bạn cần thực hiện việc cấu hình phân quyền chặt chẽ đối với c ác tài khoản. Khi đó, dù tồn tại lỗi SQL Injection, thiệt hại cũng sẽ được hạn chế. Ngoài ra, bạn cần loại bỏ các bảng, thành phần và tài khoản không cần thiết trong hệ thống.
  • 32. Phòng chống từ bên ngoài. Giải pháp này sẽ dùng tường lửa đặc biệt để bảo vệ bạn khỏi những ứng dụng dùng việc truy cập database với mục đích xấu. Chúng ta cần lưu ý rằng attacker tương tác với ứng dụng web thông qua một trình duyệt với kết nối từ xa. Sau đó, ứng dụng gởi yêu cầu đến database. Như vậy chúng ta có thể ngăn chặn các tấn công giữa attacker với ứng dụng, giữa ứng dụng với database và ngay cả trên chính bản thân database đó.
  • 33. Một số công cụ quét và kiểm tra lỗi SQL Injection hiệu quả. Acunetix Web Vulnerability Scanner N-Stealth SQLmap ....
  • 34. DEMO