Bai 2.bài TH C Hành Khai Thác L H NG Trên Bwapp [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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

1

MỤC LỤC Danh mục kí hiệu và viết tắt................................................................................... 4 Danh mục hình vẽ.................................................................................................... 5 Chương 1. KỸ THUẬT TẤN CÔNG SQL INJECTION.................................... 8 1.1. Nhận diện điểm yếu SQL Injection trong ứng dụng web ................................. 8 1.1.1. Xác định lỗ hổng trong việc kiểm tra thông tin đầu vào ....................... 8 1.1.2. Xác định điểm yếu SQL Injection dựa trên phản hồi .......................... 10 1.2. Tấn công khai thác dữ liệu thông qua toán tử UNION ................................... 12 1.2.1. Tổng quan về toán tử UNION.............................................................. 12 1.2.2. Tìm số cột và kiểu dữ liệu của cột ....................................................... 12 1.2.3. Tìm cột có khả năng chứa thông tin khai thác được ........................... 13 1.2.4. Xác định tên của các bảng ................................................................... 14 1.2.5. Xác định tên các cột trong bảng .......................................................... 14 1.2.6. Thu thập các dữ liệu quan trọng ......................................................... 14 1.3. Khai thác thông qua các câu lệnh điều kiện .................................................... 14 1.3.1. Tổng quan về khai thác thông qua các câu lệnh điều kiện.................. 14 1.3.2. Mô hình dựa trên nội dung phản hồi ................................................... 15 1.3.3. Mô hình dựa trên độ trễ phản hồi........................................................ 16 1.4. Blind SQL Injection – phương thức tấn công nâng cao ................................. 17 1.4.1. Tổng quan về Blind SQL Injection ...................................................... 17 1.4.2. Tấn công Blind SQL Injection dựa trên phản hồi ............................... 17 1.4.3. Tấn công Blind SQL Injection dựa trên độ 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 trong thực tế.................................................................................... 22 1.5. Bộ bài hướng dẫn các tấ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 2. 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 hiện khai thác lỗi XSS ................................................. 45 2.2. Bộ bài hướng dẫn các tấn công XSS............................................................... 47 2.2.1. Thực hành tấn 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 tấn 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 tấn 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 tấn công XSS phản xạ sử dụng phương thức POST mức trung bình .......................................................................... 56 2

2.2.5. Thực hành tấn công XSS phản xạ sử dụng chuỗi JSON mức dễ .......................................................................................................... 57 2.2.6. Thực hành tấn 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 tấn công XSS phản xạ sử dụng hàm EVAL mức độ dễ ..................................................................................................... 62 2.2.8. Thực hành tấn công XSS lưu trữ dạng Blog mức độ dễ ...................... 65 Chương 3. 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 hiện khai thác lỗi CSRF .............................................. 70 3.2. Bộ bài hướng dẫn các tấn công CSRF ............................................................ 73 3.2.1. Thực hành tấn công CSRF (Change Password) mức độ dễ ................ 73 3.2.2. Thực hành tấn công CSRF (Transfer Amount) mức độ dễ .................. 77 Tài liệu tham khảo................................................................................................. 78 Phụ lục .................................................................................................................... 79

3

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ở dữ liệu

SQL

Structured Query Language (Ngôn ngữ truy vấn có cấu trúc)

SSRF

Server Side Request Forgery

4

DANH MỤC HÌNH VẼ Hình 2.1 Các bước thực hiện khai thác lỗi XSS ..................................................... 45 Hình 2.2 Chọn bài XSS - Reflected (GET) ............................................................. 47 Hình 2.3 Chọn level low trong bài XSS - Reflected (GET) ................................... 47 Hình 2.4 Giao diện thực hành tấn công XSS - Reflected (GET) mức độ dễ .......... 48 Hình 2.5 Kết quả trả về khi nhập dữ liệu vào 2 ô Fist name và Last name trong bài XSS - Reflected (GET) mức độ dễ ......................................................................... 48 Hình 2.6 Phương thức GET được sử dụng trong bài XSS - Reflected (GET) mức độ dễ ........................................................................................................................ 49 Hình 2.7 Kết quả kiểm tra lỗi XSS trong bài thực hành XSS - Reflected (GET) mức độ dễ ................................................................................................................ 49 Hình 2.8 Up 2 file get.php và 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 khi lấy được của người dùng ............................................... 51 Hình 2.11 Sử dụng cookie lấy được để đăng nhập ................................................. 51 Hình 2.12 Đăng nhập thành công nhờ sử dụng cookie lấy được của người dùng .. 52 Hình 2.13 Chọn level medium trong bài XSS - Reflected (GET) .......................... 52 Hình 2.14 Truyền dữ liệu vào 2 ô Fist name và Lastname trong bài XSS Reflected (GET) mức độ trung bình ....................................................................... 53 Hình 2.15 Xem mã nguồn dữ liệu sau khi nhập vào trong bài XSS - Reflected (GET) mức độ trung bình ........................................................................................ 53 Hình 2.16 Kết quả xác định lỗi XSS thành công trong bài XSS - Reflected (GET) mức độ trung bình ................................................................................................... 53 Hình 2.17 Chọn bài XSS - Reflected (POST) ......................................................... 54 Hình 2.18 Chọn level low trong bài XSS - Reflected (POST) ............................... 54 Hình 2.19 Kết quả kiểm tra thành công lỗi XSS trong bài XSS - Reflected (POST) mức độ dễ ................................................................................................................ 55 Hình 2.20 Dữ liệu bắt được qua proxy trong bài 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 trong bài XSS - Reflected (POST) ........................ 56 Hình 2.23 Chọn bài XSS - Reflected (JSON) ......................................................... 57 Hình 2.24 Chọn level low trong bài XSS - Reflected (JSON) ............................... 57 Hình 2.25 Giao diện thực hành tấn công XSS - Reflected (JSON) ........................ 57 5

Hình 2.26 Nhập dữ liệu vào ô search trong bài XSS - Reflected (JSON) mức độ dễ ................................................................................................................................. 58 Hình 2.27 Kết quả trả về khi nhập 1 đoạn java script trong bài XSS - Reflected (JSON) mức độ dễ ................................................................................................... 58 Hình 2.28 Kết quả kiểm tra lỗi XSS trong bài XSS - Reflected (JSON) mức độ dễ ................................................................................................................................. 59 Hình 2.29 Chọn bài XSS - Reflected (HREF) ........................................................ 60 Hình 2.30 Chọn level low trong bài XSS - Reflected (HREF) ............................... 60 Hình 2.31 Giao diện thực hành tấn công trong bài XSS - Reflected (HREF) mức độ dễ ............................................................................................................................. 60 Hình 2.32 Kết quả trả về khi nhập dữ liệu trong bài XSS - Reflected (HREF) mức độ dễ ........................................................................................................................ 61 Hình 2.33 Kết quả trả về khi nhập 1 đoạn java script trong bài XSS - Reflected (HREF) mức độ dễ .................................................................................................. 61 Hình 2.34 Kết quả kiểm tra lỗi XSS trong bài XSS - Reflected (HREF) mức độ dễ ................................................................................................................................. 62 Hình 2.35 Chọn bài XSS - Reflected (Eval) ........................................................... 63 Hình 2.36 Chọn level low trong bài XSS - Reflected (Eval) .................................. 63 Hình 2.37 Giao diện thực hành tấn công trong bài XSS - Reflected (Eval) mức độ dễ ............................................................................................................................. 63 Hình 2.38 Phương thức GET sử dụng trong bài XSS - Reflected (Eval) mức độ dễ ................................................................................................................................. 64 Hình 2.39 Kết quả kiểm tra lỗi XSS trong bài XSS - Reflected (Eval) mức độ dễ 65 Hình 2.40 Chọn bài XSS - Stored (Blog)................................................................ 65 Hình 2.41 Chọn level low trong bài XSS - Stored (Blog) ...................................... 65 Hình 2.42 Giao diện thực hành tấn công trong bài XSS - Stored (Blog) mức độ dễ ................................................................................................................................. 66 Hình 2.43 Kết quả trả về khi nhập dữ liệu gửi lên server trong bài XSS - Stored (Blog) mức độ dễ..................................................................................................... 66 Hình 2.44 Kết quả kiểm tra lỗi XSS trong bài XSS - Stored (Blog) mức độ dễ .... 67 Hình 2.45 Kết quả đoạn java script được thực thi trong bài XSS - Stored (Blog) mức độ dễ ................................................................................................................ 68 Hình 3.1 Các bước thực hiện khai thác lỗi CSRF ................................................... 71 Hình 3.2 Mô hình tấn công CSRF theo phương thức POST .................................. 72 Hình 3.3 Chọn bài CSRF (Change Password) ........................................................ 73 6

Hình 3.4 Chọn level low trong bài CSRF (Change Password) ............................... 74 Hình 3.5 Giao diện thực hiện tấn công CSRF trong bài CSRF (Change Password) mức độ dễ ................................................................................................................ 74 Hình 3.6 Phương thức GET được sử dụng trong bài CSRF (Change Password) mưc độ dễ ........................................................................................................................ 75 Hình 3.7 Sử dụng chức năng Generate CSRF PoC trên Burp Suite ....................... 75 Hình 3.8 Đoạn html sau khi sử dụng chức năng Generate CSRF PoC ................... 75 Hình 3.9 Tạo file html với nội dung sau khi Generate CSRF PoC ......................... 76 Hình 3.10 File html được gửi cho người dùng........................................................ 76 Hình 3.11 Kết quả sau khai thác lỗi CSRF (Change Pasword) mức độ dễ ............ 76

7

CHƯƠNG 1. KỸ THUẬT TẤN CÔNG SQL INJECTION 1.1. Nhận diện điểm yếu SQL Injection trong ứng dụng web Xác định điểm yếu là công việc đầu tiên trong chuỗi các thao tác cần để khắc phục điểm yếu SQL Injection trong ứng dụng. Công việc này được thực hiện tương tự các 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 trong việc kiểm tra thông tin đầu vào Tham số được nhập vào sẽ được sử dụng để xây dựng các truy vấn SQL nên nó sẽ cần thoả mãn các ràng buộc cú pháp với thành phần trước và sau trong truy vấn gốc. Xét đoạn mã PHP xử lý đăng nhập sau:

Xâu truy vấn SQL được sinh ra trong trường hợp trên sử dụng trực tiếp giá trị được người dùng nhập vào, do đó mô hình xây dựng truy vấn dạng này được gọi chung là xây dựng truy vấn động (dynamic query). Truy vấn thu được sẽ có dạng như sau: SELECT * FROM tbl_users WHERE username=’$uname’ AND password=’$passwd’;

Trong đó hai giá trị $name và $passwd được nhập từ người dùng. Khi thực hiện nhập giá trị username là admin’ or ‘1’=’1 truy vấn động thu được sẽ như sau: SELECT * FROM tbl_users WHERE username=’admin’ or ‘1’=’1’ AND password=”;

Truy vấn này tuy có cụm luôn đúng, nhưng do toán tử AND có độ ưu tiên cao hơn OR do đó truy vấn trên tương đương với: SELECT * FROM tbl_users WHERE username=’admin’ or ‘1’=’1’ AND password=” or ‘1’=’1’;

8

Truy vấn trên tương đương với: SELECT * FROM tbl_users WHERE username=’admin’ or password=” or ‘1’=’1’;

Trường hợp này việc xác thực đã thành công do mệnh đề WHERE luôn đúng. Ngoài cách trên ta có thể thực hiện chèn thêm một đoạn or ‘1’=1 vào username, tức là admin’ or ‘1’=’1’ or ‘1’=’1 vào, kết quả thu được cũng tương tự, do toán tử AND đã được khử trước các toán tử OR. Tùy thuộc vào câu truy vấn gốc mà các tham số được chèn vào sẽ có vị trí khác nhau trong truy vấn đó. Ứng với từng trường hợp đó, ta có các mô hình chèn tham số sau: - Chèn vào giữa truy vấn: là mô hình chỉ đơn thuần thao tác với tham số, không hề tác động đến cấu trúc và các thành phần của truy vấn gốc. Mô hình này có thể khái quát như sau:

Hình 1.1 Mô hình chèn vào giữa truy vấn - Chèn và ngắt truy vấn: là mô hình chèn truy vấn phổ biến nhất, truy vấn được chèn vào sẽ bao gồm thêm ở cuối các ký tự comment nhằm ngắt truy vấn tại đó, vô hiệu hoá các phần tử trong truy vấn gốc nằm phía sau vị trí tham số. Đoạn mã PHP đã nêu được cải tiến như sau: