MỤC LỤC3 MỞ ĐẦU4 CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ SQL INJECTION5 1.1 Khái niệm SQL Injection:5 1.2 Quy trình tấn cống6 1.3 Các dạng lỗi thường gặp:6 1.3.1 Không kiểm tra ký tự thoát truy vấn6 1.3.2 Xử lý không dúng kiểu7 1.3.3 Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu8 1.3.4 Blind SQL Injection8 CHƯƠNG 2 : MỘT SỐ DẠNG TẤN CÔNG THƯỜNG GẶP VỚI CÁC ỨNG DỤNG WEB10 2.1 Dạng tấn công vượt qua kiểm tra lúc đăng nhập10 2.2 Dạng tấn công sử dụng câu lệnh SELECT12 2.3 Dạng tấn công sử dụng câu lệnh INSERT13 2.4 Dạng tấn công sử dụng Strored-Procedures14 CHƯƠNG 3 : MÔ PHỎNG TẤN CÔNG SQL INJECTION VÀO WEBSERVER14 3.1 Một số công cụ rò tìm, tấn công lỗ hổng SQL Injection14 CHƯƠNG 4 : HẬU QUẢ CỦA SQL INJECTION VÀ CÁCH PHÒNG CHỐNG SQL26 4.1 Hậu quả:26 4.2 Cách phòng chống:26 KẾT LUẬN29
Trang 1MÔ PHỎNG TẤN CÔNG
SQL Injection VÀO Web server
MÔN HỌC: AN NINH MẠNG+BTL
GV: ĐỖ NHƯ HẢI Thực hiện: HOÀNG THỊ HỒNG GẤM - 1621050275
LÊ THẾ QUÝ - 1721050540
HOÀNG HẢI HÀ - 1721050311
Trang 2Các kỹ thuật tấn công nguy hiểm nhằm vào web server
1.Tấn công DoS/DDoS
Trang 32.Tấn công Brute Force
Trang 43.Cross Site Scripting(Lỗ hổng XSS)
Trang 54.Tấn công Injection (Tấn công tiêm nhiễm SQL)
Trang 6SQL INJECTION
Trang 71.khái niệm
Sql Injection là một kỹ thuật mà các hacker lợi
dụng lổ hỗng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web đến DBMS để khai thác các thông tin nhạy cảm.
Trang 8Cho phép hacker thực hiện các thao tác như Insert,
delete, update… trên cơ sở dữ liệu của server
Các lỗi này chỉ xảy ra trên các ứng dụng web có liên
kết với các DBMS như: SQL Server, MySQL,
Oracle, DB2, Sysbase… và bất kì ngôn ngữ lập trình
web động nào như: php, asp, asp.net, jsp…
Trang 92.Mục đích
• Mục đích chính của SQL injection là truy cập vào cơ sở dữ liệu bất hợp pháp hoặc khai thác thông tin từ các cơ sở dữ liệu đó
• Một số kiểu tấn công SQL injection:
Trang 103.Cơ chế họat động
Cơ chế hoạt động của một website
Trang 114 TRIỂN KHAI TẤN CÔNG
• Để triển khai một cuộc tấn công SQL Injection, thông thường bạn sẽ thực hiện theo 3 bước cơ bản sau đây:
Bước 1: Xác định trang web có lỗi SQL injection không?
Bước 2: Từ lỗi tìm được, chọn loại tấn công phù hợp.
Bước 3: Triển khai tấn công.
Trang 12* Tìm lỗi SQL injection
Bước 1: Kiểm tra xem ứng dụng web có kết nối đến server cơ sở dữ liệu để lấy thông tin không?
Bước 2: Liệt kê ra tất cả các input file, file ẩn và các post request có thể chứa giá trị dùng cho truy vấn
SQL.
Bước 3: Thử inject code vào các file trên để tạo ra lỗi.
vụ cho việc triển khai tấn công.
Trang 13*Tìm lỗi SQL injection
Bước 4: Thử nhập vào một giá trị chuỗi vào các input file yêu cầu nhập số.
Bước 5: Sử dụng toán tử UNION trong các SQL injection để xuất một câu truy vấn vào câu truy vấn
có sẵn.
Bước 6: Sử dụng thông tin từ các báo lỗi ở trên để phục vụ cho việc triển khai tấn công.
Trang 14Một số công cụ rò tìm, tấn công lỗ hổng SQL Injection
*Dùng Vega để rò tìm lỗ hổng SQL Injection
• Chọn mục tiêu
Trang 15*Dùng Vega để rò tìm lỗ hổng SQL Injection
• Chọn modules cần thiết
Trang 16*Dùng Vega để rò tìm lỗ hổng SQL Injection
• Hoàn tất cấu hình và bắt đầu quét
Trang 17* Dùng Vega để rò tìm lỗ hổng SQL Injection
• Thu thập kết quả
Trang 18*Dùng Vega để rò tìm lỗ hổng SQL Injection
• Ở đây có một số lỗi như XSS, SQL injection, RFI
Trang 19Ta dùng SQLmap để khai thác lỗ hổng SQL Injection
Trang 20*Dùng SQLmap để khai thác lỗ hổng SQL Injection
Trang 21Kết quả
Trang 25• -T: chọn bảng thực thi
• dump : lấy các dữ liệu
Trang 26*Dò tìm lỗ hổng SQLInjection bằng website
Trang 27• *Nhập URL Chọn Free Scan Sau đó chọn Light Scan hoặc Full Scan
Trang 28Demo tấn công lỗ hổng SQL Injection
Trang 29• Nhập email: user@email.com
• Password: password
• Log in
Trang 30Demo tấn công lỗ hổng SQL Injection
• Server sẽ trả về kết quả “Unknow email or password” do không tìm thấy dữ liệu về user này
• Nhập lại password là “ password’ ”
Trang 31Demo tấn công lỗ hổng SQL Injection
• Lần này server sẽ trả về kết quả “An unexpected error occurred”
• Do Hacker đã nhập thêm ký tự ‘ khiến SQL server trả về kết quả lỗi cú pháp :
Trang 32Demo tấn công lỗ hổng SQL Injection
• Rendering login page: Server sẽ kết xuất trang đăng nhập
• Đây là các câu lệnh SQL trong server
Trang 33Demo tấn công lỗ hổng SQL Injection
• “ password’ “ được chèn trực tiếp vào chuỗi SQL và kết thúc truy vấn
• Đây là nguyên nhân gây ra lỗi cú pháp mà chúng ta đã thấy khi server trả về
• Hành vi trên của hacker chỉ ra rằng website có thể bị tấn công SQL Injection
Trang 34Demo tấn công lỗ hổng SQL Injection
• Tiếp tục nhập password “ ‘ or 1=1 “
Trang 35Demo tấn công lỗ hổng SQL Injection
• Hacker đã đăng nhập vào được hệ thống mà không cần mật khẩu, nhờ khai thác lỗ hổng SQL Injection
Trang 36Demo tấn công lỗ hổng SQL Injection
• Hệ thống đã bị đánh lừa do ký tự “ “ hacker nhập khiến cơ sở dữ liệu bỏ qua phần còn lại của câu lệnh SQL, cho phép xác thực mà không phải nhập đúng mật khẩu
Trang 37Cách phòng chống SQL Injection
• SQL Injection hoàn toàn có thể ngăn chặn được Và 1 trong những quy tắt không thể bỏ qua là
không nên tin tưởng tuyệt đối vào bất kỳ thông tin nào mà người sử dụng nhập vào
• Và mô hình SQLI có thể dễ dàng bị ngăn chặn bởi 1 bước gọi là Sanitization – hiểu nôm na là việc
chắt lọc thông tin đầu vào – input từ phía người dùng