CƠ SỞ LÝ THUYẾT
Kiểm thử bảo mật (Security Testing)
1.1.1 Bảo mật (Security) là gì ?
Bảo mật là những biện pháp cần thiết để bảo vệ an toàn và giữ bí mật cho ứng dụng, nhằm ngăn chặn các hành động không lường trước có thể gây ảnh hưởng hoặc phá hủy ứng dụng Những hành động này có thể xảy ra một cách cố ý hoặc vô ý.
1.1.2 Kiểm thử bảo mật (Security Testing) là gì ?
Kiểm thử bảo mật là quá trình phát hiện các lỗ hổng và điểm yếu trong hệ thống, nhằm bảo vệ an toàn cho các ứng dụng và hệ thống trong tổ chức Mục tiêu của kiểm thử bảo mật là ngăn chặn rò rỉ thông tin và tổn thất về an ninh, đảm bảo rằng không có sơ hở nào có thể bị khai thác.
1.1.3 Quy trình của kiểm thử bảo mật
Có 4 bước chính trong quá trình kiểm thử bảo mật, quá trình này được lặp đi lặp lại nhiều lần.
Khái niệm về Penetration Testing
Penetration Testing (pentest) là phương pháp kiểm tra an ninh hệ thống công nghệ thông tin bằng cách mô phỏng các cuộc tấn công Pentest giúp đánh giá mức độ an toàn của hệ thống thông qua việc tấn công và xem xét các dịch vụ để phát hiện các lỗ hổng bảo mật tiềm ẩn hoặc dấu vết của các cuộc tấn công đã xảy ra.
Trang 2 thương Người thực hiện một thử nghiệm xâm nhập được gọi là người kiểm tra xâm nhập hoặc pentester
1.2.2 Khái niệm bảo mật cơ bản ?
Lỗ hổng bảo mật, hay còn gọi là vulnerabilities, là những điểm yếu trong phần mềm, phần cứng hoặc hệ điều hành, tạo cơ hội cho các cuộc tấn công vào hệ thống Những lỗ hổng này có thể đơn giản như việc sử dụng mật khẩu yếu, hoặc phức tạp hơn như lỗi tràn bộ đệm và các lỗ hổng SQL injection.
Kẻ tấn công có thể lợi dụng các lỗ hổng trong phần cứng, phần mềm hoặc chuỗi lệnh để thực hiện các hành vi không mong muốn trên hệ thống máy tính Những hành động này bao gồm leo thang đặc quyền, tấn công từ chối dịch vụ và đánh cắp thông tin nhạy cảm.
Mã khai thác (Payload) là các thành phần phần mềm giúp kiểm soát hệ thống máy tính sau khi khai thác thành công lỗ hổng bảo mật.
1.2.3 Các phương pháp kiểm thử trong Pentest
Tấn công từ ngoài vào (Black-box Pentest) là phương pháp kiểm tra an ninh mà không cần thông tin trước về hệ thống Các chuyên gia pentester sẽ nhập vai như những tin tặc mũ đen, nỗ lực thâm nhập vào mạng nội bộ và ngoại vi của khách hàng bằng mọi cách có thể.
Pentester sẽ thực hiện mô phỏng một cuộc tấn công thực sự vào ứng dụng, tập trung vào việc xác định các lỗ hổng bảo mật theo tiêu chuẩn của OWASP và WASC Quá trình thử nghiệm này nhằm phát hiện những lỗ hổng nguy hiểm tiềm tàng trong ứng dụng của khách hàng, đồng thời đánh giá thiệt hại khai thác có thể xảy ra và mức độ nghiêm trọng của chúng.
Tấn công từ trong ra (White-box Pentest) là phương pháp đánh giá an ninh mạng dựa trên thông tin về mạng nội bộ và ngoại được cung cấp bởi khách hàng Việc xác định rủi ro và mối đe dọa từ nhân viên, khách hàng hoặc đối tác thương mại là rất quan trọng, và thử nghiệm hộp trắng có thể giúp doanh nghiệp hiểu rõ hơn về các mối đe dọa này Nhân viên, khách hàng và đối tác thương mại thường nắm giữ nhiều thông tin quan trọng về doanh nghiệp, như việc tồn tại của Intranet hoặc Extranet, trang web, và có thể có thông tin đăng nhập vào hệ thống Những thông tin này có thể được lợi dụng để thực hiện các cuộc tấn công nhắm mục tiêu vào cơ sở hạ tầng của tổ chức, mà có thể không được phát hiện trong thử nghiệm Black Box.
Kiểm định hộp xám (Gray-box hay Crystal-box) giả định rằng tin tặc có thể tiếp cận hệ thống như một nhân viên doanh nghiệp thông qua tài khoản người dùng thông thường Phương pháp này cho phép đánh giá các lỗ hổng bảo mật từ góc độ nội bộ, giúp cải thiện khả năng phòng ngừa và phản ứng trước các mối đe dọa.
1.2.4 Tiêu chuẩn thực hiện Pentest Đánh giá ứng dụng web – OWASP (Open-source Web Application Security Project): OWASP là một chuẩn mở cho phép tổ chức/ doanh nghiệp tiến hành xây dựng, phát triển, duy trì hoạt động của các ứng dụng trên nền tảng web một cách bảo mật nhất Quá trình đánh giá dựa trên các tiêu chí đã được cộng đồng bảo mật xác nhận OWASP bao gồm 10 lỗ hổng được đánh giá một cách chi tiết và cập nhật thường xuyên với thực tế các nguy cơ mà một ứng dụng web thường gặp Đánh giá mạng và hệ thống – OSSTMM (Open Source Security Testing Methodology Manual): OSSTMM là một chuẩn mở cung cấp phương pháp kiểm tra bảo mật một hệ thống đang hoạt động của doanh nghiệp Từ phiên bản 3.0, OSSTMM đưa ra phương pháp kiểm định cho hầu hết các thành tố trong hệ thống như: con người, hạ tầng vật lý, mạng không dây, truyền thông và các mạng sử dụng truyền dữ liệu
QUY TRÌNH KIỂM THỬ
2.1.1 OSSTMM – Open Source Security Testing Methodology Manual
Open Source Security Testing Methodology Manual (OSSTMM) là một chuẩn mở cung cấp một phương pháp kiểm tra an ninh toàn diện cho một hệ thống mạng
Trong bối cảnh môi trường mạng ngày càng phức tạp với sự phát triển của các công nghệ như điều khiển thiết bị từ xa, ảo hóa và điện toán đám mây, việc đảm bảo an ninh mạng đã vượt ra ngoài các thử nghiệm đơn giản trên máy tính và máy chủ Phiên bản 3 của OSSTMM audit đã mở rộng phạm vi đánh giá, bao gồm các yếu tố con người, đường truyền vật lý, thiết bị không dây, thiết bị viễn thông và dữ liệu mạng, nhằm đáp ứng đầy đủ các thách thức an ninh hiện nay.
OSSTMM phù hợp với nhiều hình thức kiểm tra bảo mật như: đánh giá lỗ hổng, kiểm thử thâm nhập, kiểm thử hộp trắng,
Phương pháp đánh giá này được thực hiện triệt để và kết quả báo cáo đầy đủ, có định lượng và đáng tin cậy
OSSTMM áp dụng phương pháp RAV (Risk Assessment Values) để xác định mức độ rủi ro Dựa vào các hoạt động an ninh, việc kiểm soát rủi ro và các giới hạn, RAV có khả năng tính toán giá trị bảo mật thực tế Điểm số RAV phản ánh trạng thái an ninh hiện tại của đối tượng.
Mặt khác, những báo cáo của OSSTMM được trình bày dưới dạng STAR nên đội ngũ quản lý dễ dàng phân tích, đánh giá hệ thống
Quy trình kiểm thử của OSSTMM dễ dàng phù hợp với những quy định của các ngành công nghiệp, ngành kinh doanh và pháp luật, chính phủ
2.1.2 OWASP – Open Web Application Security Project
The Open Web Application Security Project (OWASP) is a community-driven initiative aimed at enhancing application security awareness within organizations.
Tổ chức phòng thủ cho các thiết bị mạng không chỉ ngăn chặn mã độc xâm nhập mà còn ngăn cản truy cập trái phép vào hệ thống Tuy nhiên, các ứng dụng web vẫn có thể bị tấn công trước khi hệ thống bị xâm phạm Do đó, việc kiểm tra và đánh giá các nguy cơ bảo mật trên ứng dụng là cần thiết OWASP được thiết lập với mục tiêu này.
The Open Web Application Security Project (OWASP) is a nonprofit organization that has established the OWASP standards to facilitate effective and detailed penetration testing.
Cung cấp các công cụ và tiêu chuẩn hàng đầu thế giới về An Toàn Thông Tin, cùng với các thư viện và quy định cần thiết để kiểm soát và quản lý an ninh thông tin hiệu quả.
Cung cấp những tài liệu hàng đầu về bảo mật ứng dụng, pentest, kiểm tra mã nguồn và lập trình một cách an toàn nhất.
Tiêu chuẩn đánh giá an ninh mạng OWASP cung cấp các kỹ thuật đánh giá chi tiết, giúp pentester tiết kiệm thời gian và thực hiện kiểm tra một cách hiệu quả.
OWASP hỗ trợ các công cụ kiểm thử cho webapp tự động như: WebScarab, Wapiti, JbroFuzz, SQLiX
Ngoài tiêu chuẩn pentest OWASP còn có tiêu chuẩn đánh giá mạng và hệ thống OSSTTM, NIST…
Configuration and Deployment Management Testing
2.1.3 ISSAF – Information Systems Security Assessment Framework
ISSAF là một khung được cung cấp bởi Nhóm bảo mật hệ thống thông tin mở (OISSG), một tổ chức phi lợi nhuận có trụ sở tại London
Khi pentesting phát triển, các công ty cần nhận thức rõ về các dịch vụ cần thiết, tài sản dễ bị tổn thương và các mối đe dọa tiềm ẩn Việc này đòi hỏi cả người quản lý và khách hàng của pentesters phải hiểu rõ để đáp ứng hiệu quả nhu cầu của khách hàng.
Phương pháp kiểm thử xâm nhập ISSAF đánh giá an ninh của các thành phần mạng, hệ thống và ứng dụng, tập trung vào các công nghệ như thiết bị định tuyến, chuyển mạch, tường lửa, hệ thống phát hiện và phòng thủ xâm nhập, mạng riêng ảo, máy chủ ứng dụng web và cơ sở dữ liệu.
ISSAF được biết đến như một nguồn tài nguyên quý giá cho việc đánh giá các kiểm soát bảo mật hiện tại và kết nối các nhiệm vụ liên quan Đối với những pentester mới, ISSAF là một kho tàng thông tin hữu ích Tuy nhiên, các pentester đã qua đào tạo nên xem xét chuyển sang OSSTMM hoặc các phương pháp kiểm tra khác để tận dụng tối đa lợi ích từ mỗi phương pháp.
- Mô hình kiểm thử được tham khảo theo mô hình OWASP (Open Web Application Security Protocol)
CONFIGURATION AND DEPLOYMENT MANAGEMENT TESTING
Thu thập bằng công cụ tìm kiếm _ URL trang web, địa chỉ ip, domain, server, DNS
Kiểm thử máy chủ web _ Kiểm thử HTTP version, server, Framework
Kiểm thử file Robots.txt _ Khai thác những URL nhạy cảm được ẩn đi
Kiểm thử các ứng dụng trên máy chủ web _ Kiểm thử port đang mở, hosting, DNS server, Reverse- IP
Kiểm thử HTTP Header _ Kiểm thử HTTP request - response
Kiểm thử tài nguyên trang web
_ Kiểm thư danh sách các trang web, file mở rộng Kiểm thử các Framework _ Kiểm thử cookies, source code
(kiểm thử cấu hình và quản lý)
Kiểm thử cấu hình mạng/ cơ sở hạ tầng _ Kiểm thử địa chỉ ip, port đang mở, lỗ hổng có thể bị tấn công
Kiểm thử cấu hình nền tảng ứng dụng _ Kiểm thử những lỗi trong máy chủ Kiểm thử xữ lý phần mở rộng _ Kiểm thử file Robots.txt
Kiểm thử các phương thức HTTP
_ Kiểm thử những phương thức HTTP được hỗ trợ
Kiểm thử HSTS _ Kiểm thử HTTP Strict
Kiểm thử chính sách tên miền _ Kiểm thử file crossdomain.xml
(kiểm thử quản lý nhận dạng)
Kiểm thử quy trình đăng ký người dùng _Kiểm thử quy trình đăng ký là thủ công hay tự động.
_Nếu thủ công có thể bỏ qua bước này.
_Nếu tự động kiểm tra các thông tin được yêu cầu dùng để đăng ký.
Kiểm thử khả năng liệt kê tài khoản và đoán tài khoản yếu
_ Kiểm thử khả năng đoán tài khoản yếu.
_ Kiểm thử chính sách đặt tên tài khoản.
_Cơ chế sử dụng thông tin đăng nhập (email,sdt ).
_ Kiểm thử khả năng liệt kê tên tài khoản tồn tại.
_Xem phản hồi của website với tên tài khoản hợp lệ và tên tài khoản không hợp lệ.
Kiểm thử đường truyền thông tin đăng nhập bao gồm việc xác định phương thức truyền tin, liệu là GET hay POST, và kiểm tra xem đường truyền có được mã hóa bằng HTTPS hay không, nhằm đảm bảo an toàn cho dữ liệu người dùng.
Kiểm thử mật khẩu của tài khoản được tạo mới _ Mật khẩu được cấp từ
+ Hệ thống tự động + Quản trị viên + Người dùng
Kiểm thử cơ chế khóa tài khoản vi phạm _ Kiểm thử số lần đăng nhập thất bại tối đa.
_ Kiểm thử cơ chế xử phạt.
_ Kiểm thử cơ chế mở khóa tài khoản.
Kiểm thử độ an toàn khi tài khoản được lưu trong browser _ Kiểm thử thông tin đăng nhập có chứa trong cookie không.
_ Kiểm tra hàm mã hóa.
_ Kiểm thử các request có chứa thông tin đăng nhập.
Kiểm thử vùng nhớ đệm của browser
_ Kiểm thử website có yêu cầu browser không lưu trữ các trang có chứa thông tin nhạy cảm không?
_ Yêu cầu đăng nhập lại đối với các trang chứa thông tin nhạy cảm.
Kiểm tra chính sách đặt mật khẩu _ Kiểm thử các thông tin nào được phép và không được phép để đặt làm mật khẩu.
_ Người dùng bắt buộc sử dụng các dạng ký tự nào trong mật khẩu
Kiểm tra câu hỏi và câu trả lời bí mật của người dùng _ Kiểm thử độ phức tập của câu hỏi bí mật và câu trả lời bí mật.
_ Câu hỏi và câu trả lời do ai cung cấp ?
Kiểm thử tham số truyền tải thư mục _Kiểm thử những tham số có trong URL trang web
Kiểm thử vượt phân quyền _Kiểm thử những trang có thể vượt phân quyền _Kiểm tra cookies
Kiểm thử leo thang phân quyền _Kiểm thử URL của trang web
(kiểm thử phiên quản lý)
Kiểm thử các thuộc tính của cookies
_ Secure attributes _ HTTPonly attributes _ Domain attributes _ Path attributes _ Expires attributes
Kiểm thử cookies xác thực _ Kiểm thử cơ chế phát sinh cookie.
_ Kiểm thử cookie trước khi đăng nhập và sau khi đăng nhập.
Kiểm thử chức năng đăng xuất và hạn sử dụng của session
_ Kiểm thử cookie sau khi đăng xuất.
+ Cookie còn hiệu lực không?
+ Có thuận lợi cho người dùng sử dụng không ? + Cookie có được tạo mới không ?
+ Cookie cũ có thể sử dụng lại không?
_ Kiểm thử hạn sử dụng của session.
+ Hạn sử dụng của session ?+ Hạn sử dụng của session khi không có tương tác ?
(kiểm thử giá trị đầu vào)
Kiểm thử Cross Site Scripting
_ Kiểm thử các tham số hoặc các lỗ hổng các thể chèn XSS
Kiểm thử SQL Injection _ Kiểm thử lỗ hổng SQL injection
Kiểm thử LDAP Injection _ Kiểm thử lỗ hổng LDAP
Kiểm thử XML Injection _ Kiểm thử lỗ hổng XML
(kiểm thử xử lý lỗi)
Kiểm thử trang thông báo lỗi là một phần quan trọng trong quy trình phát triển phần mềm, giúp xác định các mục cần kiểm tra để đảm bảo tính chính xác và hiệu quả của thông báo lỗi Kiểm thử xử lý lỗi trực tiếp cần được thực hiện trong nhiều trường hợp khác nhau để đảm bảo rằng hệ thống có thể xử lý các tình huống lỗi một cách chính xác và nhanh chóng.
THỰC NGHIỆM WEB PENTEST
Giới thiệu đối tượng Pentest
3.1.1 Thông tin chung: Đối tượng penetration testing là trang web: http://daotao.huflit.edu.vn
Trong domain có phần hậu tố là “edu.vn” người kiểm tra có thể thấy đây là trang web thuộc về giáo dục và đào tạo
Trang web này là cổng thông tin đào tạo chính thức của Trường Đại học Dân lập Ngoại ngữ - Tin học TP.Hồ Chí Minh, tọa lạc tại 155 Sư Vạn Hạnh, phường 13, quận 10, TP Hồ Chí Minh.
Trang web chủ yếu phục vụ sinh viên bằng cách cung cấp các chức năng như đăng ký môn học, tra cứu thời khóa biểu, thông tin học phí, lịch thi và điểm thi.
Tên miền huflit.edu.vn được đăng ký vào ngày 18/07/2003 và sẽ hết hạn vào ngày 18/07/2024 Trong hệ thống tên miền này, có các subdomain như daotao.huflit.edu.vn (cổng thông tin đào tạo), fit.huflit.edu.vn (trang web của khoa Công nghệ Thông tin) và lib.huflit.edu.vn (trang web quản lý thư viện).
Thực nghiệm
Là quá trình kiểm nghiệm thực tế các lý thuyết được công bố trong mô hình kiểm thử
3.2.1.1 Kiểm tra bằng công cụ tìm kiếm
Sử dụng công cụ tìm kiếm online
Trang web daotao.huflit.edu.vn là cổng thông tin chính thức của trường Đại học Ngoại Ngữ - Tin Học Thành phố Hồ Chí Minh Website này được thiết kế nhằm phục vụ sinh viên trong việc đăng ký môn học, tra cứu thời khóa biểu và thông tin học phí.
Thông tin trang web o Trang web http://daotao.huflit.edu.vn là 1 subdomain của trang http://huflit.edu.vn chung với những trang khác như
http://fit.huflit.edu.vn
The HUFLIT Library, established on July 18, 2003, is set to expire on July 18, 2024, and is registered under PA Vietnam Co., Ltd The library's website utilizes DNS servers reverse2.digipower.net.vn and reverse1.digipower.net.vn, with a reverse DNS of mx5157.digipower.com.vn Online Data Service is the internet service provider for the library.
3.2.1.2 Kiểm thử máy chủ web
- Công nghệ trang web đang sử dụng: o Hệ điều hành: Windows server o Web Framework: ASP.NET version 2.0
Trang 19 o Server: Microsoft – IIS/8.5 o Thư viện Javascript: jQuery 2.2.3 o HTTP version: HTTP/1.1
Rủi ro: Kẻ tấn công có thể sử dụng những thông tin này để thực hiện những cuộc tấn công đến trang web
3.2.1.3 Kiểm thử ứng dụng trên máy chủ web
Kiểm thử file robots.txt o File robots.txt là file cho phép và ngăn chặn quyền truy cập của các bot tìm kiếm vào trong trang web
Kiểm thử các port đang sử dụng Nmap -sS daotao.huflit.edu.vn
Trang web sử dụng những cổng 80 (HTTP), cổng 1433 (MS SQL Server),…
Trang web sử dụng cơ sở dữ liệu SQL Server 2014 trên cổng 1433
3.2.1.4 Kiểm thử HTTP Request – Response
HTTP header truyền tải những thông tin như: trình duyệt người dùng, kiểu nội dung, cookies và được trả về công nghệ máy chủ đang sử dụng
3.2.1.5 Kiểm thử tài nguyên trang web
Tìm những trang web con trong trang web
Việc người kiểm thử map các đường dẫn con của trang web giúp cho việc quản lý một cách bao quát hơn không bỏ sót
Trang web sử dụng cookies do máy chủ cung cấp, phát sinh tự động và không chứa thông tin người dùng
Kiểm thử thư mục mở rộng
Phần mở rộng trên URL giúp cho người kiểm thử biết được nền tảng và công nghệ đang sử dụng VD: *.aspx => Microsoft ASP.NET
Trang web sử dụng tham số “page” để gọi những trang cần thiết khi người dùng yêu cầu
3.2.2 Kiểm thử cấu hình và quản lý
3.2.2.1 Kiểm thử cấu hình mạng / cơ sở hạ tầng
Kiểm thử địa chỉ ip trang web, nslookup
Kiểm thử các cổng (port) đang mở
Kiểm thử các lỗ hổng có thể bị tấn công
Kiểm thử địa chỉ ip trang web, nslookup
Trang web có địa chỉ ip là: 112.78.5.157
Nslookup đến trang web kiểm tra việc trả về địa chỉ ip sau khi phân giải tên miền
Kiểm thử các cổng (port) đang mở Nmap –sS daotao.huflit.edu.vn
Kiểm thử các port trang web đang sử dụng nhằm để biết, tối ưu và ngăn chặn những truy cập trái phép từ những port đó
Kiểm thử các lỗ hổng có thể bị tấn công o Kiểm thử HTTP response
Trang web chưa được cấu hình những bảo mật HTTP header: X-Frame-Options (bảo vệ trước các cuộc tấn công Clickjacking), X-XSS-Protection (giảm bớt các
Trang 25 cuộc tấn công XSS), X-Content-Type-Options (ngăn chặn các cuộc tấn công lừa đảo hoặc XSS)
Trang web mở những port thông dụng như port 80, 8081 (HTTP), port 1433 (MS-SQL-S),…
Trang web sử dụng những công nghệ web phổ biến như server (IIS 8.5), hệ điều hành (Windows Server), web framework (ASP.NET),…
Trang web chưa cấu hình bảo mật HTTP header
3.2.2.2 Kiểm thử cấu hình nền tảng ứng dụng
Kiểm thử các lỗi trong máy chủ
Máy chủ web không có những lỗi về phía máy chủ
3.2.2.3 Kiểm thử xử lý phần mở rộng
Kiểm thử file robots.txt
Kiểm thử file robots.txt o Kiểm thử file: http://daotao.huflit.edu.vn/robots.txt
Trang web không sử dụng file robots
Trang web có các dạng file như: *.js, *.aspx, *.htm, *.axd, *.ashx
3.2.2.4 Kiểm thử giao diện quản trị
Kiểm thử giao diện quản trị viên
Trang web được thiết kế bởi công ty phần mềm Anh Quân
Giao diện đăng nhập thành viên trên trang web
Giao diện quản lý bằng WinForm
Sơ đồ lấy dữ liệu của trang web
Dữ liệu được quản lý thông qua giao diện Windows Form, và khi quản trị viên đăng nhập, người kiểm tra không thể truy cập vào giao diện đăng nhập trên trang web.
3.2.2.5 Kiểm thử các phương thức HTTP
Kiểm tra phương thức HTTP trang web hỗ trợ
Nmap –p 80 script http-methods daotao.huflit.edu.vn
Các phương thức HTTP được hỗ trợ o Phương thức GET
Sử dụng phương thức GET để truyển dữ liệu giá trị là trang giới thiệu
“page=gioithieu” lên máy chủ
Phương thức GET o Phương thức POST
Sử dụng phương thức POST để truyền dữ liệu như thông tin đăng nhập người dủng lên máy chủ
Trang web sử dung phương thức POST để truyền thông tin đăng nhập lên server
Kiểm thử HTTP response o HSTS là cụm từ viết tắt của HTTP Strict Transport Security
Nó là bảo mật nâng cao giúp chuyển hướng tất cả các truy cập trên website từ HTTP sang HTTPS
Khi trang web có sử dụng HSTS trong HTTP header sẽ trả lại dòng lệnh như sau:
Trang web không sử dụng HSTS 3.2.2.7 Kiểm thử chính sách tên miền
Kiểm thử file crossdomain.xml
Trang web không sử dụng chính sách tên miền chéo
Quy trình kiểm thử Đánh giá Nội dung Yêu cầu
Kiểm thử cấu hình mạng – cơ sở hạ tầng
Không đạt Kiểm thử những cấu hình của trang web như: ip, nslookup, port, các công nghệ web, http header
- Trang web cần cấu hình những bảo mật http header
- Cần hạn chế đưa ra những thông tin nền tảng ứng dụng web
Kiểm thử cầu hình nền tảng ứng dụng Đạt Kiểm thử những lỗi thuộc về phía máy chủ
Kiểm thử file mở rộng Đạt Kiểm thử xử lý những phần mở rộng của trang web ( file aspx, js, doc, pdf, ashx,…)
Kiểm thử giao diện đăng nhập và trang quản trị Đạt Kiểm thử giao diện đăng nhập và quản trị của quản trị viên
Kiểm thử các phương thức của HTTP Đạt Kiểm thử các phương thức truyền thông tin lên server của trang web
Kiểm thử chuyển hướng bảo mật HTTP
Không đạt Kiểm thử chứng chỉ bảo mật của trang web
Cần cấu hình giao thức bảo mật, HSTS
Kiểm thử chính sách tên miền Đạt Trang web không cấu hình chính sách tên miền chéo
3.2.3 Kiểm thử quản lý nhận dạng
3.2.3.1 Kiểm thử quá trình đăng ký tài khoản người dùng
Kiểm thử tài khoản người dùng được cấp từ quản trị viên hay do người dùng tự tạo
Nếu là thủ công do quản trị viên cấp có thể bỏ qua bước này
Nếu do người dùng tự tạo, cần kiểm tra các thông số được yêu cầu để tạo tài khoản
Tài khoản người dùng của sinh viên do quản trị viên cấp thủ công
Quy trình kiểm thử này không cần thiết cho website
Kiểm thử website có quy trình tạo tài khoản yếu
Ví dụ: trang web https://nhattao.com
Form đăng ký tài khoản
Cho phép đăng ký với mật khẩu yếu
Website sử dụng email, số điện thoại, tên để làm thông tin đăng nhập Trong đó
“Tên” không có chính sách an toàn, không được yêu cầu độ phức tạp
Mật khẩu do người dùng tự do nhập, không có ràng buộc về độ phức tạp
Tài khoản mới có mật khẩu yếu sẽ dễ bị tấn công brute-force.
Cần có chính sách yêu cầu người dùng sử dụng mật khẩu kết hợp các ký tự thường, ký tự hoa, ký tự số và đặt biệt
Quy định số lượng ký tự tối thiểu ít nhất là 8
Không sử dụng “tên” hoặc nickname công khai làm thông tin đăng nhập
3.2.3.2 Kiểm thử tên tài khoản
Kiểm thử chính sách đặt tên tài khoản
Kiểm thử khả năng liệt kê tài khoản tồn tại trong cơ sở dữ liệu.
Kiểm thử khả năng đoán tên tài khoản
Website áp dụng chính sách đặt tên tài khoản dựa trên thông tin sinh viên, bao gồm năm nhập học, bậc học và mã số khoa tương ứng.
Trang 34 o VD: 15DH110109 o 15 là năm nhập học o DH là bậc đại học o 110109 là mã số
Kiểm thử khả năng tồn tại của tài khoản o Sử dụng chức năng đăng nhập với các yêu cầu sau và xem xét phản hồi từ máy chủ:
Sai tài khoản và mật khẩu
Đúng tài khoản, sai mật khẩu
Sai tài khoản, đúng mật khẩu
Lỗi trả về sau khi đăng nhập sai
Tất cả các trường hơp đều trả về kết quả “Sai thông tin đăng nhập” o Sử dụng chức năng quên mật khẩu
Thông báo tài khoản nào không đúng (không tồn tại)
Kiểm thử đoán tên tài khoản không thể thực hiện thành công đối với một đối tượng cụ thể, vì mã số được cấp phát cho đối tượng đó là ngẫu nhiên và không liên quan đến bất kỳ thông tin cá nhân nào của họ.
Không thể kiểm tra sự tồn tại của tài khoản bằng chức năng đăng nhập
Có thể kiểm tra sự tồn tại của tài khoản bằng chức năng quên mật khẩu
Có thể tạo một danh sách các tài khoản có khả năng được sử dụng dựa vào chính sách đặt tên tài khoản của website
Kiểm thử website có thể đoán được sự tồn tại của tài khoản bằng chức năng đăng nhập
Ví dụ: trang web https://nhattao.com
Đối với tài khoản đúng, máy chủ web sẽ trả về thông báo “ Nhập sai mật khẩu Vui lòng thử lại”
Đối với tài khoản sai, máy chủ trả về thông báo tài khoản không tồn tại
Người kiểm thử có thể xác định tài khoản tồn tại trong cơ sở dữ liệu của máy chủ thông qua việc đọc thông báo mà máy chủ trả về.
Quy trình kiểm thử Đánh giá Nội dung Yêu cầu
Kiểm thử quá trình đăng ký tài khoản thông tin người dùng
Trang web không có chức năng tự tạo tài khoản
- Tài khoản được cấp bởi quản trị viên
Kiểm thử tên tài khoản Đạt - Không thể đoán tài khoản của từng đối tượng cụ thể
- Có thể kiểm tra sự tồn tại của tài khoản bất kì bằng chức năng quên mật khẩu
3.2.4.1 Kiểm thử đường truyền xác thực
Website sử dụng đường truyền thông tin là HTTP hay HTTPS
Website sử dụng phương thức truyền tin GET hay POST
Xem thông tin header của gói tin yêu cầu đăng nhập được gửi lên server
Đường truyền sử dụng là HTTP và phương thức truyền thông tin là POST
Thông tin đăng nhập chứa trong gói tin có dạng như sau:
Vì đường truyền là HTTP nên thông tin được truyền đi sẽ không được mã hóa
Hacker có thể dễ dàng bắt gói tin và đọc được thông tin đăng nhập một cách dễ dàng
Trang web nên sử dụng đường truyền HTTPS cho việc đăng nhập tài khoản.
3.2.4.2 Kiểm thử thông tin đăng nhập mặc định
Kiểm thử mật khẩu của tài khoản được tạo mới
Mật khẩu được cấp từ hệ thống tự động, quản trị viên hay người dùng tự nhập
Thông tin đăng nhập của sinh viên được quản trị viên tạo và gửi cho từng sinh viên
Tài khoản chỉ có thể được tạo bởi quản trị viên website
Người dùng ngoài không thể tự ý tạo tài khoản
3.2.4.3 Kiểm thử cơ chế xử phạt với tài khoản đăng nhập sai liên tiếp
Kiểm thử việc sử phạt đối với tài khoản đăng nhập thất bại nhiều lần
Sử dụng 1 tài khoản có tồn tại và mật khẩu sai đăng nhập nhiều lần
Tài khoản không bị khóa sau nhiều lần đăng nhập sai
Website không có cơ chế khóa tài khoản
Website không có quy định số lần đăng nhập sai
Website cần có chính sách sử phạt đối với tài khoản thực hiện đăng nhập thất bại nhiều lần
Yêu cầu về vi phạm: o Số lần đăng nhập thất bại là bao nhiêu?
Cách thức khóa và mở khóa tài khoản o Khóa tài khoản và tự động mở lại sau 1 khoản thời gian
Trang 39 o Khóa tài khoản và yêu cầu người dùng liên hệ với quản trị viên để mở lại o Khóa địa chỉ IP gửi yêu cầu và tự động mở sau 1 khoản thời gian o Thời gian tự động mở khóa sau khi vi phạm?
3.2.4.4 Kiểm thử các lỗ hổng bypass
Trang web không tồn tại các lỗ hổng bypass
3.2.4.5 Kiểm thử cookies được lưu trong trình duyệt web
Mật khẩu có được lưu trong cookie không? Mật khẩu nếu được lưu có mã hóa không?
Kiểm thử hàm mã hóa
Thông tin đăng nhập chỉ được gửi khi đăng nhập, không gửi cùng các request khác của browser
Cookies trước khi đăng nhập
Cookies sau khi đăng nhập
Cookies không chứa thông tin đăng nhập người dùng
3.2.4.6 Kiềm tra bộ nhớ cache của browser
Kiểm thử bộ nhớ cache có thể lưu trữ thông tin nhạy cảm ngay cả sau khi người dùng đã đăng xuất Để đảm bảo an toàn, người dùng cần phải đăng nhập lại nếu muốn truy cập vào các trang chứa thông tin nhạy cảm.
Kiểm thử máy chủ có yêu cầu browser không lưu trữ dữ liệu của trang chứa thông tin nhạy cảm không?
Sau khi đăng nhập thành công, chúng ta thực hiện mở các mục chứa thông tin nhạy cảm như thông tin cá nhân, lý lịch…
Tiếp đến, thực hiện hành động thoát tài khoản và sử dụng nút
“back” để trở về các trang chứa thông tin nhạy cảm
Có thể sử dụng nút “Back” để xem các thông tin mà người dùng đã xem với quyền của người đó Dù họ đã đăng xuất
Thiết lập cho server yêu cầu browser không được phép lưu các trang có chứa thông tin nhạy cảm.
Yêu cầu người dùng đăng nhập lại nếu muốn truy cập vào trang chứa thông tin nhạy cảm.
3.2.4.7 Kiểm thử chính sách đặt mật khẩu
Kiểm thử website có yêu cầu độ phức tạp cho mật khẩu không?
Để kiểm thử, ta sử dụng chức năng thay đổi mật khẩu để kiểm thử
Thông tin yêu cầu gồm mật khẩu cũ và mật khẩu mới
Ta sẽ nhập mật khẩu mới với 1 ký tự
Mật khẩu mới được chấp nhận
Website không có chính sách đặt mật khẩu an toàn
Người dùng có thể dễ dàng đặt mật khẩu theo ý mình và không an toàn
Cần có chính sách quy định mật khẩu đối với các tài khoản
Mật khẩu yêu cầu sử dụng các ký tự thường, hóa, số và đặt biệt để tăng tính bảo mật cho mật khẩu
Quy định độ dài tối thiểu của mật khẩu là 8.
3.2.4.8 Kiểm thử câu hỏi và câu trả lời bí mật của người dùng
Dạng câu hỏi là có sẵn hay do người dùng tự thêm vào?
Dạng câu trả lời là có sẵn hay do người dùng tự thêm vào?
Website không sử dụng chức năng này.
3.2.4.9 Kiểm thử chức năng lấy lại mật khẩu
Chức năng là tự động hay do quản trị viên thực hiện
Có gửi yêu cầu xác nhận trước khi thực hiện quy trình này không?
Cần xác minh thông tin mật khi lấy lại mật khẩu
Phương thức nhận mật khẩu mới
Quy trình lấy lại mật khảu an toàn
Quy trình kiểm thử Đánh giá Nội dung Yêu cầu
Kiểm thử đường truyền xác thực
Không đạt - Sử dụng đường truyền
- Sử dụng đường truyền được mã hóa HTTPS
Quá trình tạo mới tài khoản Đạt - Tài khoản được cấp bởi admin website
Cơ chế xử phạt Không đạt - Không có cơ chế sử phạt đối với tài khoản đăng nhập sai nhiều lần liên tục
- Thêm cơ chế khóa tài khoản
- Quy định số lần đăng nhập sai cho phép
Lỗi bypass Đạt - Không tìm thấy lỗ hổng bypass
Kiểm thử cookie được lưu trong trình duyệt web Đạt - Website không lưu thông tin đăng nhập trong cookie
Bộ nhớ cache của browser
Không đạt - Browser vẫn lưu trang chứa thông tin cá nhân mà người dùng đã xem trước đó với quyền của họ, dù người dùng đã đăng xuất
- Máy chủ web phải có lệnh yêu cầu không lưu trang chứa thông tin cá nhân của người dùng Độ phức tạp của mật khẩu
Không đạt - Người dùng có thể sử dụng mật khẩu yếu như:
- Thêm chức năng mật khẩu phức tạp
- Quy định độ dài mật khẩu.(>=8 ký tự)
- Mật khẩu phải sử dụng ký tự thường, hoa, số và ký tự đặt biệt
Kiểm thử câu hỏi và câu trả lời bí mật
Chức năng lấy lại mật khẩu Đạt - Người dùng sử dụng email đã cung cấp cho hệ thống để nhận password
3.2.5.1 Kiểm thử các tham số truyền tải
Kiểm thử các tham số
Kiểm thử các tham số
Truyền vào những đường dẫn vào trang chứa file luu thông tin người dùng
Trang web không thể truyền những đường dẫn nhạy cảm để truy cập vào máy chủ
3.2.5.2 Kiểm thử vượt phân quyền
Kiểm thử những trang web có thể vượt phân quyền
Kiểm thử những trang web có thể vượt phân quyền
Tên file Quá trình Nội dung file Đánh giá
Page=thaydoittcn Không thể truy cập Form thay đồi thông tin người dùng
Yêu cầu có tài khoản
Page=dkmonhoc Không thể truy cập Form chức năng của trang web
Yêu cầu có tài khoản
Trang web được phân quyền những trang quan trọng
Cookies trước khi đăng nhập
Cookies sau khi đăng nhập
Cookies của trang web là 1 chuỗi tự phát sinh và cũng là session (phiên làm việc) của trang web
Cookies của trang web có chứa thông tin tài khoản của người dùng và không được tự động làm mới sau khi đăng nhập
Người tấn công có thể bắt cookies bằng những phần mềm bắt gói tin như Wireshark và dùng cookies để vượt phân quyền lên cao hơn
Trang web có những trang web được phân quyển rõ ràng
Cookies của trang web không chứa những thông tin người dùng
3.2.5.3 Kiểm thử leo thang phân quyền
Kiểm tra URL của trang web
Kiểm tra URL của trang web sau khi đăng nhập
Trang web không chứa thông tin người dùng trên thanh URL của trang web không thể leo thang phân quyền
Trang web không thể leo thang phân quyền
Quy trình kiểm thử Đánh giá Nội dung Yêu cầu
Traversal Đạt Kiểm thử lỗ hổng đường dẫn đến những thư mục quan trọng trên máy chủ
Cần hạn chế đưa ra những tham số trên URL
Kiểm thử vượt phân quyền xác thực Đạt Kiểm thử những trang web, tham số thể vượt quyền
Kiểm thử leo thang phân quyền Đạt Trang web không lộ những thông tin ở những nơi nhạy cảm
3.2.6 Kiểm thử quản lý phiên
3.2.6.1 Kiểm thử các thuộc tính của cookie
Secure attributes: thuộc tính bảo mật
HttpOnly attributes: không sử dụng được lệnh Document.cookie
Domain attributes: tên miền máy chủ nhận cookies
Path attributes: đường đẫn đến nơi cookies có hiệu lực
Expires attributes: hạn sử dụng của cookie
Thuộc tính secure không được set
Path: không được cấu hình chặt chẽ
Expiration: không có giới hạn thời gian
Đường truyền thông tin không đảm bảo an toàn do thông tin không được mã hóa
Đường đẫn là thư mục gốc “/” nên các ứng dụng kém bảo mật trên cùng 1 máy chủ dễ bị tấn công
Thời gian hết hạng của cookies không được set, cookies sẽ được lưu trên trình duyệt web vô thời hạn
Cần cấu hình Secure để mã hóa đường truyền thông tin
Cấu hình đường dẫn tới nơi chứa dịch vụ đang cung cấp
Quy định thời gian để cookies tự động xóa trên trình duyệt web
3.2.6.2 Kiểm thử cookies xác thực của người dùng
Kiểm thử nguồn gốc của cookies xác thực người dùng
Khi người dùng truy cập vào website, họ sẽ nhận được một cookie Sau đó, khi thực hiện đăng nhập, trình duyệt sẽ gửi thông tin đăng nhập cùng với cookie này đến máy chủ web.
Máy chủ web không thiết lập cookie mới cho người dùng, dẫn đến việc cookie được gửi kèm với thông tin đăng nhập là cookie xác nhận người dùng.
Người dùng có thể lấy cookie đó để truy cập vào website
Cookies xác thực người dùng không đảm bảo an toàn
Hacker có thể lợi dụng cookies đã biết để yêu cầu người dùng bình thường đăng nhập Sau khi người dùng thành công đăng nhập, hacker sẽ sử dụng cookies đó để truy cập vào tài khoản của họ.
Máy chủ cần phát sinh 1 cookies mới làm cookies xác thực người dùng khi người dùng đăng nhập thành công.
3.2.6.3 Kiểm thử cơ chế phát sinh cookies
Kiểm thử cơ chế phát sinh cookie tương ứng với các chức năng yêu cầu sử dụng cookie
Đường truyền cookie phải được mã hóa
Request từ máy client tới máy chủ là POST
Tự tạo một cookie mới “123456789123456789123456”
Sử dụng cookie này với chức năng đăng nhập
Kết quả, đăng nhập thành công vào hệ thống với cookie tự tạo
Cơ chế phát sinh cookie không hiệu quả
Website không có cơ chế kiểm thử cookie khi thực hiện chức năng đăng nhập
Website phải có cơ chế kiểm thử cookie khi thực hiện chức năng đăng nhập và các chức năng khác nếu có.
Kiểm thử giao diện đăng xuất có thuận tiện cho người dùng dễ dàng sử dụng không ?
Kiểm thử chức năng chấm dứt session khi thực hiện đăng xuất
Thời gian tự động chấm dứt session khi không có hoạt động trên website
Kiểm thử cookie có được tạo mới sau khi đăng xuất không?
Cookie đã được sử dụng có thể sử dụng lại không?
Sau khi thực hiện đăng xuất, session không còn chức năng truy cập quyền của người dùng
Sau khi đăng xuất cookie vẫn có thể được sử dụng lại để đăng nhập tiếp
Hạn sử dụng session là 5 phút
Cookie không được thay đổi sau khi đăng xuất
Website không có chức năng tạo mới cookies sau khi đăng xuất
Website không có chức năng vô hiệu hóa cookie đã được sử dụng
Cần có chức năng vô hiệu các cookie đã được sử dụng để hạng chế hacker có thể sử dụng lại cookies đó
Thêm cơ chế tự động phát sinh cookies mới sau khi đăng xuất
Quy trình kiểm thử Đánh giá Nội dung Yêu cầu
Thuộc tính cookie Không đạt - Thuộc tính secure không được set
- Thuộc tính path chưa được cấu hình chặt chẻ
- Thuộc tính path cần được cấu hình cụ thể để đảm bảo an toàn cho các ứng dụng cùng chung 1 server
Cookie xác thực người dùng
Không đạt - Máy chủ web sử dụng cookie do người dùng cung cấp
- Không có cơ chế phát sinh cookie mới khi người dùng đăng nhập thành công
- Thiết cập cơ chế cấp phát cookie mới sau khi người đùng đăng nhập thành công
Chức năng phát sinh cookie
Không đạt - Người dùng có thể sửa đổi cookie và đăng nhập thành công với cookie đó
- Có hàm phát sinh cookie với độ phức tạp cao
Không đạt - Cookie không được thay đổi sau khi đăng xuất
- Cookie vẫn có thể được sử dụng lại để đăng nhập
- Phải có chức năng làm mới lại cookie trên browser sau mỗi lần đăng xuất
- Loại bỏ cookie đã được sử dụng, không thể đăng nhập lại với cookie đó
3.2.7 Kiểm thử giá trị đầu vào
3.2.7.1 Kiểm thử Cross Site Scripting
Kiểm thử website có tồn tại bât kì lỗ hổng XSS nào không ?
Tiến hành quét toàn bộ website
Sau khi quét, ta thu được một lỗ hổng XSS với địa chỉ và tham số chuyền vào như sau
Truy cập địa chỉ trên:
Tham số được sử dụng để truyền dữ liệu vào là Page, do đó, bất kỳ dữ liệu nào được truyền sau tham số Page sẽ được hiển thị trên trình duyệt của website.
Tạo điều kiện thuận lợi cho các hacker có thể tấn công XSS
- Tiến hành thực thi khai thác XSS
Website có chức năng kiểm tra giá trị đầu vào trước khi thực thi
Website có tồn tại lỗ hổng XSS
Website có chức năng kiểm tra giá trị đầu vào.
Kiểm thử trang web dính lỗi XSS https://www.ravagedband.com/index.php?page=%3Cscript%3Ealert(1);%3C/scri pt%3E
- Trang web có tham số: page
- Giá trị truyền vào: alert(1);
Trang web có thể bị khai thác lỗi XSS nhằm lấy cắp thông tin người dùng như: cookies, thông tin đăng nhập,…
3.2.8 Kiểm thử xử lý lỗi
Kiểm thử trang thông báo lỗi
Kiểm thử xử lý lỗi trực tiếp
Kiểm thử trang thông báo lỗi
Trang web trả về lỗi khi người dùng cố gằng truyền vào những giá trị nguy hiểm vd: alert(XSS);
Trang web sẽ trả về lỗi khi người dùng cố gắng truy cập vào các trang bị tường lửa chặn, như /admin hay /upload, nhằm ngăn chặn người dùng cấp thấp xem và kết nối.
Kiểm thử xử lý lỗi trực tiếp
Trang web trả về lỗi “sai thông tin” đăng nhập khi người dùng đăng nhập sai tài khoản hoặc sai mật khẩu
Trang web có trang xử lý lỗi
Trang web được phân quyền rõ ràng ở những trang nhạy cảm
Quy trình kiểm thử Đánh giá Nội dung Yêu cầu
Kiểm thử trang thông báo lỗi Đạt
Các trang thông báo lỗi được thiết lập để lọc các yêu cầu và thông tin nhạy cảm Việc kiểm thử xử lý lỗi trực tiếp giúp loại bỏ những trường hợp sai và nguy hiểm, đảm bảo an toàn cho hệ thống.
KẾT QUẢ
- Qua quá trình kiểm thử website tồn tại các lỗ hổng nguy hiểm có thể khai thác sau:
Lỗ hổng Mức độ nguy hiểm Khả năng khai thác Yêu cầu Đường truyền thông tin đăng nhập
_ Có thể sử dụng các công cụ bắt gói tin để bắt gói tin đăng nhập chứa thông tin username, password được gửi lên server (Wireshark,…)
_ Sử dụng đường truyền có mã hóa được cấp bởi một tổ chức có uy tín
Cơ chế khóa tài khoản vi phạm
_ Người tấn công có thể lợi dụng lỗ hổng này để tấn công brute force các tài khoản có mật khẩu yếu
_ Thêm cơ chế khóa tài khoản vi phạm khi đăng nhập sai nhiều lần
Vùng nhớ đệm Browser Cao
_ Lỗ hổng này cho phép truy cập lại trang chứa thông tin cá nhân của người dùng trước
_ Cấu hình lệnh cho server yêu cầu browser không được lưu các trang có chứa thông tin mật
Chính sách đặt mật khẩu Cao
_ Đối với người dùng thiếu kinh nghiệm về bảo mật thông tin, họ sẽ tạo cơ hội cho các hacker dễ dàng tấn công lấy mật khẩu
_ Thêm chính sách đặt mật khẩu, đảm bảo mật khẩu có độ phức tạp nhức định
Chức năng đăng xuất Cao
_ Tạo cơ hội cho hacker có thể lập danh sách các cookie hợp pháp và sử dụng chúng để lấy cắp thông tin của người dùng khác
_ Yêu cầu tạo cookie mới sau khi đăng nhập
_ Vô hiệu hóa cookie cũ, không thể sử dụng lại để đăng nhập
_ Tạo cơ hội cho hacker có thể chiếm phiên làm việc của người dùng
_ Có chức năng khởi tạo cookie mới làm cookie xác thực người dùng
_ Lỗ hổng này tạo cơ hội cho hacker khai thác được những lỗ hổng trên HTTP Header như Clickjacking, cuộc tấn công XSS, tấn công lừa đảo
_ Cấu hình cho HTTP header những bảo mật như: X-Frame-Options, X-XSS-Protection, X- Content-Type-Options
_ Trang web không có sử dụng bảo mật đường truyền khi gửi thông tin lên server dễ dàng bị bắt lấy gói tin
_ Cấu hình chứng chỉ bảo mật đường truyền và HSTS
Các thuộc tính Cookies Trung bình _ Các thuộc tính cookies cấu hình chưa chặt chẽ
_ Cần cấu hình các thuộc tính chỉ dẫn đến các đối tượng cụ thể mà cookie có hiệu lực
Scripting Trung bình _ Website tồn tại 1 lỗ hổng
_ Vá lỗ hổng XSS được tìm thấy Đánh giá sơ bộ:
- Website đạt độ an toàn 60%
- Các lỗ hổng chủ yếu tập trung vào việc rò rỉ thông tin cá nhân và thông tin đăng nhập
- Cần có các biện pháp triển khai khắc phục các lỗ hổng ngay lập tức để tránh việc rò rỉ thông tin người dùng