TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ...... ......
BÁO CÁO BÀI TẬP LỚN MÔN: AN TOÀN BẢO MẬT THÔNG TIN ĐỀ TÀI: Xây dựng một trang web bị lỗi XSS, thực hiện các kịch bản tấn công XSS lên hệ thống đã xây dựng, thực hiện các thao tác thay đổi để loại bỏ tấn công.
GVHD:
Ths Trần Phương Nhung
Lớp:
KTPM1-K12
Sinh viên thực hiện:
Mai Văn Thanh
2017603813
Nguyễn Sỹ Thăng
2017603449
Nguyễn Như Thảo
2017603721
Vũ Mạnh Thắng
2017604076
Vũ Văn Tiến
2019607819
Hà Nội 2020
1
MỤC LỤC
2
MỤC LỤC HÌNH ẢNH
Lời nói đầu Ngày nay, Internet cùng với các dịch vụ phong phú của nó có khả năng cung cấp cho con người các phương tiện hết sức thuận tiện để trao đổi, tổ chức, tìm kiếm và cung cấp thông tin. Tuy nhiên, cũng như các phương thức truyền thống việc trao đổi, cung cấp thông tin điện tử trong nhiều lĩnh vực đòi hỏi tính bí mật, tính toàn vẹn, tính xác thực cũng như trách nhiệm về các thông tin được trao đổi. Bên cạnh đó, tốc độ xử lý của máy tính ngày càng được nâng cao, do đó cùng với sự trợ giúp của các máy tính tốc độ cao, khả năng tấn công các hệ thống thông tin có độ bảo mật kém rất dễ xảy ra.
Chính vì vậy người không ngừng nghiên cứu các vấn đề bảo mật và an toàn thông tin để đảm bảo cho các hệ thống thông tin an toàn. Cho đến ngày nay với sự phát triển của công nghệ mã hóa phi đối xứng, ngưười ta đã nghiên cứu và đưa ra nhiều kỹ thuật, nhiều mô hình cho phép chúng ta áp dụng xây dựng các ứng dụng đòi hỏi tính an toàn thông tin cao. Sự phát triển vượt bậc của công nghệ web đã đem lại rất nhiều thuận lợi cho người sử dụng cũng như các nhà phát triển.Nhưng cùng với sự phát triển này thì các ứng dụng web cũng trở thành mục tiêu ưu thích của những kể tấn công.Các hình thức tấn công rất đa dạng như thay đổi nội dung của trang web,tấn công từ chối dịch vụ khiến cho việc truy cập trang web không thể thực hiện hoặc rất khó thực hiện,chiếm quyền điều khiển trang web… Mục tiêu của các hacker cũng rất khác nhau,có thể tấn công xuất phát từ thiện chí,nhằm tìm ra những điểm yếu và thông báo cho nhà quản trị hệ thống.Nghiêm trọng hơn là tấn công để phục vụ cho các mục đích xấu như tống tiền trang web,lấy cắp những dữ liệu nhạy cảm như thông tin về thể tín dụng,mua hàng thông qua tài khoản của người khác… Trong các hình thức tấn công thì tấn công bằng cách chèn mã độc XSS là phổ biến. Nó được coi là một trong những tấn công nguy hiểm nhất đối với các ứng dụng web và có thể mang lại những hậu quả nghiêm trọng. Thông thường, các cuộc tấn công XSS được sử dụng để vượt qua truy cập, ăn cắp dữ liệu nhận 3
dạng của người dùng như: cookies, session tokens và các thông tin khác.
CHƯƠNG 1. GIỚI THIỆU VỀ XSS 1.1.
Khái quát XSS
XSS (Cross Site Scripting) là một lỗi bảo mật cho phép hacker nhúng mã độc (javascript) vào một trang web khác. Hacker có thể lợi dụng mã độc này để deface trang web, cài keylog, chiếm quyền điều khiển của người dùng, dụ dỗ người dùng tải virus về máy. Đây là một trong những lỗi bảo mật thường gặp nhất trên các trang web. Các hệ thống từ lớn đến nhỏ như Facebook, Twitter, một số forum lớn của Việt Nam,.. đều từng gặp phải lỗi này. XSS nằm trong top 10 lỗi bảo mật nghiêm trọng nhất trên OSASP.
1.2.
Những dạng XSS
1.2.1. Server XSS → →
Stored XSS Reflected XSS.
1.2.2. Client XSS →
DOM- BASED XSS
4
CHƯƠNG 2. XÂY DỰNG WEBSITE CHỨA LỖI XSS(Mai Văn Thanh)
[ma_tai_khoan] Varchar(1) NOT NULL, [ten_tai_khoan] Nvarchar(255) NOT NULL, [ten_dang_nhap] Varchar(255) NOT NULL, UNIQUE ([ten_dang_nhap]), [mat_khau] Varchar(255) NOT NULL, [quyen_truy_cap] Integer NOT NULL, [dia_chi] Nvarchar(255) NOT NULL, [tinh_trang] Integer NOT NULL, Constraint [pk_tai_khoan] Primary Key ([ma_tai_khoan])
2.2.
Xây dưng website 2 2.2.1. Giao diện website
11
Hình 4. Giao diện website 2
Mã nguồn: /* Developed by Juno_okyo */ setcookie('canyouseeme', 'I am Juno_okyo'); // secret cookie for demo
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <?php else: ?> <form action="index.php" method="post" acceptcharset="utf-8" id="form"> Your name: value="<?php if ( ! empty($name)) { echo $name; } ?>" placeholder="John Doe..." autofocus required>
CHƯƠNG 3. TẤN CÔNG KIỂU STORED XSS (Mai Văn Thanh)
3.1.
Khái quát về STORED XSS
Stored XSS là dạng tấn công mà hacker thông qua việc chèn các mã độc vào cơ sở dữ liệu của website. Dạng tấn công này xảy ra khi các dữ liệu được gửi lên server không được kiểm tra kỹ lưỡng mà lưu trữ trực tiếp vào cơ sở dữ liệu. Khi người dùng truy cập vào trang web này thì những đoạn script độc hại sẽ được thực thi chung với quá trình load trang web. Ví dụ như các form góp ý, các comment … trên các trang web. Với kỹ thuật Stored XSS , hacker không khai thác trực tiếp mà phải thực hiện tối thiểu qua 2 bước.
Hình 5. Giao diện form
17
Đầu tiên hacker sẽ thông qua các điểm đầu vào (form, input, textarea…) không được kiểm tra kỹ để chèn vào CSDL các đoạn mã (đoạn mã thay đổi liên kết, thay đổi background) nguy hiểm.
Hình 6. Mã độc chèn thành công
Chèn mã javascript thay đổi link:
Hình 7. Ảnh demo chèn mã độc thay đổi link
Chèn mã javascript thay đổi background:
Hình 8. Ảnh demo thay đổi background
18
Tiếp theo, khi người dùng truy cập vào ứng dụng web và thực hiện các thao tác liên quan đến dữ liệu được lưu này, đoạn mã của hacker sẽ được thực thi trên trình duyệt người dùng. Kịch bản khai thác:
Hình 9. Kịch bản khai thác lỗi xss
3.2.
Thực hiện các bước tấn công kiểu STORED XSS
3.2.1. Thực hiện tấn công ở website 1 Giả định: Hacker sẽ thực hiện chức năng đăng ký tài khoản ở website 1, ở mục họ và tên hacker nhập đoạn mã độc: <script>alert("toi hacker")</script> Các mục còn lại nhập thông tin bình thường
19
Hình 10. Ảnh hacker thực hiện nhập tấn công
Sau đó hacker ấn nút đăng ký.
Đăng ký thành công load đến form đăng nhập
Hình 11. Ảnh Form đăng nhập
Lúc này đoạn mã độc đã được thêm thành công vào cơ sở dữ liệu 20
Hình 12. Ảnh cơ sở dữ liệu của website 1
Khi đó, người dùng nào sử dụng tài khoản của mình đăng nhập vào website 1 này.
Hình 13. Ảnh người dùng sử dụng tài khoản của mình để đăng nhập
Người dùng thực hiện chức năng có liên quan đến bảng “tai_khoan” trong CSDL thì mã độc của hacker sẽ được thực thi lập tức:
21
Hình 14. Mã độc được thực thi
3.2.2. Thực hiện các bước phòng tránh Sử dụng CSP (Content Security Policy) Hiện tại ta có thể dùng chuẩn CSP để chống XSS. Với CSP trình duyệt chỉ chạy javascript từ những domain được chỉ định. Cách thực hiện Đặt đoạn mã thư viện trong cặp thẻ <head></head>
">
22
Hình 15. ảnh thêm CSP vào website 1
3.2.3. Thực hiện kiểm tra lại Dùng tài khoản của người dùng để kiểm tra
Hình 16. Giao diện login người dung
23
Đăng nhập vào chức năng và không còn thấy lỗi nữa
Hình 17. Giao diện website 1 →
Kết quả: sau khi sử dụng CSP website 1 đã không còn lỗ hổng STORED XSS nữa.
4.1.1. Khái quát về Reflected XSS: Gọi là Reflected(phản xạ) bởi vì trong kịch bản khai thác loại này, hacker phải gửi cho nạn nhân một URL có chứa đoạn mã nguy hiểm(thường là javascript). Nạn nhân chỉ cần request đến URL này thì ngay lập tức hacker sẽ nhận được respond chứa kết quả mong muốn(tính phản xạ thể hiện ở đây). Ngoài ra nó còn được biết đến với tên gọi firstorder XSS. Chi tiết được mô tả qua những bước sau:
•
Người dùng đăng nhập web và giả sử được gán session:
Bằng cách nào đó, hacker gửi được cho người dùng URL: />+i.src=” />Giả sử example.com là website nạn nhân truy cập, hacker-site.net là trang của hacker tạo ra.
•
Nạn nhân truy cập đến URL trên.
•
Server phản hồi cho nạn nhân, kèm với dữ liệu có trong request (đoạn javascript của hacker).
•
Trình duyệt nạn nhân nhận phản hồi và thực thi đoạn javascript.
•
Đoạn javascript mà hacker tạo ra thực tế như sau: 25