Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 83 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
83
Dung lượng
3,52 MB
Nội dung
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ BỘ BÀI HƯỚNG DẪN THỰC HÀNH KHAI THÁC LỖ HỔNG ỨNG DỤNGWEB TRÊN BWAPP Hà Nội, 2019 MỤC LỤC Danh mục kí hiệu viết tắt Danh mục hình vẽ Chương KỸ THUẬT TẤN CÔNG SQL INJECTION 1.1 Nhận diện điểm yếu SQL Injection ứng dụng web 1.1.1 Xác định lỗ hổng việc kiểm tra thông tin đầu vào 1.1.2 Xác định điểm yếu SQL Injection dựa phản hồi 10 1.2 Tấn cơng khai thác liệu thơng qua tốn tử UNION 12 1.2.1 Tổng quan toán tử UNION 12 1.2.2 Tìm số cột kiểu liệu cột 12 1.2.3 Tìm cột có khả chứa thơng tin khai thác 13 1.2.4 Xác định tên bảng 14 1.2.5 Xác định tên cột bảng 14 1.2.6 Thu thập liệu quan trọng 14 1.3 Khai thác thông qua câu lệnh điều kiện 14 1.3.1 Tổng quan khai thác thông qua câu lệnh điều kiện 14 1.3.2 Mơ hình dựa nội dung phản hồi 15 1.3.3 Mô hình dựa độ trễ phản hồi 16 1.4 Blind SQL Injection – phương thức công nâng cao 17 1.4.1 Tổng quan Blind SQL Injection 17 1.4.2 Tấn công Blind SQL Injection dựa phản hồi 17 1.4.3 Tấn công Blind SQL Injection dựa độ trễ truy vấn 19 1.4.4 Lợi dụng điểm yếu Blind SQL Injection để khai thác thông tin thực tế 22 1.5 Bộ hướng dẫn công SQL Injection 22 1.5.1 SQL Injection (Login Form/Hero) 22 1.5.2 SQL Injection (GET/Search) 24 1.5.3 SQL Injection (POST/Search) 27 1.5.4 SQL Injection – Blind – Boolean Based 31 1.5.5 SQL Injection – Blind – Time Based 36 Chương KỸ THUẬT TẤN CÔNG XSS 42 2.1 Tấn công XSS 42 2.1.1 Xác định lỗi XSS 42 2.1.2 Các bước thực khai thác lỗi XSS 45 2.2 Bộ hướng dẫn công XSS 47 2.2.1 Thực hành công XSS phản xạ sử dụng phương thức GET mức độ dễ 47 2.2.2 Thực hành công XSS phản xạ sử dụng phương thức GET mức độ trung bình 52 2.2.3 Thực hành công XSS phản xạ sử dụng phương thức POST mức độ dễ 54 2.2.4 Thực hành công XSS phản xạ sử dụng phương thức POST mức trung bình 56 2.2.5 Thực hành công XSS phản xạ sử dụng chuỗi JSON mức dễ 57 2.2.6 Thực hành công XSS phản xạ sử dụng thuộc tính HREF mực độ dễ 59 2.2.7 Thực hành công XSS phản xạ sử dụng hàm EVAL mức độ dễ 62 2.2.8 Thực hành công XSS lưu trữ dạng Blog mức độ dễ 65 Chương Kỹ Thuật TẤN CÔNG CSRF 69 3.1 Cross-site Request Forgery 69 3.1.1 Xác định lỗi CSRF 69 3.1.2 Các bước thực khai thác lỗi CSRF 70 3.2 Bộ hướng dẫn công CSRF 73 3.2.1 Thực hành công CSRF (Change Password) mức độ dễ 73 3.2.2 Thực hành công CSRF (Transfer Amount) mức độ dễ 77 Tài liệu tham khảo 78 Phụ lục 79 DANH MỤC KÍ HIỆU VÀ VIẾT TẮT XSS Cross Site Scripting CSRF Cross-site Request Forgery DOM Document Object Model DVWA Damn Vulnerable Web App CSDL Cơ sở liệu SQL Structured Query Language (Ngôn ngữ truy vấn có cấu trúc) SSRF Server Side Request Forgery DANH MỤC HÌNH VẼ Hình 2.1 Các bước thực khai thác lỗi XSS 45 Hình 2.2 Chọn XSS - Reflected (GET) 47 Hình 2.3 Chọn level low XSS - Reflected (GET) 47 Hình 2.4 Giao diện thực hành công XSS - Reflected (GET) mức độ dễ 48 Hình 2.5 Kết trả nhập liệu vào ô Fist name Last name XSS - Reflected (GET) mức độ dễ 48 Hình 2.6 Phương thức GET sử dụng XSS - Reflected (GET) mức độ dễ 49 Hình 2.7 Kết kiểm tra lỗi XSS thực hành XSS - Reflected (GET) mức độ dễ 49 Hình 2.8 Up file get.php get.txt thành công lên host 50 Hình 2.9 File html đánh lừa người dùng kick vào 51 Hình 2.10 Cookie sau lấy người dùng 51 Hình 2.11 Sử dụng cookie lấy để đăng nhập 51 Hình 2.12 Đăng nhập thành công nhờ sử dụng cookie lấy người dùng 52 Hình 2.13 Chọn level medium XSS - Reflected (GET) 52 Hình 2.14 Truyền liệu vào ô Fist name Lastname XSS Reflected (GET) mức độ trung bình 53 Hình 2.15 Xem mã nguồn liệu sau nhập vào XSS - Reflected (GET) mức độ trung bình 53 Hình 2.16 Kết xác định lỗi XSS thành công XSS - Reflected (GET) mức độ trung bình 53 Hình 2.17 Chọn XSS - Reflected (POST) 54 Hình 2.18 Chọn level low XSS - Reflected (POST) 54 Hình 2.19 Kết kiểm tra thành công lỗi XSS XSS - Reflected (POST) mức độ dễ 55 Hình 2.20 Dữ liệu bắt qua proxy XSS - Reflected (POST) mức độ dễ 55 Hình 2.21 Sử dụng HTML Encode 56 Hình 2.22 Chọn level medium XSS - Reflected (POST) 56 Hình 2.23 Chọn XSS - Reflected (JSON) 57 Hình 2.24 Chọn level low XSS - Reflected (JSON) 57 Hình 2.25 Giao diện thực hành cơng XSS - Reflected (JSON) 57 Hình 2.26 Nhập liệu vào ô search XSS - Reflected (JSON) mức độ dễ 58 Hình 2.27 Kết trả nhập đoạn java script XSS - Reflected (JSON) mức độ dễ 58 Hình 2.28 Kết kiểm tra lỗi XSS XSS - Reflected (JSON) mức độ dễ 59 Hình 2.29 Chọn XSS - Reflected (HREF) 60 Hình 2.30 Chọn level low XSS - Reflected (HREF) 60 Hình 2.31 Giao diện thực hành công XSS - Reflected (HREF) mức độ dễ 60 Hình 2.32 Kết trả nhập liệu XSS - Reflected (HREF) mức độ dễ 61 Hình 2.33 Kết trả nhập đoạn java script XSS - Reflected (HREF) mức độ dễ 61 Hình 2.34 Kết kiểm tra lỗi XSS XSS - Reflected (HREF) mức độ dễ 62 Hình 2.35 Chọn XSS - Reflected (Eval) 63 Hình 2.36 Chọn level low XSS - Reflected (Eval) 63 Hình 2.37 Giao diện thực hành công XSS - Reflected (Eval) mức độ dễ 63 Hình 2.38 Phương thức GET sử dụng XSS - Reflected (Eval) mức độ dễ 64 Hình 2.39 Kết kiểm tra lỗi XSS XSS - Reflected (Eval) mức độ dễ 65 Hình 2.40 Chọn XSS - Stored (Blog) 65 Hình 2.41 Chọn level low XSS - Stored (Blog) 65 Hình 2.42 Giao diện thực hành công XSS - Stored (Blog) mức độ dễ 66 Hình 2.43 Kết trả nhập liệu gửi lên server XSS - Stored (Blog) mức độ dễ 66 Hình 2.44 Kết kiểm tra lỗi XSS XSS - Stored (Blog) mức độ dễ 67 Hình 2.45 Kết đoạn java script thực thi XSS - Stored (Blog) mức độ dễ 68 Hình 3.1 Các bước thực khai thác lỗi CSRF 71 Hình 3.2 Mơ hình cơng CSRF theo phương thức POST 72 Hình 3.3 Chọn CSRF (Change Password) 73 Hình 3.4 Chọn level low CSRF (Change Password) 74 Hình 3.5 Giao diện thực công CSRF CSRF (Change Password) mức độ dễ 74 Hình 3.6 Phương thức GET sử dụng CSRF (Change Password) mưc độ dễ 75 Hình 3.7 Sử dụng chức Generate CSRF PoC Burp Suite 75 Hình 3.8 Đoạn html sau sử dụng chức Generate CSRF PoC 75 Hình 3.9 Tạo file html với nội dung sau Generate CSRF PoC 76 Hình 3.10 File html gửi cho người dùng 76 Hình 3.11 Kết sau khai thác lỗi CSRF (Change Pasword) mức độ dễ 76 CHƯƠNG KỸ THUẬT TẤN CÔNG SQL INJECTION 1.1 Nhận diện điểm yếu SQL Injection ứng dụng web Xác định điểm yếu công việc chuỗi thao tác cần để khắc phục điểm yếu SQL Injection ứng dụng Công việc thực tương tự thao tác mà hacker tiến hành thăm dò lỗi SQL Injection 1.1.1 Xác định lỗ hổng việc kiểm tra thông tin đầu vào Tham số nhập vào sử dụng để xây dựng truy vấn SQL nên cần thoả mãn ràng buộc cú pháp với thành phần trước sau truy vấn gốc Xét đoạn mã PHP xử lý đăng nhập sau: Xâu truy vấn SQL sinh trường hợp sử dụng trực tiếp giá trị người dùng nhập vào, mơ hình xây dựng truy vấn dạng gọi chung xây dựng truy vấn động (dynamic query) Truy vấn thu có dạng sau: SELECT * FROM tbl_users WHERE username=’$uname’ AND password=’$passwd’; Trong hai giá trị $name $passwd nhập từ người dùng Khi thực nhập giá trị username admin’ or ‘1’=’1 truy vấn động thu sau: SELECT * FROM tbl_users WHERE username=’admin’ or ‘1’=’1’ AND password=”; Truy vấn có cụm ln đúng, tốn tử AND có độ ưu tiên cao OR truy vấn tương đương với: SELECT * FROM tbl_users WHERE username=’admin’ or ‘1’=’1’ AND password=” or ‘1’=’1’; Truy vấn tương đương với: SELECT * FROM tbl_users WHERE username=’admin’ or password=” or ‘1’=’1’; Trường hợp việc xác thực thành cơng mệnh đề WHERE ln Ngồi cách ta thực chèn thêm đoạn or ‘1’=1 vào username, tức admin’ or ‘1’=’1’ or ‘1’=’1 vào, kết thu tương tự, toán tử AND khử trước toán tử OR Tùy thuộc vào câu truy vấn gốc mà tham số chèn vào có vị trí khác truy vấn Ứng với trường hợp đó, ta có mơ hình chèn tham số sau: - Chèn vào truy vấn: mơ hình đơn thao tác với tham số, không tác động đến cấu trúc thành phần truy vấn gốc Mơ hình khái qt sau: Hình 1.1 Mơ hình chèn vào truy vấn - Chèn ngắt truy vấn: mơ hình chèn truy vấn phổ biến nhất, truy vấn chèn vào bao gồm thêm cuối ký tự comment nhằm ngắt truy vấn đó, vơ hiệu hố phần tử truy vấn gốc nằm phía sau vị trí tham số Đoạn mã PHP nêu cải tiến sau: