CHƯƠNG I : TỔNG QUAN ĐỀ TÀI Với sự phát triển nhanh chóng của công nghệ thông tin, thì thông tin cá nhân và các thông tin của công việc cần được bảo mật đang là thứ rất được coi trọng. Mọi thông tin quan trọng của một tổ chức công ty có thể đáng giá hàng nghìn đô, cũng vì vậy sự ra đời của các tin tặc hay còn gọi là hacker nhằm kiếm được món lợi nhuận khổng lồ từ thông tin của tổ chức công ty khác nhằm bán lại luôn là mục đích của nhóm người này. Từ đó đòi hỏi cần sự bảo vệ thông tin cần phải phát triển hơn nữa để ngăn chặn từ đó WebGoat, 1 chương trình được làm ra để đào tạo và phát triển nhân lực trẻ để tìm hiểu hướng tấn công của các tin tặc để ngăn chặn. WebGoat chính là một server application được cố tình lập trình có rất nhiều lỗi bảo mật.
Thông qua đó, nó hướng dẫn người dùng thực hành những kỹ thuật tấn công ở trên để hiểu rõ hơn bản chất về lỗ hổng mà web applications thường gặp. OWASP là nhà thành lập, phát triển và kiểm tra chức năng mới sử dụng thử nghiệm thâm nhập của WebGoat được thành lập vào năm 2001 bởi Mark Curphey và cho đến nay thì Matt Konda là người lãnh đạo của tổ chức này. WebGoat dựa vào hướng tiếp cận của một hacker để biết họ sẽ làm gì để đưa ra giải pháp ngăn chặn những cuộc tấn công an ninh mạng này khiến cho những hacker này không thể xâm nhập vào thiết bị hay hệ thống thông tin của người dùng. WebGoat được thiết kế với 8 bài học chính và người học phải hoàn thành các tiến trình nhỏ để hoàn thành các bài học.
Mỗi bài học là một hướng khác nhau và WebGoat vẫn đang cập nhật các loại tấn công phổ biến mới của các hacker hiện nay. Mục tiêu chính của WebGoat là tạo ra một môi trường giảng dạy tương tác trên thực tế để bảo mật ứng dụng web, và trong tương lai WebGoat định hướng trở thành một nền tảng đo điểm chuẩn bảo mật và một trang Web dựa trên Java Honeypot. 1 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 WEBGOAT WebGoat đã cho ra mắt phiên bản mới nhất 8.0 vào ngày 21 tháng 5 năm nay trên github.com và vẫn đang tiếp tục cập nhật và phát triển chương trình CHƯƠNG II : LỢI ÍCH CỦA WEBGOAT MANG LẠI +Giải thích lỗ hổng: Thay vì 'chỉ hack', WebGoat đề cao việc giảng dạy, tập trung vào việc giải thích ngay từ đầu. +Học bằng cách tự làm: Trong quá trình giải thích về lỗ hổng, WebGoat xây dựng các bài tập sẽ giúp bạn hiểu cách hoạt động của các lỗ hổng này.
+Giải thích giảm thiểu: Cuối mỗi bài học, bạn sẽ nhận được một cái nhìn tổng quan về các biện pháp giảm thiểu có thể sẽ giúp bạn trong quá trình phát triển. Bạn có thể thực hành các loại tấn công khác nhau và WebGoat sẽ hướng dẫn bạn cách thực hiện cuộc tấn công và dẫn bạn theo con đường thực hiện khám phá và thử nghiệm CHƯƠNG III : HƯỚNG DẪN CÀI ĐẶT WEBGOAT Bước 1:Cài đặt WebGoat tại : https://github.com/ WebGoat/WebGoat và cài đặt Java để chạy được WebGoat Bước 2:Chạy file .jar vừa tải về (đối với window), đối với linux thì chạy qua cmd.Mở thư mục chứa file.jar rồi chạy lệnh: java -jar [Tên tệp jar] Bước 3:Mở browser, truy cập http://localhost:8080/WebGoat. Sau đó tạo tài khoản để đăng nhập WebGoat 2 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 WEBGOAT CHƯƠNG IV : CÁC BÀI HỌC TẤN CÔNG MẠNG TRÊN WEBGOAT 1. HTTP Basic Bài học này trình bày những kiến thức cơ bản để hiểu việc truyền dữ liệu giữa trình duyệt và ứng dụng web và cách bẫy một yêu cầu / phản hồi bằng proxy HTTP.
Cách HTTP hoạt động: Tất cả các giao dịch HTTP đều tuân theo cùng một định dạng chung. Mỗi yêu cầu của máy khách và phản hồi của máy chủ có ba phần: dòng yêu cầu hoặc phản hồi, phần tiêu đề và phần thân thực thể. Khách hàng bắt đầu một giao dịch như sau: Máy khách liên hệ với máy chủ và gửi yêu cầu tài liệu. Yêu cầu GET có thể có các tham số url và các tham số đó sẽ có sẵn trong nhật ký truy cập web.html?param=value HTTP / 1.0 Tiếp theo, máy khách gửi thông tin tiêu đề tùy chọn để thông báo cho máy chủ về cấu hình của nó và các định dạng tài liệu mà nó sẽ chấp nhận.
o Tác nhân người dùng: Mozilla / 4.06 Chấp nhận: image / gif, image / jpeg, / Trong yêu cầu ĐĂNG, dữ liệu do người dùng cung cấp sẽ tuân theo các tiêu đề tùy chọn và không phải là một phần của dữ liệu có trong URL ĐĂNG.1 Bài học số 2 Nhập tên của bạn vào trường nhập bên dưới và nhấn "Bắt đầu!" để nộp. Máy chủ sẽ chấp nhận yêu cầu, đảo ngược đầu vào và hiển thị lại cho người dùng, minh họa những điều cơ bản về xử lý một yêu cầu HTTP. Nhập hello -> Máy chủ sẽ chấp nhận yêu cầu, đảo ngược đầu vào và hiển thị lại cho người dung thành olleH như hình dưới. 3 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 WEBGOAT 1.3 Bài học số 3 Mục tiêu của bài này là tìm hiểu WebGoat đã sử dụng loại lệnh HTTP nào cho bài học này.
A POST or a GET. Gõ POST -> rồi ấn go -> sau đó vào phần Network của trang web Vào headers Sẽ thấy được kết quả như trên hình -> Nhập kết quả =>Hoàn thành bài học 4 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 WEBGOAT b. HTTP Proxy Tổng quan về proxy HTTP Nhiều khi proxy được sử dụng như một cách để truy cập nội dung bị chặn. Người dùng có thể kết nối với máy chủ A, máy chủ này chuyển tiếp nội dung từ máy chủ B… Vì Máy chủ B bị chặn trong mạng của người dùng.
Đó không phải là trường hợp sử dụng mà chúng ta sẽ giải quyết ở đây, nhưng khái niệm thì giống nhau. HTTP Proxy nhận yêu cầu từ máy khách và chuyển tiếp chúng. Họ cũng thường ghi lại chúng. Chúng hoạt động như một người trung gian (hãy ghi nhớ điều đó nếu bạn quyết định sử dụng máy chủ proxy để kết nối với một số hệ thống bị chặn khác).
Chúng tôi sẽ chưa đi sâu vào HTTP và HTTPS, nhưng đó là một chủ đề quan trọng trong mối quan hệ với proxy. Khả năng proxy Các proxy nằm giữa máy khách của bạn và máy chủ mà máy khách đang nói chuyện. Bạn có thể ghi lại và phân tích các yêu cầu và phản hồi. Bạn cũng có thể sử dụng proxy để sửa đổi (giả mạo) các yêu cầu và phản hồi.
Proxy cũng có các chức năng tự động hoặc bán tự động cho phép bạn đạt được hiệu quả trong việc kiểm tra và phân tích tính bảo mật của trang web. Các sử dụng khác cho proxy Đặc biệt ZAP cũng có thể được sử dụng trong quá trình phát triển trong CI / CD, DevOps hoặc môi trường xây dựng / thử nghiệm tự động khác. Bài học này hiện không có bất kỳ chi tiết nào về điều đó, nhưng nó là đáng nói. Có một số ví dụ trên internet về việc nó được tích hợp vào CI / CD với Jenkins, maven hoặc các quy trình xây dựng khác.
5 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 WEBGOAT Thiết lập chặn như đã lưu ý ở trên và sau đó gửi biểu mẫu / yêu cầu bên dưới bằng cách nhấp vào nút gửi. Khi yêu cầu của bạn bị chặn (chạm điểm ngắt), hãy sửa đổi nó theo các bước. Bước 1 ấn submit -> mở Burp bắt dữ liệu Vào header đổi method post thành get Thêm vào header x-request-intercepted:true Thay đổi giá trị đầu vào thành Request are tampered easily Ấn forward =>Hoàn thành bài học https://www.com/watch?v=6ZMSqXF2jao 2. Mục đích 6 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 WEBGOAT - Người dùng nên có hiểu biết cơ bản về cách hoạt động của SQL và nó được sử dụng để làm gì.
- Người dùng sẽ hiểu được các phương pháp tốt nhất để bảo vệ khỏi các cuộc tấn công SQL Injection. - Người dùng sẽ chứng minh kiến thức về String SQL Injection và Numeric SQL Injection. SQL là gì? Ngôn ngữ truy vấn có cấu trúc - Structured Query Language (SQL) là một cách để tương tác với cơ sở dữ liệu và được thông dịch bởi cơ sở dữ liệu. Một số lưu ý: - SQL không phải viết tắt của Standard Query Language.
- Có nhiều phiên bản SQL, hầu hết các cơ sở dữ liệu có một số chức năng tùy chỉnh. - Hầu hết các nhà cung cấp đều có phần mở rộng độc quyền. ** Ngôn ngữ thao tác dữ liệu - Data Manipulation Language (DML) Cho phép thực thi các câu truy vấn bao gồm cú pháp để chọn (SELECT), cập nhật (UPDATE), chèn (INSERT), xóa (DELETE). **Ngôn ngữ định nghĩa dữ liệu - Data Definition Language (DDL) Dùng để định nghĩa cấu trúc của cơ sở dữ liệu bao gồm định nghĩa các hàng, các cột, các bảng dữ liệu,…ví dụ như CREATE, ALTER, DROP, TRUNCATE.
** Ngôn ngữ điều khiển dữ liệu - Data Control Language (DCL) Sử dụng để phân quyền người dùng bao gồm các lệnh GRANT (trao một quyền cho người dùng) và REVOKE (thu hồi quyền đã trao cho người dùng). SQL Injection là gì? Một cuộc tấn công SQL Injection bao gồm việc chèn hoặc "tiêm" dữ liệu độc hại thông qua đầu vào truy vấn SQL từ máy khách đến ứng dụng. 7 Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 WEBGOAT Khai thác SQL Injection thành công có thể: - Đọc và sửa đổi dữ liệu nhạy cảm từ cơ sở dữ liệu. - Thực thi các thao tác quản trị trên cơ sở dữ liệu.
Shutdown auditing hoặc DBMS. Cắt ngắn các bảng và log. Thêm người dùng. - Khôi phục nội dung của một tệp nhất định có trên hệ thống tệp DBMS.
- Đưa ra các lệnh cho hệ điều hành. Hậu quả của SQL Injection Các cuộc tấn công SQL Injection cho phép những kẻ tấn công: - Giả mạo danh tính. - Giả mạo dữ liệu hiện có. - Gây ra các vấn đề từ chối như vô hiệu hóa các giao dịch hoặc thay đổi số dư.
- Cho phép tiết lộ toàn bộ dữ liệu trên hệ thống. - Hủy dữ liệu hoặc làm cho dữ liệu đó không khả dụng. - Trở thành quản trị viên của máy chủ cơ sở dữ liệu. SQL Injection phổ biến hơn trong PHP, Classic ASP, Cold Fusion và các ngôn ngữ cũ hơn: - Các ngôn ngữ không cung cấp hỗ trợ truy vấn được tham số hóa.
- Các truy vấn được tham số hóa đã được thêm vào các phiên bản mới hơn. - Những người sớm áp dụng công nghệ web (tức là Old Code).