Trong anninh mạng, lỗ hổng bảo mật là các điểm yếu kỹ thuật hoặc phi kỹ thuật của một phần mềm, phần cứng,giao thức, một hệ thống thông tin.Các điểm yếu này bị các tội phạm mạng lợi dụng
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG THẦYNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
BÁO CÁO MÔN HỌC
Nhập môn an toàn thông tin
Đề tài:
Tìm hiểu Top 10 lỗ hổng OWASP
Sinh viên thực hiện: Nhóm 2, Lớp CNTT -K67
1 Nguyễn Thị Mai Quyên - 20229034
2 Lê Thị Kim Anh - 20229001
Giảng viên hướng dẫn: ThS Lê Văn Đồng
HÀ NỘI, 06-2023
Trang 2LỜI NHẬN XÉT GIÁO VIÊN
LỜI MỞ ĐẦU
Trang 3 Nhóm 2 lớp K67-CNTT gồm 4 thành viên với các nội dung công việc được phân công như sau:
3 Bùi Quang Hảo Chương 2: 2.6 – 2.10
4 Lê Thị Kim Anh Thuyết trình, demo tấn công.
Trang 4Tuy nhiên, do kiến thức, kinh nghiệm và khả năng có hạn nên trong quá trình thực hiệnbáo cáo chúng em còn nhiều sai sót, mong nhận được sự đóng góp và cảm thông của thầy Lê VănĐồng
Chúng em xin chân thành cảm ơn thầy!
Trang 5MỤC LỤC
LỜI NHẬN XÉT GIÁO VIÊN 2
LỜI MỞ ĐẦU 3
LỜI CẢM ƠN 4
MỤC LỤC 5
Chương 1 TỔNG QUAN 13
1.1 Lỗ hổng bảo mật Website là gì ? 13
1.2 Nguyên nhân gây ra các lỗ hổng bảo mật của Website 14
1.3 Tiêu chuẩn OWASP là gì ? 14
1.3.1 Một số thành phần trong tiêu chuẩn OWASP 14
1.5 Tấn công là gì ? 16
Chương 2 TÌM HIỂU TOP 10 LỖ HỔNG OWASP 17
2.1 Broken Access Control ( Kiểm soát truy cập bị hỏng) 17
2.1.1 Broken Access Control ( Kiểm soát truy cập bị hỏng) là gì ? 17
2.1.2 Các lỗ hổng phổ biến: 17
2.1.3 Hậu quả: 17
2.1.4 Cách phòng chống 17
2.1.5 Kịch bản tấn công kiểm soát truy cập bị hỏng 18
2.1.6 Công cụ ứng dụng tấn công và khai thác lỗ hổng Broken Access Control: 18
2.2 Cryptographic failures ( Lỗi mật mã hỏng) 18
2.2.1 Cryptographic failures là gì ? 18
2.2.2 Các lỗi phổ biến: 19
2.2.3 Hậu quả: 19
2.2.4 Cách ngăn chặn: 19
2.2.5 Ví dụ kịch bản tấn công 19
2.2.6 Công cụ hỗ trợ để tấn công và khai thác lỗ hổng Cryptographic Failures: 20
2.3 Injection ( Tiêm lệnh) 20
2.3.1 Lỗi Injection là gì ? 20
2.3.2 Một số cách tiêm phổ biến 20
2.3.3 Hậu quả 20
2.3.4 Cách ngăn chặn 20
2.3.5 Kịch bản tấn công Injection: 21
2.3.7 Công cụ phát hiện và tấn công lỗ hổng Injection 22
2.4 Insecure design ( thiết kế không an toàn) 22
2.4.2 Hậu quả 22
2.4.3 Cách ngăn chặn: 22
2.4.4 Kịch bản tấn công Insecure design 22
Trang 62.4.5 Công cụ phát hiện và tấn công lỗ hổng Insecure design 23
2.5 Security Misconfiguration ( Cấu hình bảo mật sai) 23
2.5.1 Security Misconfiguration 23
2.5.2 Những lỗi phổ biến thường xảy ra 23
2.5.3 Hậu quả 23
2.5.4 Cách ngăn chặn 23
2.5.5 Kịch bản tấn công 24
2.5.6 Công cụ hỗ trợ tấn công và khai thác lỗ hổng cấu hình bảo mật sai 25
2.6 Các thành phần dễ bị tổn hại và lỗi thời (Vulnerable and Outdated Components) 25
2.6.1 Mô tả lỗi 25
2.6.2 Hậu quả 25
2.6.3 Nguyên nhân/cách tấn công 25
2.6.4 Phương pháp ngăn chặn 26
2.6.5 Kịch bản tấn công 26
2.7 Nhận dạng và xác thực không thành công (Identification and Authentication Failures) 26
2.7.1 Mô tả lỗi 26
2.7.2 Hậu quả 26
2.7.3 Nguyên nhân/cách tấn công 26
2.7.4 Phương pháp ngăn chặn 27
2.7.5 Kịch bản tấn công 27
2.8 Software and Data Integrity Failures: lỗi đưa ra các giả định liên quan đến cập nhật phần mềm, dữ liệu quan trọng mà không xác minh tính toàn vẹn 28
2.8.1 Mô tả lỗi 28
2.8.2 Hậu quả 28
2.8.3 Nguyên nhân/cách tấn công 28
2.8.4 Phương pháp ngăn chặn 29
2.8.5 Kịch bản tấn công 29
2.9 Security Logging and Monitoring Failures 30
2.9.1 Mô tả lỗi 30
2.9.2 Hậu quả 30
2.9.3 Nguyên nhân/cách tấn công 30
2.9.4 Phương pháp ngăn chặn 30
2.9.5 Kịch bản tấn công 31
2.10 Yêu cầu phía máy chủ giả mạo (Server-Side Request Forgery) 31
2.10.1 Mô tả lỗi 31
Trang 72.10.3 Nguyên nhân/cách tấn công 32 2.10.4 Phương pháp ngăn chặn 33 2.10.5 Kịch bản tấn công 33
Trang 8Chương 1 TỔNG QUAN
1.1 Lỗ hổng bảo mật Website là gì?
Vulnerability (lỗ hổng bảo mật) là một khái niệm phổ biến trong an toàn thông tin Trong an
ninh mạng, lỗ hổng bảo mật là các điểm yếu (kỹ thuật hoặc phi kỹ thuật) của một phần mềm, phần cứng,
giao thức, một hệ thống thông tin
Các điểm yếu này bị các tội phạm mạng lợi dụng để khai thác và truy cập trái phép vào hệ thống máytính Một khi mà tội phạm mạng khai thác được lỗ hổng thì chúng có thể phát tán các mã độc, cài đặtphần mềm độc hại và thậm chí là đánh cắp các dữ liệu nhạy cảm
Ngoài website thì lỗ hổng bảo mật thường sẽ xuất hiện ở:
1.2 Nguyên nhân gây ra các lỗ hổng bảo mật của Website
Quản lý mật khẩu kém: Những mật khẩu yếu có thể dễ dàng bị tấn công một cách nhanh chóng.
Đồng thời, việc sử dụng lại mật khẩu có thể dẫn đến từ một vi phạm dữ liệu và trở thành nhiều vụ viphạm đang xảy ra
Lỗi do hệ điều hành: Cũng giống như bất cứ phần mềm nào khác thì hệ điều hành lúc này cũng
có thể xuất hiện lỗ hổng Các hệ điều hành không an toàn hay chạy mặc định, đặc biệt là để tất cả mọingười dùng có quyền truy cập đầy đủ lúc này sẽ có thể cho phép virus cùng với phần mềm độc hại thựcthi tất cả các lệnh
Việc sử dụng internet: Hiện nay, internet được đánh giá là có rất nhiều loại phần mềm gián điệp,
đồng thời phần mềm quảng cáo cũng có thể sẽ được cài đặt tự động trên máy tính
Lỗi phần mềm: Lập trình viên có thể vô tình hoặc cố ý để lại một lỗi, Lỗi này có khả năng sẽ
được khai thác dễ dàng trong phần mềm
Đầu vào không được kiểm tra: Nguyên nhân tiếp theo chính là đầu vào của người dùng lúc này
không được kiểm tra một cách kỹ càng Nếu như trang web hoặc phần mềm của bạn cho rằng toàn bộ đầuvào đều an toàn thì chúng có thể thực thi đa dạng các lệnh SQL ngoài ý muốn
Người sử dụng: Lỗ hổng lớn nhất đối với bất kỳ tổ chức nào có thể chính là người sử dụng đằng
sau hệ thống đó Tấn công phi kỹ thuật chính là mối đe dọa lớn nhất so với các tổ chức khác nhau
1.3 Tiêu chuẩn OWASP là gì ?
OWASP là một tiêu chuẩn toàn cầu để phục vụ việc kiểm thử xâm nhập – Penetration Testing
(Pentest) được dễ dàng hơn Tiêu chuẩn này được đề xuất bởi một tổ chức phi lợi nhuận: Open WebApplication Security Project (OWASP)
Tiêu chuẩn OWASP giúp cho các chuyên gia kiểm thử (pentester) kiểm tra bảo mật cho website một cáchchi tiết, hiệu quả
Trang 91.3.1 Một số thành phần trong tiêu chuẩn OWASP
Input Validation
Bạn phải kiểm tra format, min, max, độ dài cho phép của các ô nhập liệu Ngoài ra, bạn nhớ mãhoá các ký tự đặc biệt Không bao giờ tin tưởng hoàn toàn người dùng, đó là một phương châmrất quan trọng đối với lập trình viên Việc kiểm tra dữ liệu được nhập vào từ người dùng là côngviệc vô cùng quan trọng Mục đích để tránh những sai sót không đáng có và các kiểu tấn côngXSS, CSRF
Output Encoding
Mã hoá các giá trị được nhận từ các nguồn đến trang web Đôi khi, ở client được nhận những giátrị không đáng có như đoạn mã liên quan đến XSS, nếu không có những biện pháp xử lý trước khihiển thị sẽ vô tình kích hoạt bẫy của hacker
Authentication and Password Management
Kiểm tra bảo mật với chức năng đăng nhập là vấn đề cực kỳ quan trọng, bạn phải đảm bảo việcđăng nhập cần sự an toàn và đúng với ý định của nhà phát hành ứng dụng
Cryptographic Practices
Kiểm tra mã hóa thông tin trên đường truyền Đối với đối thượng là những website thương mạiđiện tử hay giao dịch thì việc kiểm tra, mã hóa đường truyền là một vấn đề hết sức quan trọng.Phần này sẽ gợi ý bạn một số lời khuyên hữu ích
Error Handling and Logging
Kiểm tra cách xử lý lỗi của ứng dụng thông tin về lỗi cũng là một nguồn thu thập dữ liệu cho
Trang 10hacker có thể tấn công vào website Những lúc đó ứng dụng cần có cơ chế xử lý để không gặpphải hiện tượng tự nhiên lăn đùng ra chết mà quản trị chẳng hay chết khi nào và vì sao lại chết.
Để biết điều, đó ta phải ghi Log các hoạt động của hệ thống Tuy nhiên, hacker có thể khai tháclog để đánh hệ thống
Data Protection
Thu thập thông tin về đối tượng,thông tin về server Bước này rất quan trọng bởi khi đã xác địnhđược chính xác thông tin liên quan sẽ hình thành nên kịch bản để các Pentester có thể tấn côngkhai thác những lỗi liên quan đến websever mà không cần quan tâm tới ứng dụng đang chạy có antoàn hay không, từ đó có cách nhìn tổng quát về sản phầm cần pentest
System Configuration Cần đánh giá về hệ thống máy chủ, không chỉ dừng ở bước đánh giá ứng
dụng, bạn cần phải đánh giá cả nền tảng mà các ứng dụng chạy trên đó bởi nó có thể gây nguy hạikhông chỉ đến web mà còn đến cả hệ thống server Hình thức kiểm tra được sử dụng là whitebox
và graybox Ngoài ra, do cấu hình an ninh lỏng lẻo tại các tầng kiến trúc của web như nền tảng,framework, máy chủ, cơ sở dữ liệu và mã tùy chỉnh nên tin tặc có thể khai thác tấn công và cóquyền truy cập dữ liệu Vì thế, tất cả các tầng kiến trúc của web phải được cập nhật thườngxuyên
Khuyến khích các nhà phát triển thực hành mã hóa an toàn bằng cách tích hợp kiểm tra an ninh ởtừng giai đoạn phát triển Điều này sẽ giúp cho các ứng dụng trong quá trình phát triển tránh đượccác lỗi và an toàn hơn
Tài liệu Hướng dẫn Kiểm tra của OWASP cung cấp chi tiết về các kỹ thuật đánh giá, cung cấpmột cái nhìn rộng hơn vào nhiều nền tảng công nghệ giúp người kiểm tra lựa chọn cách thức phùhợp nhất để tiến hành kiểm tra
Tài liệu OWASP Top 10 cung cấp các hướng dẫn kỹ thuật giúp chống lại các cuộc tấn công vàđiểm yếu bảo mật phổ biến nhất và duy trì tính bảo mật (Confidentiality), tính toàn vẹn (Integrity)
và tính sẵn sàng (Availability) của ứng dụng (CIA)
Cộng đồng OWASP cũng đã phát triển một số công cụ bảo mật và hướng dẫn sử dụng tập trungvào kiểm tra ứng dụng web một cách tự động Một vài công cụ như: WebScarab, Wapiti,JBroFuzz và SQLiX Các công cụ này cũng được cài đặt sẵn trong hệ điều hành BackTrack
Trang 111.5 Tấn công là gì?
Tấn công là kỹ thuật mà kẻ tấn công sử dụng để khai thác các lỗ hổng trong ứng dụng Các cuộctấn công thường bị nhầm lẫn với các lỗ hổng, vì vậy hãy cố gắng đảm bảo rằng cuộc tấn công mà bạnđang mô tả là điều mà kẻ tấn công sẽ thực hiện, chứ không phải là điểm yếu trong ứng dụng
Trang 12Chương 2 TÌM HIỂU TOP 10 LỖ HỔNG OWASP
2.1 Broken Access Control ( Kiểm soát truy cập bị hỏng)
2.1.1 Broken Access Control (Kiểm soát truy cập bị hỏng) là gì ?
Broken Accsess Control là sự kiểm soát người dùng cho phép họ thực thi những hành động bên ngoàiquyền hạn Các lỗi thường dẫn đến tiết lộ thông tin trái phép sửa đổi hoặc phá hủy tất cả dữ liệu hoặcthực hiện chức năng ngoài giới hạn người dùng
Về mặt kỹ thuật thì các hacker có thể truy cập và có các quyền như người dùng hoặc admin, người dùng
có hiểu biết về các hàm của hệ thống cũng có thể gọi và thực thi các hàm này ( ví dụ: thêm, sửa, xóa cácbản ghi)
2.1.4 Cách phòng chống
Kiểm soát truy cập, kiểm soát này chỉ hiệu quả khi thực hiện ở mã nguồn ứng dụng (code) phíamáy chủ
Thực hiện các cơ chết kiểm soát quyền truy cập và thực hiện nó trên toàn ứng dụng
Triển khai các cơ chế kiểm soát truy cập một lần và sử dụng lại chúng trong toàn bộ ứng dụng,bao gồm việc giảm thiểu Chia sẻ tài nguyên giữa các bên (CORS)
Phân tách các nghiệp vụ ứng dụng khác nhau theo mô hình miền (domain model)
Thiết lập hạn chế cho các API và kiểm soát truy cập để giảm thiểu tác hại từ công cụ tấn công tựđộng
Các nhà phát triển và nhà kiểm định chất lượng nên triển khai kiểm soát truy cập đối với mỗichức năng và thực hiện các bài kiểm tra tích hợp
2.1.5 Kịch bản tấn công kiểm soát truy cập bị hỏng
Kịch bản 1: Trong trường hợp sau đây, kẻ tấn công sử dụng kỹ thuật duyệt bắt buộc để khai thác một thưmục tĩnh không được bảo vệ trên hệ thống đích
Bước 1: Kẻ tấn công sư dụng công cụ quét tự động để tìm kiếm các tài nguyên không được liênkết trên hệ thống đích và tìm thấy tài nguyên không được bảo vệ: /admin
Bước 2: Kẻ tấn công bắt đầu một cuộc tấn công duyệt bắt buộc trên hệ thống đích để xác minhxem có cần quyền quản trị để truy cập trang quản trị hay không
Bước 3: Kẻ tấn công truy cập vào trang quản trị với tư cách là người dùng chưa được xác thực vàthực hiện hành động trái phép
Trang 13
Kịch bản 2: Kẻ tấn công điều hướng trình duyệt đến các URL mục tiêu Quyền quản trị được yêu cầu
để truy cập vào trang quản trị
https://example.com/app/getappInfo https://example.com/app/admin_getappInfoNếu một người dùng chưa được xác thực có thể truy cập vào một trong hai trang hoặc một ngườikhông phải quản trị viên có thể truy cập vào trang quản trị, đó là lỗ hổng của ứng dụng
2.1.6 Công cụ ứng dụng tấn công và khai thác lỗ hổng Broken Access Control:
Burp Suite: cung cấp tính năng để phát hiện và khai thác lỗ hổng bảo mật
Nmap: công cụ quét mạng và phát hiện lỗ hổng bảo mật
Nessus: công cụ quét lỗ hổng bảo mật tự động
OpenVas: có thể phát hiện lỗ hổng cấu hình bảo mật sai và cung cấp báo cáo chi tiết về các lỗ hổng
Acunetix: công cụ quét lỗ hổng bảo mật sử dụng các kỹ thuật quét tự động để phát hiện lỗ hổng
2.2 Cryptographic failures ( Lỗi mật mã hỏng)
2.2.1 Cryptographic failures là gì?
Cryptographic failures bảo mật thông tin nhạy cảm bằng cách mã hóa thông tin theo các cách khác nhau,nhưng nếu cách mã hóa đó kẻ tấn công có thể giải mã được hay là cách thức giải mã không đảm bảo antoàn bản rõ thì những thông tin đó sẽ bị rò rỉ ra ngoài
Những kẻ tấn công thường nhắm mục tiêu nhạy cảm, ví dụ như: mật khẩu, số thẻ tín dụng và thông tincác nhân khi bảo vệ không đúng cách Lỗi mật mã là nguyên nhân gốc rễ của việc lộ dữ liệu nhạy cảm.Theo OWASP 2021 việc bảo mật dữ liệu của bạn khỏi các lỗi mã hóa đã trở nên quan trọng hơn bao giờhết
2.2.2 Các lỗi phổ biến:
Lưu trữ hoặc chuyển dữ liệu ở dạng văn bản rõ ràng ( lỗi phổ biến nhất)
Sử dụng nhưng giao thức truyền dữ liệu dạng rõ như: HTTP, FTP
Sử dụng những mã hóa đã cũ hoặc yếu
Sử dụng những hàm băm không dùng nữa như : MD5, SHA1
Khóa bí mật dễ đoán
Chuỗi mã hõa không được xác thực
2.2.3 Hậu quả:
Trang 14 Mất quyền riêng tư: một lỗ hổng mật mã có thể cho phép kể tấn công truy cập trái phép vào thôngtin bảo mật Điều này có thể dẫn đến việc tiết lộ thông tin cá nhân, dữ liệu tài chính, thông tinkinh doanh quan trọng hoặc các bí mật quốc gia.
Mất tính toàn vẹn: nếu hệ thống mật mã bị tấn công và tạo ra dữ liệu không xác định hoặc đượcsửa đổi, thông tin quan trọng có thể bị thay đổi hoặc bị mất tính toàn vẹn Điều này gây ra sựnhầm lẫn, thiệt hại tài chính
Giả mạo và phá vỡ xác thực: làm cho quy trình xác thực trở nên không tin cậy, cho phép kẻ tấncông giả mạo danh tính và truy cập trái phép vào các tài khoản hoặc hệ thống
Ảnh hưởng đến danh tiếng
2.2.4 Cách ngăn chặn:
Phân loại dữ liệu đang được ứng dụng xử lý, lưu trữ hoặc truyền đi Xác định dữ liệu nào nhạycảm theo luật bảo mật, yêu cầu quy định hoặc nhu cầu kinh doanh
Không sử dụng những giao thức đã cũ như: FTP, SMTP để vận chuyển dữ liệu nhạy cảm
Đảm bảo các thuật toán mã hóa đạt tiêu chuẩn mạnh mẽ và được cập nhật mới nhất, sử dụng quản
lý khóa phù hợp
Mã hóa dữ liệu trên đường truyền bằng TLS, HTTPS
Tắt bộ nhớ đệm cho các phản hồi có chứa dữ liệu nhạy cảm
Lưu trữ mật khẩu bằng các hàm băm mạnh như: Argon2, scrypt, bcrypt
Luôn sử dụng mã hóa được xác thực thay vì chỉ mã hóa
2.2.5 Ví dụ kịch bản tấn công
Kịch bản 1: Trong kịch bản tấn công dưới đây kẻ tấn công sử dụng bảng cầu vồng để bẻ khóa các hàmbăm mật khẩu không có giá trị trong cơ sở dữ liệu
Bước 1: Kẻ tấn công giành được quyền truy cập vào mạng của một tổ chức
Bước 2: Kể tấn công sử dụng một lỗ hổng ứng dụng để lấy cơ sở dữ liệu mật khẩu
Bước 3: Vì cơ sở dữ liệu sử dụng hàm băm không có giá trị để mã hóa mật khẩu nên kẻ tấn công