Kiểm tra quản lý cấu hình1.7.Kiểm tra các giao diện hạ tầng và quản trị ứng dụng nếu có• Xem xét các giao diện quản trị trong hệ thống để tìm ra xem có thể truy xuất vào đấy mà không cần
Trang 1QUY TRÌNH KIỂM TRA ĐẢM BẢO
AN TOÀN THÔNG TIN CHO ỨNG DỤNG WEB
Trang 2Nội dung chính
• I Giới thiệu chung về Web
• II Quy trình kiểm tra đảm bảo ATTT cho ứng dụng web
• III Các công cụ sử dụng để khai thác và bảo vệ ứng dụng web
Trang 3I Giới thiệu chung về Web
• 1 Khái niệm web
▫ World Wide Web (www), gọi tắt là web, là một
không gian thông tin toàn cầu mà mọi người có thể truy nhập (gửi và nhận thông tin) qua các máy tính nối với mạng Internet
▫ Web là 1 dịch vụ trên mạng Internet
Trang 4I Giới thiệu chung về Web
• 2 Mô hình hoạt động của Web
Trang 5I Giới thiệu chung về Web
• 3 Các thành phần của mô hình
▫ 3.1 Trình duyệt web
Trình duyệt web (web browser) là một phần mềm ứng dụng cho phép người
sử dụng xem và tương tác với các văn bản, hình ảnh, đoạn phim, nhạc, trò chơi và các thông tin khác ở trên một trang web của một địa chỉ web trên mạng toàn cầu hoặc mạng nội bộ
Trình duyệt web cho phép người sử dụng truy cập các thông tin trên các
trang web một cách nhanh chóng và dễ dàng, nó đọc định dạng HTML, CSS, XML,… để hiển thị, do vậy một trang web có thể hiển thị khác nhau trên các trình duyệt khác nhau.
Một số trình duyệt web hiện nay bao gồm Internet Explorer, Mozilla Firefox, Safari, Google Chrome, Opera,…
Trang 6I Giới thiệu chung về Web
▫ 3.2 Địa chỉ URL (Uniform Resource Locator)
Địa chỉ URL được dùng để tham chiếu tới tài nguyên trên Internet
Trang 7I Giới thiệu chung về Web
• 3 Các thành phần của mô hình
3.3 Giao thức http và https:
dụng trong mô hình tham chiếu OSI
Trang 8I Giới thiệu chung về Web
từ các Server
không
Trang 9I Giới thiệu chung về Web
• 3 Các thành phần của mô hình
▫ 3.4 Web Server – Máy chủ Web
chương trình phục vụ các ứng dụng web Web Server có khả năng tiếp nhận yêu cầu từ các trình duyệt web
và gửi phản hồi đến máy khách những trang web thông qua môi trường mạng Internet qua giao thức HTTP hoặc các giao thức khác
Trang 10I Giới thiệu chung về Web
• 3 Các thành phần của mô hình
▫ 3.5 Web Application - Ứng dụng web
dụng web được thực thi Lớp này sẽ biên dịch các mã nguồn tương ứng và thực hiện các truy vấn đến cơ sở dữ liệu dựa vào mã nguồn ứng dụng
được sử dụng như: JSP, ASP, PHP, ASP.NET, Nhưng hiện tại có
Trang 11I Giới thiệu chung về Web
• 3 Các thành phần của mô hình
▫ 3.6 Database Server – Máy chủ cơ sở dữ liệu
Database Server (cơ sở dữ liệu) là máy chủ lưu trữ tất cả các dữ liệu liên quan đến website Bất kỳ người sử dụng nào trên mạng máy tính, tại các thiết bị đầu cuối, về nguyên tắc có quyền truy nhập khai thác toàn bộ hay một phần dữ liệu theo quyền hạn hay tương tác mà
không phụ thuộc vào vị trí địa lý
Oracle, MySQL, Postgres
Trang 12II Quy trình kiểm tra đảm bảo ATTT cho ứng dụng web
1 Kiểm tra quản lý cấu hình
2 Kiểm tra xác thực tài khoản
3 Kiểm tra quản lý phiên làm việc
4 Kiểm tra phân quyền tài khoản
5 Kiểm tra xác duyệt thông tin
6 Kiểm tra khả năng tấn công từ chối dịch vụ
Trang 131 Kiểm tra quản lý cấu hình
1.1 Kiểm tra mã hóa SSL/TLS
mạnh của những khóa được sử dụng (trong thuật toán) trên SSL/TLS đã đủ mạnh hay chưa Ngoài ra phần này cũng kiểm tra tính hợp lệ của các
chứng chỉ SSL/TLS đang được sử dụng trong hệ thống hiện tại
1.2 Kiểm tra DB Listener
hay không Nếu cho phép kiểm tra xem nó có thiết lập chế độ xác thực hay không, các mật khẩu mặc định đã được thay đổi chưa …
Trang 141 Kiểm tra quản lý cấu hình
1.3 Kiểm tra về quản lý cấu hình hạ tầng
• Xem xét các yếu tố hạ tầng cấu hình lên ứng dụng mà có thể kiểm tra được đã đảm
bảo đủ bảo mật hay chưa Kiểm tra với những lỗi (trong hạ tầng) đã được tung ra Xem xét các giao diện quản trị có thể, và kiểm tra xem chúng có thể truy xất từ
internet hay không, xem xét và thay đổi những người dùng mặc định và mật khẩu mặc định.
1.4 Kiểm tra về quản lý cấu hình ứng dụng
• Kiểm tra với những trường hợp ví dụ của ứng dụng, những file hay thư mục thường
có trên ứng dụng xem có để lộ thông tin gì không Xem xét và tập hợp đủ những ghi chú chưa được xóa hết để thu thập thêm thông tin Ngoài ra, nếu có thêm quyền sâu hơn có thể kiểm tra thêm các tính năng khác như: Cấu hình chung của hệ thống đã
ổn chưa, những log ghi lại được đặt ở đâu, gồm những thông tin gì…
Trang 151 Kiểm tra quản lý cấu hình
1.5 Kiểm tra về xử lý kiểu file
• Xem xét với các loại file có phần mở rộng khác nhau Từ những phần mở rộng của các file và cách xử lý đó có thể suy luận để biết ứng dụng hỗ trợ những công nghệ gì.
1.6 Kiểm tra những file cũ, sao lưu, không có tham chiếu
• Kiểm tra xem trên ứng dụng có để lộ ra thông tin gì từ việc nâng cấp lên các phiên bản mới (mà vẫn còn để lại những file của phiên bản cũ, hay bị tự động đổi tên), rồi những thông tin để lộ trong những phần dự phòng mà có thể truy xuất được Những file mà vốn không tham chiếu đến từ ứng dụng nhưng bị dự đoán được tên cũng có thể tạo ra những lỗi trong bảo mật của toàn bộ ứng dụng.
Trang 161 Kiểm tra quản lý cấu hình
1.7 Kiểm tra các giao diện hạ tầng và quản trị ứng dụng (nếu có)
xuất vào đấy mà không cần xác thực hay xác thực mặc định không
1.8 Kiểm tra các phương thức HHTP và XST
tác đặc biệt (chỉnh sửa, xóa, dò vết…) trên phía ứng dụng Phần này kiểm tra xem những phương thức không cần thiết đó đã bị chặn hay chưa
Trang 172 Kiểm tra xác thực tài khoản
2.1 Kiểm tra quyền ủy nhiệm qua các kênh mã hóa
• Kiểm tra xem ứng dụng có hỗ trợ những giao thức nào: http, https Thông thường quan tâm đến khả năng hỗ trợ https của ứng dụng.
2.2 Kiểm tra liệt kê user
• Sử dụng những thông báo khác nhau trong ứng dụng để có thể tập hợp được danh sách các tài khoản trong ứng dụng, thường quan tâm đến những tài khoản quản trị hơn Mục đích cuối cùng là lập ra được danh sách những tài khoản của ứng dụng.
2.3 Kiểm tra tài khoản khách hoặc mặc định
• Kiểm tra mật khẩu mặc định, hay cặp (tài khoản, mật khẩu) mặc định trong hệ thống
có được sử dụng hay không Kiểm tra xem mật khẩu có dễ đoán hay không, những thông tin về mật khẩu có thể dự đoán được từ những thông tin liên quan khác không.
Trang 182 Kiểm tra xác thực tài khoản
2.4 Kiểm tra bruteforce
• Kiểm tra khả năng chống đỡ của hệ thống với kiểu tấn công dò toàn bộ (bruteforce)
cả với kiểu dò theo từ điển, và dò theo luật, dò tất cả các trường hợp có thể.
2.5 Kiểm tra khả năng vượt qua các lược đồ xác thực
• Kiểm tra khả năng có thể truy xuất vào những phần nào của ứng dụng mà không cần xác thực Thông thường đó sẽ là những đường dẫn ẩn mà người dùng bình
thường không được tham chiếu đến.
2.6 Kiểm tra lỗi nhớ hoặc đặt lại mật khẩu
• Kiểm tra xem ứng dụng có cho phép trình duyệt ghi nhớ mật khẩu khi đăng nhập vào hệ thống hay không Chức năng đổi mật khẩu cũng được kiểm tra xem việc đổi mật khẩu đã đủ xác đáng hay chưa, các câu hỏi bảo mật của quản trị viên có để lộ câu trả lời hay không, mật khẩu mới sinh ra có thể dự đoán được hay không.
Trang 192 Kiểm tra xác thực tài khoản
2.7 Kiểm tra thoát hoặc duyệt quản lý bộ đệm
• Kiểm tra chức năng đăng xuất có hoạt động đúng đắn hay không, các thông tin
nhạy cảm ở phần đệm có được làm sạch khi người dùng thoát khỏi ứng dụng hay không.
2.8 Kiểm tra trả lời tự động (CAPTCHA)
• Đánh giá hệ thống CAPTCHA của ứng dụng hiện tại xem có thể bẻ khóa được nó hay không.
2.9 Kiểm tra xác thực đa yếu tố
• Với hệ thống sử dụng đa xác thực, xem xét hệ thống có hoạt động đúng như thiết
kế hay không Phân tích những ưu và nhược điểm của các loại hệ thống đa xác thực khác nhau.
2.10 Kiểm tra các điều kiện tương tự
• Kiểm tra trong những tiến trình xảy ra đồng thời cùng can thiệp vào một tài nguyên (thường là biến nào đó) thường có gây ra hiện tượng sai lệch nào không.
Trang 203 Kiểm tra quản lý phiên làm việc
3.1 Kiểm tra lược đồ quản lý phiên
được những session tiếp theo Hay từ những session thu được có thể phân tích ra những giá trị như: tên tài khoản, mật khẩu,… ở trong đó hay không
3.2 Kiểm tra thuộc tính Cookies
tra để đảm bảo những thông tin nhạy cảm luôn được truyền trong những đường đã mã hóa
3.3 Kiểm tra khả năng đặt trước phiên làm việc
Trang 213 Kiểm tra quản lý phiên làm việc
3.4 Kiểm tra khẳ năng lộ các biến phiên làm việc
người dùng Phần này sẽ kiểm tra nhằm đảm bảo những giá trị trong các biến này là không nhạy cảm
3.5 Kiểm tra các lỗi giả lập yêu cầu liên kết chéo
Trang 224 Kiểm tra phân quyền tài khoản
4.1 Kiểm tra khả năng truy cập file, thư mục (Path Traversal)
phép truy xuất đến những file mà đáng ra ta không có có quyền truy xuất đến
4.2 Kiểm tra khả năng vượt qua các lược đồ phân quyền
dụng quyền của những nhóm khác, hay cấp độ quyền khác hay không
Ví dụ như khả năng truy xuất sau khi đăng xuất, khả năng truy xuất vào những tài nguyên mà không cần xác thực
4.3 Kiểm tra khả năng nâng quyền
những quyền cao hơn
Trang 235 Kiểm tra xác duyệt thông tin
5.1 Kiểm tra kiểu tấn công kịch bản không liên trang liên tục
•Kiểm tra xem website có khả năng chống lại cách tấn công mà kẻ tấn công tìm
cách chèn các đoạn mã kịch bản nguy hiểm tới phía người dùng hay không.
5.2 Kiểm tra kiểu tấn công kịch bản liên trang liên tục
• Kẻ tấn công tìm cách lưu các đoạn mã nguy hiểm lên máy chủ nhằm tấn công liên tục vào mọi người dùng khi sử dụng hệ thống, việc kiểm tra này nhằm đánh giá website có khả năng lọc các đoạn mã nguy hiểm hay không.
5.3 Kiểm tra kiểu tấn công kịch bản thông qua mô hình đối tượng tài liệu
•Kẻ tấn công tìm cách chèm các đoạn mã vào trang HTML phía người dùng
bằng cách sử dụng mô hình DOM, việc kiểm tra này để đánh giá ứng dụng có khả năng lọc các đoạn mã nguy hiểm hay không.
Trang 245 Kiểm tra xác duyệt thông tin
5.4 Kiểm tra kiểu tấn công chèm câu truy vấn cơ sở dữ liệu (SQL Injection)
• Kiểm tra xem website có khả năng chống lại kiểu tấn công vào CSDL hay không khi mà kẻ tấn công tìm cách chèn các câu truy vấ dữ liệu vào các phần điền thông tin phía người dùng nhằm ăn cắp thông tin về dữ liệu.
5.5 Kiểm tra kiểu tấn công chèn XML vào ứng dụng (XML Injection)
• Kiểm tra Website có bị lỗ hổng hay không khi mà kẻ tấn công tìm cách chèn đoạn XML sai cú pháp thông qua điền thông tin của ứng dụng để gây lỗi nhằm thu thập thông tin
5.6 Kiểm tra kiểu tấn công chèn các lệnh thực thi phía máy chủ
• Kiểm tra xem kẻ tấn công có khả năng chèn các câu lệnh thực thi phía máy chủ thông qua điền thông tin của Website để lấy thông tin về máy chủ hay không
Trang 255 Kiểm tra xác duyệt thông tin
5.7 Kiểm tra kiểu tấn công chèn các câu truy vấn theo cú pháp của Xpath
• Xpath là ngôn ngữ được thiết kế và phát triển để thiết kế và phát triển để thao tác trên dữ liệu được mô tả với XML, nó được thiết kế giống SQL Việc kiểm tra nhằm xác định Website có khả năng bị kẻ tấn công ăn cắp thông tin về CSDL thông qua việc chèn câu truy vấn Xpath vào điền thông tin của ứng dụng
5.8 Kiểm tra kiểu tấn công vào mail máy chủ (SMTP server)
thông qua mẫu thư đóng góp ý kiến lên máy chủ
5.9 Kiểm tra kiểu tấn công chèn các đoạn mã thực thi lên máy chủ (Code Injection)
lên máy chủ thông qua các file đính kèm nhằm thực thì các mục đích phá hoại
Trang 265 Kiểm tra xác duyệt thông tin
5.10 Kiểm tra kiểu tấn công chèn các câu lệnh hệ thống lên máy chủ (OS Commanding)
lệnh của hệ thống vào đường dẫn hay phần điền thông tin của ứng dụng Web
5.11 Kiểm tra lỗi tràn bộ nhớ đệm (Buffer overflow testing)
5.12 Kiểm tra các điểm nghi ngờ (Incubated vulnerability testing)
cách gây ra những lỗi mã kịch bản liên trang, chèn câu truy vấn hay upload file lên máy chủ để tấn công liên tục số lượng lớn vào người dùng trong cùng khoảng thời gian
5.13 Kiểm tra kiểu tấn công thông qua việc sửa HTTP (HTTP splitting/ Smuggling
HTTP
Trang 276 Kiểm tra khả năng tấn công từ chối dịch vụ
6.1 Kiểm tra tấn công chèn các ký tự đặc biệt vào câu truy vấn cơ sở
dữ liệu (SQL Wildcard)
biệt làm cho CPU bị quá tải khi xử lý
6.2 Kiểm tra tấn công từ chối dịch vụ nhằm khóa tài khoản của người dùng (Locking Customer Accounts)
thì phải kiểm tra xem ứng dụng có khả năng bị tấn công DoS không nhằm khóa toàn bộ người dùng của hệ thống hay không
6.3 Kiểm tra tấn công từ chối dịch vụ gây tràn bộ nhớ đệm
Trang 286 Kiểm tra khả năng tấn công từ chối dịch vụ
6.4 Kiểm tra tấn công từ chối dịch vụ gây cạn kiệt tài nguyên của ứng dụng
• Nếu ứng dụng Web cho phép người dùng được phép tùy chỉnh số đối tượng được tạo trên ứng dụng thì phải kiểm tra xem hệ thống có khả năng bị vét cạn tài nguyên hay không
6.5 Kiểm tra tấn công làm giảm hiệu năng của ứng dụng
• Nếu ứng dụng Web cho phép người dùng được phép tùy chỉnh giá trị bộ đếm trong một chức năng lặp thì kiểm tra xem ứng dụng có bị giảm hiệu năng hay không khi tăng giá trị lặp lên
6.6 Kiểm tra tấn công từ chối dịch vụ gây ngập ổ cứng với các dữ liệu log
• Kiểm tra xem ứng dụng web có khả năng bị lỗi ngập ổ cứng với các dữ liệu lỗi hay không
Trang 296 Kiểm tra khả năng tấn công từ chối dịch vụ
6.7 Kiểm tra khả năng giải phóng tài nguyên của ứng dụng
6.8 Kiểm tra cách lưu trữ dữ liệu bằng các phiên (Session) của ứng dụng
Trang 30III Các công cụ sử dụng để khai thác và bảo vệ ứng dụng web
• Burn Proxy - http://www.portswigger.net/
• Metasploit - http://www.metasploit.com/
• Acunetix - http://www.acunetix.com/
WebScarab)