ݺߣ

ݺߣShare a Scribd company logo
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
Báo cáo SQL injecttion
Báo cáo SQL injecttion
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.
Báo cáo SQL injecttion
Đ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=
...
Báo cáo SQL injecttion
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áo cáo SQL injecttion
Báo cáo SQL injecttion
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 (20)

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
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tin
Nguyen Thi Lan Phuong
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagram
Huy Vũ
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vnLập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
tailieumienphi
Bài gảng cơ sở an toàn thông tin PTIT
Bài gảng cơ sở an toàn thông tin PTITBài gảng cơ sở an toàn thông tin PTIT
Bài gảng cơ sở an toàn thông tin PTIT
NguynMinh294
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL Server
Nguyễn Phúc
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
DuytPhm8
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITBài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Popping Khiem - Funky Dance Crew PTIT
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
Võ Phúc
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTIT
NguynMinh294
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
nataliej4
Kỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlareKỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlare
Vietnix Hosting
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
ducmanhkthd
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort idsKịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
Linh Hoang
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
The Nguyen Manh
Những nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệp
Những nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệpNhững nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệp
Những nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệp
CIO Vietnam
BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...
BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...
BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...
Hien Dam
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
Minh Tri Nguyen
Đề tài: Quản lí Tour du lịch, HAY, 9đ
Đề tài: Quản lí Tour du lịch, HAY, 9đĐề tài: Quản lí Tour du lịch, HAY, 9đ
Đề tài: Quản lí Tour du lịch, HAY, 9đ
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đĐề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
Dịch vụ viết bài trọn gói ZALO: 0909232620
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
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tin
Nguyen Thi Lan Phuong
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagram
Huy Vũ
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vnLập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
tailieumienphi
Bài gảng cơ sở an toàn thông tin PTIT
Bài gảng cơ sở an toàn thông tin PTITBài gảng cơ sở an toàn thông tin PTIT
Bài gảng cơ sở an toàn thông tin PTIT
NguynMinh294
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL Server
Nguyễn Phúc
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
DuytPhm8
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
Võ Phúc
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTIT
NguynMinh294
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
nataliej4
Kỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlareKỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlare
Vietnix Hosting
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
ducmanhkthd
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort idsKịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
Linh Hoang
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
The Nguyen Manh
Những nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệp
Những nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệpNhững nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệp
Những nguyên tắc cơ bản xây dựng hệ thống an toàn thông tin trong doanh nghiệp
CIO Vietnam
BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...
BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...
BTL phân tích thiết kế hệ thống- Đề tài quản lý nhập hàng thực phẩm khô tại s...
Hien Dam

Viewers also liked (18)

XSS & SQL injection
XSS & SQL injectionXSS & SQL injection
XSS & SQL injection
Thieu Mao
Buoi3 tools-vietseo
Buoi3 tools-vietseoBuoi3 tools-vietseo
Buoi3 tools-vietseo
viet nghiem
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
truong 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.Com
longkenj
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
vuminhphong
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
tomh
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
Thai Pham
Chude02 camtasia8
Chude02 camtasia8Chude02 camtasia8
Chude02 camtasia8
Bả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 Online
Hoàng Phạm
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
Thi Thanh Thuan Tran
XSS & SQL injection
XSS & SQL injectionXSS & SQL injection
XSS & SQL injection
Thieu Mao
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
truong 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.Com
longkenj
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
vuminhphong
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
tomh
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
Thai Pham
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 Online
Hoàng Phạm

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
Luc 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 2
Luc 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/Mqc8L5
phanleson
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
Jenny Nguyen
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.com
phanleson
Owasp top 10
Owasp top 10Owasp top 10
Owasp top 10
Linh Hoang
Bao cao tttn an ninh web
Bao cao tttn   an ninh webBao cao tttn   an ninh web
Bao cao tttn an ninh web
Nhóc Mèo
Sql injection
Sql injectionSql injection
Sql injection
Linh Hoang
Tan cong
Tan congTan cong
Tan cong
toan
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
Nguyễn Thế Vinh
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
HUST
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
NguynQuangKhangMinh
Web application-security
Web application-securityWeb application-security
Web application-security
Visla Team
Đề 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
Dịch Vụ Viết Thuê Khóa Luận Zalo/Telegram 0917193864
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
Luc Cao
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injection
Loc 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 application
Ngoc Dao
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
Luc 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 2
Luc 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/Mqc8L5
phanleson
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
Jenny Nguyen
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.com
phanleson
Bao cao tttn an ninh web
Bao cao tttn   an ninh webBao cao tttn   an ninh web
Bao cao tttn an ninh web
Nhóc Mèo
Tan cong
Tan congTan cong
Tan cong
toan
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
HUST
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
NguynQuangKhangMinh
Web application-security
Web application-securityWeb application-security
Web application-security
Visla Team
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
Luc Cao
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injection
Loc 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 application
Ngoc Dao

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
  • 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.
  • 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= ...
  • 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... ....
  • 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