Nội dung tóm tắt các chương như sau:Chương 1 – Bảo mật ứng dụng và máy chủ web giới thiệu khái quát về một số dạng tấncông lên ứng dụng và máy chủ web mà nhóm đã lên kịch bản tấn công và
BẢO MẬT ỨNG DỤNG VÀ MÁY CHỦ WEB
XSS
Tấn công Cross-Site Scripting (XSS) là một trong những hình thức tấn công phổ biến nhất đối với ứng dụng web, xuất phát từ việc trình duyệt hỗ trợ JavaScript Mã XSS được nhúng vào trang web và chạy trong trình duyệt với quyền truy cập của người dùng, cho phép kẻ tấn công truy cập thông tin nhạy cảm lưu trữ trong trình duyệt Do XSS hoạt động trong môi trường trình duyệt, nó không bị phát hiện bởi các phần mềm quét độc hại và công cụ bảo vệ hệ thống.
XSS, hay tấn công chèn mã HTML, cho phép kẻ tấn công khai thác lỗ hổng bảo mật để chèn mã vào trang web mà không cần sử dụng JavaScript hoặc liên kết giữa các trang Trong quá trình này, thông tin nhạy cảm như tên và địa chỉ email có thể bị lạm dụng, khi mã XSS được kết hợp với mã gốc của trang web, tạo ra những mối nguy hiểm cho người dùng.
Tấn công XSS xảy ra khi trang web cho phép người dùng nhập dữ liệu và hiển thị dữ liệu đó, tạo cơ hội cho kẻ tấn công chèn mã script độc hại Mã script này sẽ được thực thi khi người dùng khác truy cập trang web, cho phép kẻ tấn công thực hiện nhiều thao tác khác nhau trên hệ thống của nạn nhân, tùy thuộc vào mục đích và mức độ tinh vi của cuộc tấn công.
- Đánh cắp thông tin nhạy cảm của người dùng lưu trong Cookie của trình duyệt
- Giả mạo hộp đối thoại đăng nhập để đánh cắp mật khẩu
- Bắt phím gõ từ người dùng để đánh cắp thông tin về tài khoản ngân hàng, email, và thông tin đăng nhập các dịch vụ trả tiền,
- Sử dụng trình duyệt để quét các cổng dịch vụ trong mạng LAN
- Lén lút cấu hình lại bộ định tuyến nội bộ để bỏ qua tường lửa của mạng nội bộ
- Tự động thêm người dùng ngẫu nhiên vào tài khoản mạng xã hội
- Tạo môi trường cho tấn công CSRF.
Mã tấn công HTML/XSS có thể được chèn vào bất kỳ vị trí nào trong địa chỉ URI và nội dung của trang web, với các vị trí cụ thể cho phép chèn mã tấn công.
- Các thành phần của URI (URI Components)
- Các trường nhập liệu (Form Fields) - HTTP Request Header & Cookie
- Các thuộc tính của DOM (Document Object Model)
- Các nội dung do người dùng tạo ra
Stored XSS là một loại tấn công mà mã độc được nhúng vào nội dung trang web và lưu trữ trong cơ sở dữ liệu Những website có nguy cơ cao bị tấn công Stored XSS bao gồm diễn đàn cho phép người dùng đăng bài và phản hồi, các trang thương mại điện tử cho phép nhận xét sản phẩm, cũng như mạng xã hội và ứng dụng nhắn tin trực tuyến Kẻ tấn công thường khéo léo chèn mã script vào các đoạn văn bản, hình ảnh và sử dụng thẻ HTML để thực hiện hành vi của mình.
Tấn công Reflected XSS xảy ra khi dữ liệu do người dùng cung cấp được sử dụng bởi script trên máy chủ để tạo ra kết quả và hiển thị ngay cho người dùng Loại tấn công này thường xuất hiện trên các máy tìm kiếm hoặc trang web có tính năng tìm kiếm, trong đó mã XSS được nhập vào ô từ khóa hoặc chuỗi truy vấn trong URL và được thực thi khi trình duyệt tải kết quả tìm kiếm.
Tấn công DOM-based XSS xảy ra khi mã script máy khách trong một trang web khai thác các đối tượng hoặc thuộc tính của cây DOM, chẳng hạn như "document.URL".
Lỗ hổng "document.location" có thể dẫn đến tấn công DOM-based XSS khi mã script sử dụng các đối tượng DOM để ghi mã HTML mà không mã hóa đúng cách Điều này cho phép trình duyệt thực hiện mã HTML chứa các script khác Một dạng tấn công XSS khác liên quan đến việc sử dụng các trang web trên hệ thống file cục bộ của người dùng, cho phép mã script từ xa của kẻ tấn công thực thi với quyền của người dùng cục bộ, được gọi là tấn công liên vùng (cross-zone attack) Các bước thực hiện trong tấn công DOM-based XSS tương tự như trong tấn công Reflected XSS.
Tiến hành tiêm các đoạn mã vào ô tìm kiếm của ứng dụng.
Hacked vào các ô input đầu vào ở ô tìm kiếm
Trong trường hợp không có kiểm tra giá trị đầu vào từ phía server, việc chèn script vào thanh tìm kiếm sẽ ngay lập tức được đưa vào phản hồi Điều này tạo điều kiện cho các kẻ tấn công khai thác lỗ hổng Reflected XSS.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Stored cross-site scripting: Ứng dụng có chức năng thêm mới bài hát.
Trong quá trình thêm thông tin bài hát, chúng ta đã cố tình chèn vào các đoạn script độc hại, được lưu trực tiếp vào cơ sở dữ liệu Nội dung này sẽ được hiển thị trên một giao diện nào đó, và khi người dùng thực hiện một hành động như nhấp chuột vào nội dung, script sẽ ngay lập tức được thực thi.
Hình 1.2: Chèn script độc hại ở các ô input
Hình 1.3: Script độc hại được render ra giao diện người dùng
DOM-based cross-site scripting:
Chức năng tìm kiếm của ứng dụng
Ta nhấn tổ hợp phím Ctrl+U: phát hiện có một đoạn script nhỏ bên dưới.
Hình 1.4: Script code trong source code
Ta thấy form search với method là GET, do đó người dùng submit search thì value sẽ hiện trên URL như sau:
URLSearchParams là một Object, object này định nghĩa các methods để làm có thể xử lý với query string trên URL Cụ thể như sau:
Hình 1.7: Lấy giá trị của query search
Sau khi get ra được giá trị từ ô search, ta thử thêm một malicious code để khai thác XSS (DOM based).
Hình 1.8 cho thấy cảnh báo về lỗ hổng XSS (DOM based) trong ứng dụng, cho phép kẻ tấn công khai thác và truy cập thông tin quan trọng như cookie của người dùng Để phòng chống, cần thực hiện các biện pháp bảo mật hiệu quả.
Để bảo đảm an toàn cho hệ thống, cần sử dụng một danh sách đen (blacklist) các thẻ và thuộc tính không được phép nhập vào Nếu đầu vào của người dùng chứa các ký tự nằm trong danh sách đen đã được xác định, hệ thống sẽ từ chối yêu cầu và trả về một thông báo lỗi.
Việc khai báo các tags và attributes trong ứng dụng web thường được thực hiện thủ công, dẫn đến khó khăn trong việc dự đoán mọi tình huống có thể xảy ra Nếu kẻ tấn công thực hiện brute force để xác định các tags và attributes có thể chứa mã độc, họ có khả năng khai thác lỗ hổng Reflected XSS.
Sử dụng các framework và các thư viện có sẵn sẽ đặt hiệu quả cao hơn.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
CSRF
CSRF (Cross-Site Request Forgery) là một loại tấn công mà kẻ xấu lợi dụng để dụ nạn nhân truy cập vào trang web có chứa yêu cầu độc hại Tấn công này khai thác thông tin nhận dạng và quyền truy cập của nạn nhân, cho phép kẻ tấn công thực hiện các hành động không mong muốn thay mặt nạn nhân, chẳng hạn như thay đổi địa chỉ email, địa chỉ nhà, hoặc thực hiện giao dịch mua bán.
CSRF, hay tấn công giả mạo yêu cầu giữa các trang, gửi các yêu cầu độc hại đến người dùng nạn nhân để đánh cắp thông tin cá nhân, quyền truy cập và dữ liệu nhạy cảm Nhiều trang web gặp khó khăn trong việc phân biệt giữa các yêu cầu hợp lệ và giả mạo khi người dùng đang được xác thực.
Tấn công CSRF (Cross-Site Request Forgery) nhắm vào các trạng thái trên máy chủ, cho phép kẻ tấn công thay đổi địa chỉ IP hoặc mật khẩu của nạn nhân Đầu tiên, kẻ tấn công yêu cầu nạn nhân đăng nhập vào tài khoản mà chúng kiểm soát để thu thập thông tin nhạy cảm như thẻ tín dụng, tài khoản ngân hàng và địa chỉ nhà Sau khi thu thập được các dữ liệu cá nhân này, kẻ tấn công sẽ sử dụng chúng để đăng nhập vào tài khoản trên ứng dụng web.
Lỗ hổng lưu trữ CSRF là các cuộc tấn công xảy ra trên các trang web có bảo mật kém, thường được thực hiện thông qua thẻ IMG hoặc IFRAME trong môi trường HTML Do CSRF được lưu trữ trên trang web, nó có khả năng gây ra nhiều mối nguy hiểm, vì các cuộc tấn công này có thể được kích hoạt và mở rộng bất cứ lúc nào.
CSRF, also known as XSRF, Sea Surf, Session Riding, Cross-Site Reference Forgery, and Hostile Linking, is recognized by Microsoft as a clickjacking attack that poses a significant threat to critical documents.
Trang web có thể tồn tại lỗi cho phép tấn công CSRF, trong đó đoạn code được sử dụng để ghi tên bài hát và tên ca sĩ vào cơ sở dữ liệu Đoạn code này bao gồm hai tham số truyền vào, trong đó tham số “name” là “album_name”.
Hình 1.9: Đoạn code sử dụng method POST Đoạn code method post có thể dẫn đến CSRF
Hình 1.10: Form code dùng để tiến hành tấn công CSRF
Kẻ tấn công đã tạo ra một đường link giả mạo để nhập tên album và tên ca sĩ, với mục đích thay đổi giá trị của hai biến album_name và singer_name trên website, như thể hiện trong hình 1.9.
Hình 1.11: Tham số truyền vào của form Khi request này được gửi lên cùng tham số đó sẽ lưu lại vào cơ sở dữ liệu của website.
- Nâng cao ý thức bảo mật của user, không ấn vào các đường link lạ.
- Sử dụng các framework, thư viện chuẩn có phòng chống CSRF
- Với mỗi request gửi lên đều được kiểm tra session có phải từ chính máy client gửi hay không
SQL Injection
Tấn công chèn mã SQL (SQL Injection) là một kỹ thuật nguy hiểm cho phép kẻ tấn công chèn mã SQL vào dữ liệu gửi đến máy chủ, dẫn đến việc thực thi mã trên cơ sở dữ liệu Tùy thuộc vào mức độ tinh vi, loại tấn công này có thể cho phép kẻ tấn công vượt qua xác thực người dùng, chèn, sửa đổi hoặc xóa dữ liệu, đánh cắp thông tin từ cơ sở dữ liệu, và chiếm quyền điều khiển hệ thống máy chủ cơ sở dữ liệu SQL Injection là một trong những dạng tấn công phổ biến nhất đối với các ứng dụng web có kết nối với cơ sở dữ liệu.
Có 2 nguyên nhân của lỗ hổng trong ứng dụng cho phép thực hiện tấn công chèn mã SQL:
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
- Dữ liệu đầu vào từ người dùng hoặc từ các nguồn khác không được kiểm tra hoặc kiểm tra không kỹ lưỡng;
- Sử dụng các câu lệnh SQL động trong ứng dụng, trong đó có thao tác nối dữ liệu người dùng với mã lệnh SQL gốc.
Có rất nhiều kĩ thuật để thực hiện tấn công SQL injection và trong các tình huống khác nhau thì các kĩ thuật này có thể thay đổi:
- Retrieving hidden data: can thiệp vào query tới database để lấy thêm dữ liệu ẩn
- Bypass login: sử dụng SQL injection để qua mặt cơ chế authentication.
- SQL injection union attack: sử dụng union trong sql để lấy dữ liệu ở table khác
- Examining the database: Lấy dữ liệu về version của database
Blind SQL injection là một kỹ thuật tấn công mà dữ liệu từ truy vấn SQL không được trả về qua ứng dụng web, khiến cho việc khai thác trở nên khó khăn hơn Đây là một phương pháp phức tạp và đòi hỏi kỹ năng cao hơn so với các kỹ thuật tấn công SQL injection khác.
Giả sử trên ứng dụng có chức năng show toàn bộ albums, playlists, sound ở trang home
Hình 1.12: Mục favourite của user Với một điều kiện toàn bộ album, playlist, sound với một trường mode=public
Vì mặc định sẽ không được hiển thị những album, playlist, sound ở mode=private.
Hình 1.13: Query get tất cả album với mode = public Gửi query lên server:
Trong SQL, dấu “ ” bắt đầu một comment, khiến phần mode=’public’ bị bỏ qua trong truy vấn Điều kiện “1=1” luôn đúng, dẫn đến việc truy vấn này liệt kê toàn bộ giá trị trong bảng Do đó, kẻ tấn công có khả năng truy cập tất cả dữ liệu, bao gồm cả mode=’private’.
Khi mà người dùng nhập username và password sau đó bấm Login thì ngay lập tức một SQL query được thực hiện:
Thay đổi giá trị username hoặc password bằng cách thêm “ ”, là comment syntax trong SQL:
Như vậy and password=’password’ đã bị biến thành comment và bị bỏ đi khi thực hiện query.
Mệnh đề UNION trong SQL cho phép kết hợp kết quả từ hai hoặc nhiều câu lệnh SELECT mà không trả về hàng trùng lặp Tuy nhiên, kẻ tấn công có thể khai thác tính năng này để kết hợp các câu lệnh SELECT từ nhiều bảng, từ đó thu thập thông tin quan trọng hơn Để sử dụng mệnh đề UNION, mỗi câu lệnh SELECT cần phải đáp ứng các điều kiện nhất định.
Cùng số cột được chọn
Để thực hiện mệnh đề UNION trong SQL, các câu lệnh SELECT cần phải trả về số lượng cột giống nhau Do đó, việc xác định số cột mà truy vấn SQL của ứng dụng web sẽ trả về là rất quan trọng để áp dụng mệnh đề UNION một cách chính xác Để đạt được điều này, chúng ta có thể sử dụng mệnh đề ORDER.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Ta lần lượt thay đổi để truy xuất ra số lượng cột trong Table
Thay đổi cho đến khi server hết báo lỗi thì dừng lại và đó chính là số cột mà Table hiện có.
Ta sử dụng tool BurpSuite (Repeater):
Hình 1.15: Sử dụng tool BurpSuite (Repeater)
Blind SQL injection được sử dụng khi mà ứng dụng web không có bất cứ phản hồi (error, message) được gửi về sau một lần request.
Tất cả các phương pháp tấn công và kỹ thuật sử dụng UNION đã được trình bày trước đó dường như không hiệu quả Trong chức năng đăng nhập của ứng dụng, chúng ta có thể thực hiện truy vấn như sau: Lưu ý rằng, trên các trang web có tài khoản quản trị, thường sẽ có tên đăng nhập như: admin, administrator, root…
Ta tiến hành thử một vài trường hợp:
To perform a brute force attack, navigate to the Intruder tab where you can manually configure the values needed for the attack.
Tab Intruder hiển thị các giá trị của package được thể hiện bằng ký tự $ Khi thực hiện brute force, các giá trị này sẽ được thay đổi và chèn vào từ file chứa danh sách key và giá trị để tiến hành tấn công.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
In this scenario, we aim to determine the password length by specifically targeting payload number 6 The brute force method utilized here is classified as Sniper mode, as it focuses on a single payload for the brute force attack.
Hình 1.19: Chế độ Sniper Chuyển sang tab payload:
Quá trình brute force, như thể hiện trong Hình 1.21, cho phép xác định các giá trị bất thường trong một package so với các gọi tin khác, chẳng hạn như về độ dài và trạng thái Những giá trị này có thể chính là thông tin mà chúng ta đang tìm kiếm.
In this scenario, if the server returns a line of error (500 Internal Server Error) in the response, the attacker recognizes that the query is valid This condition error can be exploited further to determine the length of the password, followed by identifying each character of the password sequentially.
Attacker có thể sử dụng hàm substring và công cụ BurpSuite (Intruder) có thể tìm lần lượt các ký tự của password.
- Mã hóa (filter) các ký tự đầu vào có thể gây lỗi SQL Injection
- Sử dụng các framework, thư viện chuẩn phòng chống SQL Injection
Tấn công các cơ chế xác thực
Xác thực (authentication) là quá trình xác minh thông tin nhận dạng của cá nhân hoặc thực thể, trong khi trao quyền (authorization) xác định quyền truy cập vào tài nguyên mà người dùng được phép sử dụng sau khi đã được xác thực Các cuộc tấn công vào cơ chế xác thực, hay còn gọi là tấn công xác thực (Authentication attacks), là những loại tấn công nhằm xâm nhập vào bước xác thực này.
Xây dựng một website nghe nhạc an toàn yêu cầu áp dụng các biện pháp bảo mật cho cả website và cơ sở dữ liệu thông tin người dùng, bao gồm xác thực người dùng (User authentication) và cấp quyền cho người dùng (User authorization) Để xâm nhập vào cơ chế xác thực của ứng dụng web, kẻ tấn công có hai phương thức chính: (1) Đánh cắp mật khẩu tài khoản người dùng và (2) Bỏ qua quy trình xác thực Cả hai phương thức này đều được tin tặc sử dụng tùy thuộc vào điều kiện và hệ thống mục tiêu.
Các hình thức tấn công vào cơ chế xác thực bao gồm: phát lại chuỗi định danh phiên, tấn công vét cạn, nghe lén thông tin, khởi tạo lại mật khẩu, và các lỗ hổng như XSS và SQL Injection.
Phát lại chuỗi định danh phiên: Giao thức HTTP không hỗ trợ phiên
Hầu hết các máy chủ sử dụng cookie để nhận dạng người dùng trong phiên làm việc Cookie là thông tin mà máy chủ web lưu trữ trên trình duyệt, cho phép lưu trữ dữ liệu như chuỗi định danh phiên và thông tin xác thực người dùng Các phiên làm việc thường yêu cầu tên người dùng và mật khẩu để xác thực Tuy nhiên, kẻ tấn công có thể đánh cắp thông tin xác thực này và giả mạo người dùng để truy cập vào hệ thống.
Vét cạn, hay tấn công vét cạn (Brute force), là phương pháp thử tất cả các khả năng để tìm ra tên người dùng và mật khẩu Kẻ tấn công có thể dựa vào tín hiệu phản hồi hoặc thông báo lỗi từ hệ thống để xác định sự thành công hoặc thất bại trong quá trình tìm kiếm mật khẩu.
"Invalid username and password" có nghĩa là username và password đều sai, nếu báo lỗi là "Invalid password" thì chỉ password sai, còn username đã đúng.
Kẻ tấn công có thể lợi dụng thời gian xử lý để xác định thông tin, vì nếu không tìm thấy username, thời gian tìm kiếm sẽ kéo dài do phải quét toàn bộ dữ liệu.
50 danh sách Ngược lại, nếu tìm thấy username thì thời gian tìm kiếm thường ngắn hơn do không phải quét hết danh sách người dùng.
Nghe lén (Sniffing) là hành động chặn bắt và phân tích lưu lượng mạng từ card mạng hoặc thiết bị như router và switch để thu thập thông tin nhạy cảm Mạng WLAN dễ bị nghe lén hơn do tín hiệu truyền qua không khí, trong khi lưu lượng HTTP dễ bị khai thác vì không được mã hóa Một số công cụ phổ biến cho việc nghe lén bao gồm Tcpdump, Wireshark, Pcap/Wincap và plugin Firesheep.
Khởi tạo lại mật khẩu là một kỹ thuật khai thác lỗ hổng trong tính năng khôi phục mật khẩu của nhiều website Nhiều trang web gửi mật khẩu qua email hoặc sử dụng câu hỏi bảo mật và thông tin cá nhân để xác thực Kẻ tấn công có thể đánh cắp thông tin xác thực hoặc liên kết khôi phục mật khẩu nếu chúng được gửi dưới dạng rõ Điều này cho phép kẻ tấn công thực hiện việc đổi mật khẩu của người dùng Ngoài ra, có thể sử dụng mã SQL để đăng nhập vào hệ thống mà không cần mật khẩu hoặc thông tin đăng nhập.
- Sử dụng và lưu trữ mật khẩu dưới dạng mã hóa.
- Tạo mật khẩu có độ bảo mật cao, có các ký tự đặc biệt.
- Áp dụng các cách phòng chống các dạng tấn công khác như XSS, SQLInjection, brute force, …
Các lỗ hổng trong cấu hình máy chủ web
Cấu hình máy chủ web là quá trình thiết lập các tùy chọn để kiểm soát hoạt động của máy chủ, ảnh hưởng đến tất cả website trên đó Những điểm yếu trong cấu hình này bao gồm tài khoản quản trị mặc định, nội dung mặc định, khả năng liệt kê thư mục và các phương thức không an toàn.
Các tài khoản quản trị ngầm định
Nhiều máy chủ web hiện nay vẫn sử dụng các tài khoản quản trị mặc định với mật khẩu yếu hoặc thậm chí không có mật khẩu, đặc biệt là ở các phiên bản cũ của máy chủ web và hệ điều hành.
Hình 1.22: Tài khoản ngầm định trên một số máy chủ web
Các nội dung ngầm định
Nhiều máy chủ web được cung cấp với các nội dung ngầm định, có thể trở thành "đòn bẩy" cho tin tặc tấn công máy chủ và ứng dụng web Những nội dung này có thể tiềm ẩn rủi ro lớn cho hệ thống.
- Các tính năng gỡ rối và kiểm thử cho người quản trị.
- Các tính năng mẫu được thiết kế cho các công việc dùng chung.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
- Một số tính năng đặc biệt được thiết kế dùng trong nội bộ, nhưng lại vô tình để người ngoài có thể truy nhập.
- Tài liệu hướng dẫn sử dụng, hoặc quản trị máy chủ web có thể là công cụ hỗ trợ đắc lực cho tin tặc.
Hình 1.23: Trang phpinfo.php dùng cho quản trị cho phép đọc thông tin cấu hình
Liệt kê nội dung thư mục
Hình 1.24: Nội dung một thư mục của website được liệt kê
Khi máy chủ web nhận được yêu cầu truy nhập là 1 thư mục, các hành động sau có thể được thực hiện:
- Nếu trong thư mục tồn tại trang ngầm định (index.html, default.htm, ), trang ngầm định được gửi cho trình duyệt;
Nếu trang ngầm định không tồn tại trong thư mục, máy chủ web có thể trả về thông báo lỗi mã 403, điều này xảy ra khi không cho phép liệt kê nội dung của thư mục.
BẢO MẬT CƠ SỞ DỮ LIỆU
Mật khẩu yếu hoặc mặc định
Nhiều hệ quản trị cơ sở dữ liệu, đặc biệt là các phiên bản cũ, thường sử dụng tài khoản quản trị với mật khẩu mặc định đơn giản hoặc rỗng, như Microsoft SQL Server phiên bản 2000 và cũ hơn với tài khoản sa không có mật khẩu, và MySQL với tài khoản root cũng không có mật khẩu Trong quá trình cài đặt, nhiều tài khoản được cấu hình với mật khẩu dễ đoán hoặc giống tên truy cập, tạo ra lỗ hổng bảo mật nghiêm trọng.
Máy chủ dữ liệu cài đặt MySQL với tài khoản mặc định là root và mật khẩu yếu có thể bị tấn công nếu cho phép kết nối từ tất cả các máy trong mạng LAN Hacker có thể khai thác tài khoản và mật khẩu này để thực hiện tấn công brute force, nhằm tìm ra thông tin đăng nhập và truy cập vào hệ thống.
Máy hacker đã xâm nhập vào hệ thống server, sử dụng công cụ nmap để quét và xác định tất cả các máy có trong hệ thống, từ đó tìm ra cổng kết nối tới máy chủ cơ sở dữ liệu.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Hình 2.25: Máy tấn công quét các máy có trong mạng LAN
Hình 2.26 Kẻ tấn công dò ra được port của MySQL
Máy chủ cơ sở dữ liệu thường cho phép kết nối từ các máy trong hệ thống với tài khoản mặc định là root và mật khẩu yếu, dễ bị tấn công bằng phương pháp brute force Điều này tạo điều kiện thuận lợi cho kẻ tấn công có thể dễ dàng dò ra tên người dùng và mật khẩu.
Hình 2.27: Kẻ tấn công tìm ra được user và password 2.1.3 Phòng chống
- Đặt user với tên khác với mặc định
- Đặt mật khẩu phức tạp, càng phức tạp càng khó brute force
- Chỉ cho phép kết nối database thông qua máy webserver
Sử dụng phiên bản mới nhất của hệ quản trị cơ sở dữ liệu giúp người dùng được cập nhật các tính năng bảo mật tiên tiến, bao gồm xác thực người dùng, bảo vệ dữ liệu khỏi việc chèn, sửa đổi hoặc xóa trái phép, cũng như ngăn chặn việc đánh cắp thông tin và chiếm quyền điều khiển hệ thống máy chủ cơ sở dữ liệu.
Máy chủ dữ liệu MySQL có thể gặp lỗ hổng SQL Injection nếu không kiểm tra dữ liệu đầu vào hoặc nếu tài khoản người dùng có quyền thao tác quá nhiều trên cơ sở dữ liệu, bao gồm các hành động như chọn, chèn, xóa và cập nhật dữ liệu.
Hacker có thể dễ dàng đăng nhập vào hệ thống bằng cách nhập 'root' vào trường username và '123456' vào trường password, nếu thông tin này tồn tại trong cơ sở dữ liệu, hệ thống sẽ thông báo đăng nhập thành công Ngược lại, nếu thông tin không chính xác, hệ thống sẽ từ chối đăng nhập và hiển thị thông báo lỗi Tuy nhiên, khi người dùng nhập “aaaa' OR 1=1–” vào trường username và một chuỗi bất kỳ vào trường password, mã xử lý sẽ bị lỗi và câu truy vấn SQL sẽ bị ảnh hưởng, dẫn đến việc hệ thống có thể bị tấn công.
SELECT * FROM tbl_accounts WHERE username='aaaa' OR 1=1 ' AND password='aaaa'
Câu truy vấn sẽ lấy tất cả các bản ghi trong bảng do điều kiện OR 1=1 luôn đúng, và phần kiểm tra mật khẩu đã bị vô hiệu hóa nhờ ký hiệu ( ).
Trong trường hợp khác, máy chủ dữ liệu có thể gặp lỗ hổng trong việc thiết lập quyền truy cập cơ sở dữ liệu, cho phép kẻ tấn công sử dụng tài khoản quản trị để truy cập và thao tác dữ liệu trên website Điều này có thể dẫn đến các hành động nguy hiểm đối với cơ sở dữ liệu, chẳng hạn như xóa toàn bộ bảng, bao gồm cả cấu trúc của nó, thông qua lệnh DROP TABLE.
; Xóa cả cơ sở dữ liệu: DROP DATABASE
- Tạo stored procedure, web server sẽ chỉ thực thi được các store procedure đã tạo.
- Phân quyền user thường chỉ cho phép thực thi stored procedure đã được tạo sẵn, không cho phép thực hiện các hành động khác (select, insert, update, …).
- Backup dữ liệu thường xuyên đề phòng bị inject xóa mất dữ liệu.
2.3 Đặc quyền quá mức cho người dùng hoặc nhóm người dùng
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Nhiều người dùng và nhóm người dùng nhận quyền truy cập quá mức cần thiết, dẫn đến nguy cơ lạm dụng quyền hoặc bị tin tặc khai thác Thực tế cho thấy, nhiều người dùng cơ sở dữ liệu chỉ cần truy cập dữ liệu nhưng lại được cấp quyền quản trị hoặc làm chủ sở hữu cơ sở dữ liệu Nguyên nhân chủ yếu là do ý thức của người quản trị, và điều này có thể gây ra hậu quả nghiêm trọng nếu bị lợi dụng.
Khi máy chủ cơ sở dữ liệu tạo tài khoản người dùng công cộng cho máy chủ web nhưng cấp quyền truy cập quá mức cần thiết, điều này có thể dẫn đến việc khai thác thông tin Mặc dù ứng dụng web chỉ cho phép người dùng này truy cập một số bảng nhất định để xem thông tin công khai, nhưng nếu kết nối tới cơ sở dữ liệu, người dùng vẫn có khả năng truy cập tất cả các bảng, gây ra rủi ro bảo mật nghiêm trọng.
- Khi tạo user, người quản trị cần phân quyền rõ ràng giữa user public và admin user.
- Đối với các user không phải quản trị viên thì chỉ cho phép thực thi các thủ tục đã cấp trong cơ sở dữ liệu.
2.4 Cho phép các tính năng không sử dụng trong DBMS
Việc kích hoạt các tính năng không cần thiết trong hệ quản trị cơ sở dữ liệu có thể tạo ra nhiều rủi ro bảo mật, làm gia tăng bề mặt tấn công và cung cấp cho tin tặc nhiều cơ hội để xâm nhập vào cơ sở dữ liệu Đặc biệt, một số tính năng như siêu thủ tục xp_cmdshell trong SQL Server và Sybase, mặc dù không cần thiết, lại cho phép truy cập sâu vào cơ sở dữ liệu và hệ thống, tiềm ẩn nguy cơ lớn cho an ninh thông tin.
Khi một người dùng công khai kết nối đến cơ sở dữ liệu nhưng được cấp quyền thực thi các thủ tục hệ thống hoặc tự phân quyền, họ có nguy cơ gây ra sự cố hoặc truy cập thông tin trái phép trong cơ sở dữ liệu.
Khi phân quyền cho người dùng, quản trị viên cần hạn chế các tính năng mà người dùng có thể truy cập, dựa trên mục tiêu thiết kế cơ sở dữ liệu và ứng dụng web.
Người dùng thường chỉ có quyền truy cập vào các bảng và thủ tục được cấp phát, mà không thể xem các thông số khác như số lượng truy cập hay địa chỉ truy cập.
- Chỉ cho phép user quản trị thực hiện đầy đủ các tính năng của hệ quản trị cơ sở dữ liệu.
Đặc quyền quá mức cho người dùng hoặc nhóm người dùng
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Nhiều người dùng và nhóm người dùng được cấp quyền truy cập cao hơn mức cần thiết, dẫn đến lạm dụng quyền hoặc bị tin tặc khai thác Thực tế cho thấy, nhiều người dùng cơ sở dữ liệu chỉ cần truy cập dữ liệu nhưng lại được cấp quyền quản trị hoặc trở thành chủ sở hữu cơ sở dữ liệu Tình trạng này chủ yếu do thiếu ý thức của người quản trị, có thể gây ra hậu quả nghiêm trọng nếu bị khai thác.
Khi máy chủ cơ sở dữ liệu tạo người dùng public cho máy chủ web và cấp quyền truy nhập quá mức cần thiết, người dùng này có thể kết nối tới cơ sở dữ liệu và khai thác thông tin từ tất cả các bảng Mặc dù ứng dụng web chỉ cho phép người dùng này truy cập một số bảng nhất định để xem thông tin công khai, nhưng việc cấp quyền không hợp lý có thể dẫn đến rủi ro bảo mật nghiêm trọng.
- Khi tạo user, người quản trị cần phân quyền rõ ràng giữa user public và admin user.
- Đối với các user không phải quản trị viên thì chỉ cho phép thực thi các thủ tục đã cấp trong cơ sở dữ liệu.
Cho phép các tính năng không sử dụng trong DBMS
Việc cho phép các tính năng không sử dụng trong hệ quản trị cơ sở dữ liệu có thể tạo ra rủi ro lớn, vì nó làm tăng bề mặt tấn công và tạo điều kiện cho tin tặc tấn công cơ sở dữ liệu Một số tính năng không cần thiết, như siêu thủ tục xp_cmdshell trong SQL Server và Sybase, có khả năng truy cập sâu vào cơ sở dữ liệu và hệ thống, vì vậy cần được quản lý cẩn thận để bảo vệ an toàn thông tin.
Khi một người dùng công khai kết nối đến cơ sở dữ liệu nhưng được cấp quyền thực thi các thủ tục hệ thống hoặc tự phân quyền, họ có khả năng gây ra thiệt hại hoặc truy cập thông tin trái phép trong cơ sở dữ liệu.
Khi phân quyền cho người dùng, quản trị viên cần xác định và giới hạn các tính năng mà người dùng có thể truy cập, dựa trên mục tiêu thiết kế của cơ sở dữ liệu và ứng dụng web.
Người dùng thường chỉ có quyền truy cập vào các bảng và thủ tục được cấp phát, mà không thể xem các thông số khác như số lượng truy cập hay địa chỉ truy cập.
- Chỉ cho phép user quản trị thực hiện đầy đủ các tính năng của hệ quản trị cơ sở dữ liệu.
Giới hạn các địa chỉ được phép kết nối tới máy chủ cơ sở dữ liệu là rất quan trọng để ngăn chặn việc leo thang quyền truy cập, từ người dùng bình thường trở thành DBO hoặc DBA Để minh họa cho việc khai thác lỗi leo thang đặc quyền, chúng ta xem xét kịch bản khai thác lỗi trong mô đun MDSYS.RESET_INPROG_INDEX của Oracle11g R2.
- Tạo 1 thủ tục myproc chứa mã cấp quyền cho người dùng hiện tại thành DBA;
- Tạo hàm myfn chứa mã để tạo 1 trigger trong system schema Trigger chứa lệnh gọi thực hiện myproc.
- Tiến hành khai thác lỗi trong mô đun MDSYS.RESET_INPROG_INDEX, yêu cầu MDSYS thực hiện myfn để tạo trigger;
Để kích hoạt trigger đã tạo, người dùng cần có quyền PUBLIC và thực hiện một lệnh SQL Hệ thống sẽ tự động thực hiện trigger, và trigger này sẽ gọi myproc để cấp quyền DBA cho người dùng.
- Không tạo các thủ tục cấp quyền truy nhập cao hơn cho các người dùng có quyền truy nhập thấp.
Tấn công từ chối dịch vụ cơ sở dữ liệu ít được biết đến hơn so với tấn công DoS/DDoS vào hạ tầng mạng Tin tặc thường khai thác các tính năng, lỗi hoặc lỗ hổng trong hệ thống cơ sở dữ liệu để tiêu tốn tài nguyên hoặc giảm hiệu năng Các hình thức tấn công từ chối dịch vụ cơ sở dữ liệu bao gồm: lạm dụng tính năng của cơ sở dữ liệu, sử dụng câu truy vấn phức tạp, khai thác lỗi hoặc khiếm khuyết, và tấn công qua lớp ứng dụng.
Lạm dụng các tính năng của cơ sở dữ liệu
Trong tấn công từ chối dịch vụ (DoS), tin tặc khai thác các tính năng không an toàn của cơ sở dữ liệu để gây rối Khi các tính năng này cho phép truy cập từ bên ngoài, kẻ tấn công có thể lợi dụng việc giới hạn số lần đăng nhập sai Nếu biết tên người dùng, họ sẽ thử nhiều mật khẩu sai, dẫn đến việc người dùng thực sự bị khóa tài khoản.
Xây dựng website nghe nhạc cần chú trọng đến các biện pháp bảo mật cho cả website và cơ sở dữ liệu tài khoản Nếu cấu hình cơ sở dữ liệu cho phép tự động mở rộng khi có nhiều yêu cầu truy vấn, kẻ tấn công có thể gửi hàng loạt yêu cầu giả mạo, dẫn đến việc sử dụng tài nguyên tối đa và có nguy cơ làm sập máy chủ Bên cạnh đó, tin tặc cũng có thể gửi các yêu cầu đặc biệt nhằm gây lỗi trong xử lý dữ liệu đầu vào, làm cho máy chủ cơ sở dữ liệu ngừng hoạt động.
Tin tặc sử dụng các câu truy vấn phức tạp để làm máy chủ cơ sở dữ liệu tiêu tốn nhiều tài nguyên như bộ nhớ, thời gian CPU và đĩa, dẫn đến giảm hiệu năng hoặc thậm chí làm ngừng hoạt động máy chủ Họ có thể tạo ra các câu truy vấn với nhiều trường tính toán và số lượng lớn bản ghi, gây áp lực lên bộ nhớ của máy chủ Các khả năng khác mà tin tặc có thể khai thác trong dạng tấn công này bao gồm việc tối ưu hóa truy vấn để làm giảm hiệu suất hệ thống.
- Sử dụng các câu truy vấn lồng nhau hoặc đệ quy
Sử dụng các phép toán tốn kém như toán tử IN với danh sách so sánh dài có thể làm giảm hiệu suất truy vấn Ví dụ, khi áp dụng toán tử IN trong câu lệnh SELECT, việc xử lý dữ liệu có thể trở nên chậm chạp nếu danh sách quá dài Để tối ưu hóa hiệu suất, nên cân nhắc các phương pháp thay thế hoặc giới hạn kích thước danh sách so sánh.
"select * from from where IN (select from table2….)"
- Sử dụng phép JOIN để tạo các câu truy vấn cho tập kết quả rất lớn, như trong câu lệnh SELECT sau: "Select * from table1 a inner join table2 b on a.c1 = b.c2…."
- Sử dụng hàm do người dùng định nghĩa: Tin tặc có thể tự viết các hàm để tấn công cơ sở dữ liệu.
Khai thác các lỗi và khiếm khuyết là một trong những hình thức tấn công DoS phổ biến nhất đối với cơ sở dữ liệu Các lỗi thường bị khai thác bao gồm lỗi tràn bộ đệm, lỗi chèn mã SQL và lỗi thiết lập quyền truy cập Một ví dụ điển hình là sâu Slammer (hay còn gọi là Sapphire), đã lợi dụng lỗi tràn bộ đệm để tấn công các máy chủ Microsoft SQL 2000, gây ra sự lây lan nhanh chóng và tạo ra "trận lụt lưu lượng mạng" toàn cầu vào năm 2003.
Mặc dù không gây ra "trận lụt", lỗi chèn mã SQL trên các trang web có thể cho phép tin tặc đánh cắp dữ liệu và phá hủy nội dung cơ sở dữ liệu, dẫn đến gián đoạn hoạt động của hệ thống Thêm vào đó, lỗi thiết lập quyền truy nhập, khi cấp quyền quản trị cho người dùng không phù hợp, cùng với chèn mã SQL, có thể tạo điều kiện cho tin tặc chiếm quyền điều khiển hệ thống máy chủ cơ sở dữ liệu.
Tấn công thông qua lớp ứng dụng
Tin tặc có thể tấn công cơ sở dữ liệu thông qua ứng dụng kết nối, ví dụ như bằng cách thêm hàng ngàn sản phẩm vào giỏ hàng trên website bán hàng Họ có thể liên tục thêm sản phẩm và xem lại giỏ hàng, dẫn đến việc làm chậm hoặc đình trệ hoạt động của cơ sở dữ liệu.
Để bảo mật cơ sở dữ liệu, cần hạn chế người dùng bên ngoài kết nối trực tiếp Việc áp dụng mô hình người dùng hoặc sử dụng máy khách gián tiếp để truy cập cơ sở dữ liệu là một giải pháp hiệu quả nhằm bảo vệ thông tin quan trọng.
- Giới hạn địa chỉ kết nối tới máy chủ cơ sở dữ liệu
- Vô hiệu hóa các tài khoản, các tính năng và các dịch vụ không sử dụng
Denial of Service
Tấn công từ chối dịch vụ cơ sở dữ liệu ít được biết đến hơn so với tấn công DoS/DDoS vào hạ tầng mạng, nhưng cũng rất nguy hiểm Tin tặc thường khai thác các tính năng, lỗi hoặc lỗ hổng trong hệ thống cơ sở dữ liệu để tiêu tốn tài nguyên hoặc giảm hiệu năng Các hình thức tấn công này bao gồm: lạm dụng các tính năng của cơ sở dữ liệu, sử dụng các câu truy vấn phức tạp, khai thác lỗi hoặc khiếm khuyết, và tấn công qua lớp ứng dụng.
Lạm dụng các tính năng của cơ sở dữ liệu
Trong tấn công từ chối dịch vụ (DoS), tin tặc thường khai thác các tính năng không an toàn của cơ sở dữ liệu để thực hiện hành vi này Khi giới hạn số lần đăng nhập sai cho một người dùng, kẻ tấn công có thể dễ dàng khóa tài khoản thực sự bằng cách thử nhiều mật khẩu sai nếu biết tên người dùng.
Xây dựng website nghe nhạc cần chú trọng đến các biện pháp bảo mật cho website và cơ sở dữ liệu tài khoản Nếu cấu hình cơ sở dữ liệu cho phép tự động tăng năng lực khi số lượng truy vấn tăng, kẻ tấn công có thể gửi nhiều yêu cầu giả mạo, làm tiêu tốn tài nguyên và có nguy cơ khiến máy chủ sụp đổ Ngoài ra, tin tặc cũng có thể gửi các yêu cầu đặc biệt để gây lỗi trong việc xử lý dữ liệu đầu vào, dẫn đến tình trạng máy chủ cơ sở dữ liệu ngừng hoạt động.
Tin tặc sử dụng các câu truy vấn phức tạp để làm máy chủ cơ sở dữ liệu tiêu tốn nhiều tài nguyên như bộ nhớ, thời gian CPU và đĩa, dẫn đến giảm hiệu suất hoặc thậm chí làm ngừng hoạt động máy chủ Họ có thể tạo ra các câu truy vấn với các trường tính toán và số lượng lớn bản ghi, gây áp lực lên bộ nhớ của máy chủ Các khả năng khác mà tin tặc có thể khai thác trong kiểu tấn công này bao gồm việc tối ưu hóa câu truy vấn để gia tăng hiệu quả tấn công.
- Sử dụng các câu truy vấn lồng nhau hoặc đệ quy
Sử dụng toán tử IN với danh sách so sánh dài trong câu lệnh SELECT có thể dẫn đến chi phí tính toán cao Việc này ảnh hưởng đến hiệu suất truy vấn và làm chậm quá trình lấy dữ liệu Do đó, cần xem xét các phương pháp tối ưu hóa khác để cải thiện hiệu quả truy vấn.
"select * from from where IN (select from table2….)"
- Sử dụng phép JOIN để tạo các câu truy vấn cho tập kết quả rất lớn, như trong câu lệnh SELECT sau: "Select * from table1 a inner join table2 b on a.c1 = b.c2…."
- Sử dụng hàm do người dùng định nghĩa: Tin tặc có thể tự viết các hàm để tấn công cơ sở dữ liệu.
Khai thác các lỗi và khiếm khuyết trong cơ sở dữ liệu là một trong những hình thức tấn công DoS phổ biến Những lỗi thường bị khai thác bao gồm lỗi tràn bộ đệm, lỗi chèn mã SQL và lỗi thiết lập quyền truy cập Một ví dụ điển hình là sâu Slammer (hay còn gọi là Sapphire), đã lợi dụng lỗi tràn bộ đệm để tấn công các máy chủ Microsoft SQL 2000, gây ra sự lây lan nhanh chóng và tạo ra một "trận lụt lưu lượng mạng" toàn cầu vào năm 2003.
Lỗi chèn mã SQL trên các trang web không chỉ có thể dẫn đến việc đánh cắp dữ liệu mà còn có khả năng phá hủy toàn bộ nội dung cơ sở dữ liệu, gây gián đoạn hoạt động hệ thống Bên cạnh đó, việc thiết lập quyền truy nhập không đúng cách, như cấp quyền quản trị cho người dùng không đáng tin cậy, có thể tạo điều kiện cho tin tặc chiếm quyền điều khiển hệ thống máy chủ cơ sở dữ liệu.
Tấn công thông qua lớp ứng dụng
Tin tặc có thể tấn công cơ sở dữ liệu thông qua ứng dụng kết nối, ví dụ như việc thêm hàng ngàn sản phẩm vào giỏ hàng trên website bán hàng Hành động này có thể làm chậm hoặc đình trệ hoạt động của cơ sở dữ liệu khi số lượng sản phẩm tăng lên đáng kể.
Để bảo vệ cơ sở dữ liệu, cần hạn chế việc người dùng bên ngoài kết nối trực tiếp, bằng cách áp dụng mô hình người dùng hoặc sử dụng máy khách gián tiếp để truy cập.
- Giới hạn địa chỉ kết nối tới máy chủ cơ sở dữ liệu
- Vô hiệu hóa các tài khoản, các tính năng và các dịch vụ không sử dụng
Quyền truy nhập vào hệ thống chỉ được cấp cho máy chủ cơ sở dữ liệu và máy chủ web, trong khi người dùng bình thường chỉ được phép thực hiện các thủ tục cần thiết.
- Giới hạn thời gian với câu truy vấn
- Sử dụng firewall, phân tích các gói tin kết nối tới server, nếu có dấu hiệu bất thường thì chặn truy cập
Không mã hóa dữ liệu
Dữ liệu nhạy cảm, khi không được mã hóa, có nguy cơ bị nghe trộm hoặc đánh cắp, cả khi lưu trữ và trong quá trình truyền tải Để bảo vệ dữ liệu lưu trữ, có thể áp dụng mã hóa hệ thống file hoặc mã hóa dữ liệu kiểu trong suốt (TDE) Đối với dữ liệu trên đường truyền, việc sử dụng các giao thức bảo mật như SSL/TLS, Kerberos hoặc Oracle ASO là cần thiết để đảm bảo an toàn.
Các công cụ quản trị mạng như Tcpdump và WireShark có khả năng bắt gói tin giữa client và server, bao gồm thông tin nhạy cảm như username, password và token Nếu dữ liệu này không được mã hóa, kẻ tấn công có thể dễ dàng nghe lén và đánh cắp thông tin.
- Mã hóa các dữ liệu quan trọng như username, password trước khi đưa vào lưu trữ ở cơ sở dữ liệu.
- Tạo các kết nối an toàn qua SSL/TLS.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
THỰC NGHIỆM
XSS
Để ngăn chặn tấn công XSS, nhóm đã sử dụng blacklist để lọc dữ liệu đầu vào
Hình 3.28: File tag_black_list
Hình 3.29: File attributes_black_list
Việc sử dụng các danh sách đen (black list) trong bảo mật là một phương pháp thủ công và không thể đảm bảo hoàn toàn an toàn, vì có thể xảy ra những tình huống không lường trước Kẻ tấn công có khả năng sử dụng phương pháp brute force để phát hiện các thẻ (tag) và thuộc tính (attribute) có thể bị khai thác.
Vậy nên nhóm đã sử dụng thêm các phòng chống nữa tối ưu hơn là sử dụng thư viện thymeleaf có sẵn của frameword Spring boot.
HTML Thymeleaf hỗ trợ ghi giống như các thẻ HTML thông thường và cho phép render dữ liệu từ tầng Controller trong mô hình MVC, đảm bảo hiển thị đúng dữ liệu mà người dùng mong muốn.
Hình 3.30: Kết quả từ tìm kiếm trong ô Search hiện ra
Trong trường hợp dữ liệu không được xử lý, sẽ xảy ra lỗi XSS Tuy nhiên, Thymeleaf đã xử lý dữ liệu này và mặc định chuyển chúng sang định dạng văn bản.
Hình 3.31: HTML thymeleaf “th:text” mặc định value đó luôn là text
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Hình 3.32: Source HTML Đây là đoạn code cấu hình ngăn chặn XSS
Hình 3.33: Cấu hình để ngăn chặn XSS
CSRF
Để ngăn chặn tấn công CSRF, nhóm đã áp dụng framework Spring Boot trong việc phát triển ứng dụng, đồng thời thực hiện kiểm tra session của các request gửi đến server nhằm xác nhận rằng các request này xuất phát từ client, không phải từ một trang web bên ngoài.
Hình 3.34: Form code của tin tặc dùng để tiến hành tấn công CSRF
Hình 3.35: Người dùng mở form từ link của hacker và truyền tham số
Hình 3.36: Kết quả website từ chối request truyền tham số từ link bên ngoài
Hình 3.37: Xác thực session đến từ chính máy của client
SQL Injection
Để ngăn chặn tấn công SQL Injection, việc mã hóa các ký tự đầu vào là cần thiết, bên cạnh đó, nhiều framework hiện nay đã tích hợp đầy đủ các module và thư viện hỗ trợ bảo vệ chống lại loại tấn công này.
Hiện tại nhóm đang sử dụng framework Spring Boot Thư viện này cung cấp một số module giúp ta tránh những đầu vào có thể gây lỗi SQL Injection.
Nhóm đã áp dụng biện pháp giới hạn quyền truy cập vào cơ sở dữ liệu kết hợp với việc phân quyền chặt chẽ, đảm bảo rằng người dùng chỉ có thể thực hiện các thủ tục nhất định.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Để ngăn chặn SQL Injection và bảo vệ cơ sở dữ liệu khỏi bị phá hoại, nhóm đã thực hiện việc cấp phép cho stored procedure và tạo thêm backup dữ liệu.
Hình ảnh các user được phân quyền tương ứng
Hình ảnh user không được thực hiện các thao tác khác
Hình ảnh user chỉ được thực thi các thủ tục đã cấp phép
Tấn công các cơ chế xác thực
Các biện pháp phòng chống tấn công vào các cơ chế xác thực chủ yếu dựa vào việc áp dụng các phương pháp bảo vệ trước những dạng tấn công khác Nhóm đã thực hiện nhiều biện pháp nâng cao bảo mật để tăng cường khả năng phòng ngừa.
- Sử dụng và lưu trữ username, password dưới dạng mã hóa.
- Tạo các mật khẩu có độ bảo mật cao, chứa các ký tự đặc biệt.
- Áp dụng phòng chống các dạng tấn công khác đã nêu ra trong bài báo cáo.
Các lỗ hổng trong cấu hình máy chủ web
Với dạng tấn công này, nhóm đã áp dụng một số biện pháp bảo mật như sau:
- Đổi tên và mật khẩu các tài khoản quản trị mặc định
- Không liệt kê nội dung các thư mục
- Chỉ sử dụng 2 phương thức chuẩn là GET và POST
- Kiểm soát, giới hạn các thao tác trên ứng dụng web
Hình ảnh user quản trị không phải là root như mặc định của MySQL trên hệ quản trị cơ sở dữ liệu:
- Tạo user kết nối từ web server tới data server với tên khác mặc định.
- Đặt mật khẩu có độ phức tạp cao và được mã hóa trong quá trình kết nối.
- Chỉ cho phép kết nối tới data server thông qua máy web server.
Sử dụng phiên bản mới nhất của MySQL giúp bạn tận hưởng các tính năng bảo mật tiên tiến, bao gồm mã hóa mật khẩu khi kết nối.
Hình ảnh user kết nối từ web server tới data server
Hình ảnh phiên bản mới của MySQL
Hình ảnh máy Kali không thể thực hiện tấn công brute force do không có khả năng kết nối Để hạn chế quyền truy cập của người dùng không phải quản trị viên, nhóm đã thực hiện các biện pháp giảm thiểu đặc quyền quá mức cho người dùng hoặc nhóm người dùng.
- Tạo user public với các quyền bị hạn chế chỉ được thực thi các thủ tục (stored procedure) khi sử dụng schema sound.
Để tạo người dùng, cần sử dụng các tính năng quản trị kết nối từ web server đến data server Người dùng này chỉ có quyền thực hiện một số lệnh và thi hành các thủ tục trong schema sound.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Hình ảnh user quản trị web được cấp quyền hạn chế
Hình ảnh user không phải quản trị viên bị hạn chế rất nhiều
Hình ảnh user không phải quản trị viên không thể thực hiện select
3.8 Cho phép các tính năng không sử dụng trong DBMS
Việc tắt các tính năng không sử dụng trong hệ quản trị cơ sở dữ liệu là rất quan trọng và liên quan chặt chẽ đến việc phân quyền người dùng truy cập vào máy chủ dữ liệu Do đó, nhóm đã thực hiện phân quyền theo hướng dẫn ở mục 3.7 nhằm hạn chế các tính năng không cần thiết.
Lỗi leo thang đặc quyền thường xảy ra khi một thủ tục trong cơ sở dữ liệu cấp quyền cao hơn cho người dùng có đặc quyền thấp Để ngăn chặn tình trạng này, nhóm đã quyết định không thêm mã cấp quyền cho người dùng trong các thủ tục, nhằm bảo vệ an toàn cho hệ thống.
Hình ảnh một thủ tục không có mã cấp quyền.
Tấn công từ chối dịch vụ (DDoS) là một trong những loại tấn công khó phòng ngừa kịp thời Tuy nhiên, nhóm đã triển khai một số biện pháp nhằm giảm thiểu thiệt hại và ngăn chặn hiệu quả kiểu tấn công này.
- Triển khai mô hình kết nối website qua firewall như đã đề cập ở trên.
- Không cho phép người dùng bên ngoài firewall trực tiếp kết nối tới cơ sở dữ liệu hay web server.
- Giới hạn thời gian với các câu lệnh truy vấn nhằm hạn chế các câu lệnh truy vấn phức tạp.
Hình ảnh firewall đã phát hiện dấu hiệu DOS/DDOS
Hình ảnh biến giới hạn thời gian truy vấn
3.11 Không mã hóa dữ liệu
Không mã hóa dữ liệu là hành vi rất nguy hiểm, đặc biệt trong môi trường mạng WLAN Các ứng dụng quản trị mạng mạnh mẽ như WireShark, Tcpdump và Nagios có khả năng dễ dàng bắt gói tin từ client đến server Mặc dù không thể ngăn chặn các ứng dụng này bắt gói tin, nhóm đã thực hiện mã hóa một số dữ liệu quan trọng để bảo vệ thông tin và tránh rò rỉ dữ liệu.
Hình ảnh dữ liệu được mã hóa
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Đặc quyền quá mức cho người dùng hoặc nhóm người dùng
Để hạn chế các đặc quyền của người dùng không phải quản trị viên, nhóm đã thực hiện:
- Tạo user public với các quyền bị hạn chế chỉ được thực thi các thủ tục (stored procedure) khi sử dụng schema sound.
Tạo người dùng với quyền quản trị kết nối từ web server đến data server, cho phép thực hiện một số lệnh và thủ tục trong schema sound.
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
Hình ảnh user quản trị web được cấp quyền hạn chế
Hình ảnh user không phải quản trị viên bị hạn chế rất nhiều
Hình ảnh user không phải quản trị viên không thể thực hiện select
Cho phép các tính năng không sử dụng trong DBMS
Tắt các tính năng không sử dụng trong hệ quản trị cơ sở dữ liệu là rất quan trọng và liên quan chặt chẽ đến việc phân quyền người dùng kết nối tới máy chủ dữ liệu Do đó, nhóm đã thực hiện phân quyền như đã nêu ở mục 3.7 để hạn chế các tính năng không cần thiết.
Leo thang đặc quyền
Lỗi leo thang đặc quyền thường xảy ra khi một thủ tục trong cơ sở dữ liệu cấp quyền cao hơn cho người dùng có đặc quyền thấp Để ngăn chặn tình trạng này, nhóm phát triển đã quyết định không thêm mã cấp quyền cho người dùng trong các thủ tục.
Hình ảnh một thủ tục không có mã cấp quyền.
Denial of Service
Tấn công từ chối dịch vụ (DDoS) là một trong những hình thức tấn công khó ngăn chặn kịp thời Tuy nhiên, nhóm đã triển khai một số biện pháp nhằm giảm thiểu thiệt hại và ngăn chặn hiệu quả loại tấn công này.
- Triển khai mô hình kết nối website qua firewall như đã đề cập ở trên.
- Không cho phép người dùng bên ngoài firewall trực tiếp kết nối tới cơ sở dữ liệu hay web server.
- Giới hạn thời gian với các câu lệnh truy vấn nhằm hạn chế các câu lệnh truy vấn phức tạp.
Hình ảnh firewall đã phát hiện dấu hiệu DOS/DDOS
Hình ảnh biến giới hạn thời gian truy vấn
Không mã hóa dữ liệu
Không mã hóa dữ liệu là hành vi rất nguy hiểm, đặc biệt trong môi trường mạng WLAN Các ứng dụng quản trị mạng mạnh mẽ như WireShark, Tcpdump và Nagios có khả năng dễ dàng bắt gói tin từ client đến server Mặc dù không thể ngăn chặn các ứng dụng này, nhóm đã thực hiện mã hóa một số dữ liệu quan trọng để bảo vệ thông tin khỏi bị lộ.
Hình ảnh dữ liệu được mã hóa
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
TỔNG KẾT
Trong quá trình thực hiện đồ án môn học, nhóm 12 nhận thức rằng những hạn chế về kinh nghiệm và kiến thức đã dẫn đến một số thiếu sót trong công việc Chúng tôi rất mong nhận được ý kiến đóng góp từ ThS Phan Nghĩa Hiệp và các độc giả để có thể cải thiện hơn nữa Dưới đây là phần đánh giá tổng kết đồ án của nhóm 12.
Nhóm đã đạt được nhiều thành tựu quan trọng, đặc biệt trong thiết kế và chương trình, đáp ứng đầy đủ các yêu cầu chức năng ban đầu Về mặt an toàn, nhóm đã triển khai 5 biện pháp bảo mật cho ứng dụng và máy chủ web, vượt mức tối thiểu 4 biện pháp, cùng với 7 biện pháp bảo mật cho cơ sở dữ liệu, vượt qua yêu cầu tối thiểu 5 biện pháp Những kết quả này không chỉ vượt qua kỳ vọng ban đầu mà còn giúp nhóm nâng cao hiểu biết về an toàn ứng dụng web, máy chủ web và cơ sở dữ liệu Những kiến thức quý giá này sẽ hỗ trợ các thành viên trong nhóm trong sự nghiệp tương lai.
Mặc dù nhóm đã đạt được một số thành tựu, nhưng vẫn tồn tại một số khiếm khuyết cần khắc phục Đầu tiên, do hạn chế về kiến thức, kinh nghiệm, thời gian và kinh phí, nhóm chỉ có thể thực hiện các cuộc tấn công đơn giản và áp dụng một phần nhỏ các biện pháp bảo mật cho ứng dụng web và máy chủ Thứ hai, mức độ tìm hiểu chưa sâu, khiến nhóm không thể đáp ứng nhu cầu ở mức độ truy cập lớn hơn Cuối cùng, chương trình xây dựng vẫn còn thiếu sót với một số chức năng chưa mang lại sự tiện lợi tối ưu cho người dùng, và nhóm chưa triển khai kết nối SSL/TLS, một biện pháp bảo mật hiệu quả cao.
Trong tương lai, nhóm sẽ phát triển nhiều tính năng tiện lợi và cải thiện giao diện để thân thiện hơn với người dùng Bên cạnh đó, việc tối ưu hóa xử lý dữ liệu sẽ được chú trọng để nâng cao hiệu quả trong truy vấn, quản lý và bảo trì trang web Nhóm cũng sẽ nghiên cứu hệ thống cân bằng tải load balancing nhằm tối ưu hóa việc truy cập đồng thời và thiết lập kết nối SSL/TLS an toàn hơn.
Trong quá trình thực hiện đồ án môn học dưới sự hướng dẫn của ThS Phan Nghĩa Hiệp, nhóm 12 đã thu nhận nhiều kiến thức quý giá và khám phá khả năng của từng thành viên Nhóm 12 xin gửi lời cảm ơn chân thành đến thầy!
[2] Bộ bài giảng môn Lập trình Ứng dụng Web của ThS Nguyễn Trung Hiếu
[3] Hoàng Xuân Dậu, “Bài giản An toàn Ứng dụng Web và CSDL”, Hà Nội, 2017
[4] Bryan Sullivan, Vincent Liu, “Web Application Security”, 2012
[5] David Kennedy, Jim O’Gorman, Devon Kearns, Mati Aharoni, “Metasploit The
[8] https://pentestlab.blog/2012/07/27/attacking-mysql-with-metasploit/
[9] https://irfaanshakeel.medium.com/mysql-pentesting-using-metasploit-framework- 7c800e6209d7
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu
BẢNG PHÂN CÔNG CÔNG VIỆC ST
T Mã sinh viên Họ tên Công việc cụ thể
Code website Tìm hiểu CSRF, tấn công cơ chế xác thực
Thiết kế database, cấu hình kết nối Tìm hiểu mật khẩu yếu, SQL Injection, leo thang đặc quyền, Denial of Service
Thiết kế giao diện website Tìm hiểu đặc quyền quá mức, các tính năng không sử dụng, mã hóa dữ liệu
Code website Tìm hiểu XSS, SQL Injection trên máy chủ web
Thiết kế mô hình kết nối, cấu hình kết nối
Tìm hiểu các lỗ hổng trong cấu hình máy chủ web
An toàn ứng dụn… 100% (8) 146 tham kh ả o gdqp h ọ c ph ầ n 1 - có s ẵ …
Recommended for you Đại học Sư phạm H…
Tlhgd - Tâm lý học giáo d ụ c tr ắ c… tâm lí học giáo dục None 15
CK N19DCAT074 Ta Duc Tien
An toàn ứng dụng web v… None 33
Dump Splunk Sale Rep 1 - ư edsfg