Điểm yếu trong cơ chế xác thực: - Mật khẩu yếu: nhiều ứng dụng không tuân thủ tiêu chuẩn mật khẩu mạnh sẽ có một số lượng lớn các tài khoản người dùng với mật khẩu yếu được thiếtlập.. -
Trang 1NGHIÊN CỨU KHOA HỌC
Đề Tài: Nghiên cứu và tìm hiểu phương thức tấn công ứng dụng
Web.
Giảng Viên Hướng Dẫn:
Bùi Việt Thắng
Trang 2HỌC VIỆN KỸ THUẬT MẬT MÃ
Khoa An Toàn Thông Tin
NGHIÊN CỨU KHOA HỌC
Đề Tài: Nghiên cứu và tìm hiểu phương thức tấn công ứng dụng Web
Nhận Xét:
Hà Nội - 2013
Trang 3LỜI CẢM ƠN
Sau một khoảng thời gian thực hiện nghiên cứu khoa học " Nghiên cứu vàtìm hiểu phương thức tấn công ứng dụng Web" thì chúng em đã gần hoàn thành đềtài Thực sự trong thời gian nghiên cứu do kiến thức quá hạn hẹp và đôi khi nản trínhưng chúng em đã cố gắng hết mình đồng thời chúng em đã nhận được sự khích lệrất nhiều từ phía nhà trường, thầy cô, gia đình và bạn bè để hoàn thành đề tài này
Trước hết chúng con xin cảm ơn bố mẹ đã luôn động viên và tạo điều kiệntốt để chúng con học tập và hoàn thành đề tài nghiên cứu khoa học này
Chúng em xin cảm ơn thầy cô trường Học Viện Kỹ Thuật Mật Mã đã truyềnđạt những kiến thức quý báu cho chúng em trong suốt quá trình học tập Đặc biệt,chúng em xin bày tỏ lòng chân thành sâu sắc đến thầy Bùi Việt Thắng, người đã tậntình hướng dẫn và giúp đỡ chúng em trong quá trình nghiên cứu
Xin cảm ơn tất cả các bạn bè đã và đang động viên, giúp đỡ chúng tôi trongquá trình nghiên cứu và hoàn thành tốt đề tài này
Trang 4LỤC MỤC
Trang 5DANH MỤC HÌNH VẼ
Trang 6DANH MỤC CÁC TỪ VIẾT TẮT
HTTP HyperText Transfer Protocol
HTTPS Hypertext Transfer Protocol Secure
DHTML DynamicHyperText Markup Language
PCI DSS Payment Card Industry Data Security Standard
OWASP Opensource Web Application Security Project
WASC Web Application Security Consortium
AJAX Asynchronous JavaScript And XML
XML Extensible Markup Language
URL Uniform Resource Locator
PDA Personal digital asisstant
LDAP Lightweight Directory Access Protocol
API Application Programming Interface
XSS Cross-site scripting
Web DAV Web-based Distributed Authoring and Versioning
MDS Multidimensional scaling
SHA Secure Hash Algorithm
Trang 7LỜI MỞ ĐẦU
Cùng với sự phát triển của công nghệ thông tin, công nghệ mạng máy tính và
sự phát triển của mạng internet ngày càng phát triển đa dạng và phong phú Cácdịch vụ trên mạng đã thâm nhập vào hầu hết các lĩnh vực trong đời sống xã hội Cácthông tin trên Internet cũng đa dạng về nội dung và hình thức, trong đó có rất nhiềuthông tin cần được bảo mật cao hơn bởi tính kinh tế, tính chính xác và tính tin cậycủa nó
Bên cạnh đó, các hình thức phá hoại mạng cũng trở nên tinh vi và phứctạp hơn Do đó đối với mỗi hệ thống, nhiệm vụ bảo mật được đặt ra cho người quảntrị mạng là hết sức quan trọng và cần thiết Xuất phát từ những thực tế đó, chúng em
sẽ tìm hiểu về các cách tấn công phổ biến nhất hiện nay
1 Lý do chọn đề tài
Trong những năm gần đây, Việt Nam ngày càng phát triển và nhất là vềmặt công nghệ thông tin Đặc biệt là về ứng dụng web, hầu như mọi người ai cũngtừng nghe và làm việc trên ứng dụng web Website trở nên phổ biến và trở thànhmột phần quan trọng của mọi người và nhất là các doanh nghiệp, công ty Bên cạnh
đó lý do an toàn bảo mật cho ứng dụng web luôn là vấn đề nan giải của mọingười.Vì vậy chúng em sẽ đi tìm hiểu ứng dụng web và cách thức tấn công và một
số giải pháp phòng chống
2 Mục tiêu
Giúp chúng ta có thể hiểu hơn về các ứng dụng website, các mối đe dọa
về vấn đề an toàn thông tin khi chúng ta làm việc trên ứng dụng web hàng ngày,hiểu rõ hơn về các kỹ thuật tấn công và bảo mật web
3 Phạm vi
Tìm hiểu các kỹ thuật tấn công Mapping the Application, AttackingAuthentication, Attacking Users: Cross-site Scripting, Attacking SessionManagement, Attacking the Application
Trang 8CHƯƠNG 1 TỔNG QUAN VỀ ỨNG DỤNG WEB
1.1 Khái Niệm
Trong kỹ thuật phần mềm, một ứng dụng web là một trình ứng dụng mà cóthể tiếp cận qua web thông qua mạng internet hay intranet Ứng dụng web là mộtứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với trình người dùng hay
hệ thống khác
Ưu điểm khi sử dụng ứng dụng web
- Một ứng dụng web không phụ thuộc vào hệ điều hành mà chỉ phụ thuộcvào trình duyệt
- Tất cả các máy tính chỉ cần có trình duyệt web là có thể truy cập được ứngdụng web mà không cần phải cài đặt ứng dụng đó lên máy Do đó dễ dàng nângcấp hoặc bảo trì các ứng dụng web
- Có thể truy cập ứng dụng web bất cứ nơi đâu, bất cứ lúc nào, chỉ cần cómột thiết bị sử dụng trình duyệt web có kết nối internet
- Các ứng dụng web chạy ngay trong các trình duyệt điều này có nghĩa cácứng dụng web luôn luôn chạy riêng rẽ với các ứng dụng trong máy tính Nhữngứng dụng web sẽ không thể can thiệp vào các chương trình đang chạy hay làmgiảm hiệu suất của máy tính
- Chi phí triển khai rẻ so với phần mềm chạy trên máy tính
Nhược điểm:
- Những đặc tính của trình duyệt có thể gây ra những rắc rối trong việc pháttriển và hỗ trợ ứng dụng web
- Phụ thuộc vào băng thông mạng
- Khả năng cho người dùng điều chỉnh cài đặt hiển thị cho trình duyệt có thểcan thiệp vào sự ổn định của ứng dụng web
- Những lỗi gây ra trong chương trình có thể bị hacker tấn công và phá hoạiđến hệ thống cũng như cơ sở dữ liệu
Trang 9- Dữ liệu quan trọng được truyền đi trên mạng có thể bị lộ nếu không có cơchế bảo mật tốt.
• Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access…
Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông quacác lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể chothực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++…hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu củatrình khách Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tínhtoán, kết nối đến cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến và từ đó trả
về cho trình khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2phần:
• Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái traođổi giữa trình duyệt và WebServer
Trang 10• Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là mộtfile HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì.
Kiến trúc ứng dụng Web:
Hình 1-2: Mô hình kiến trúc ứng dụng webLớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài
ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web
Lớp ứng dụng: là nơi xử lý của ứng dụng Web Nó sẽ xử lý thông tin ngườidùng yêu cầu, đưa ra quyết định, gửi kết quan đến “lớp trình bày” Lớp nàythườngđược cài đặt bằng các kỹ thuật lập trình như CGI, Java, NET, PHP hay ColdFusion,được triển khai trên các trình chủ như IBM WebSphere, WebLogic, Apache, IIS…
Lớp dữ liệu: thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệmquản lý các file dữ liệu và quyền sử dụng
1.2 Cơ Chế Bảo Mật
1.2.1: Nguy cơ mất an toàn trong ứng dụng web
Trong khoảng vài năm trở lại đây, số lượng các lỗ hổng bảo mật của các trìnhứng dụng Web được công bố tăng lên một cách đáng kể Những người làm bảo mậtthường chỉ quan tâm đến độ bảo mật của mạng và hệ điều hành chứ ít quan tâmnhiều đến bảo mật của chính các ứng dụng chạy trên máy chủ web Website phụthuộc vào cơ sở dữ liệu để phân phối thông tin được yêu cầu cho người dùng Nếu
Trang 11ứng dụng Web không an toàn, toàn bộ cơ sở dữ liệu chứa thông tin nhạy cảm sẽ gặpnguy hiểm nghiêm trọng
1.2.2: Bảo mật ứng dụng web
Sự mất an toàn của ứng dụng web thường xuất phát từ lỗ hỗng bảo mật.Chính vì vậy trong quá trình xây dựng cần phải bảo đảm được quy trình thiết kếphần mềm an toàn
Khi đã triển khai ứng dụng web cần đồng thời triển khai quy trình kiểm tra
hệ thống một cách tự động và theo định kỳ để phát hiện ra các lỗ hỗng bảo mật cóthể phát sinh, nhằm đưa ra những lời cảnh báo hay ngăn chặn kịp thời các vụ tấncông và tránh sự tổn hại to lớn
Các cơ chế bảo mật dụng web:
Hạn chế tối đa các cuộc tấn công vào các ứng dụng thông qua thiết bịbảo vệ ứng dụng web chuyên dụng (Web Application Firewall)
Tập chung phát triển, xây dựng các ứng dụng web theo đúng tiêu chuẩnWeb 2.0 với các tiêu chí bảo mật web cao nhất (PCI DSS, OWASP…)
Khả năng giám sát, phòng chống có chiều sâu và tập trung
Nâng cao hiệu năng của hệ thống, phát huy tối đa các tính năng bảo mậttừng thiết bị trong hệ thống
Xây dựng các biểu mẫu đánh giá rủi ro hệ thống (tham khảo các tiêuchuẩn bảo mật OWASP, WASC…)
1.3 Công Nghệ Ứng Dụng Web:
Các ứng dụng web ngày nay có tính năng và cách thức tương tác với ngườidùng rất tiện lợi Để có được diều này chính là nhờ công nghệ ứng dụng web, nổibật đó là công nghệ AJAX
AJAX, viết tắt từ Asynchronous JavaScript and XML (JavaScript và XMLkhông đồng bộ), là bộ công cụ cho phép tăng tốc độ ứng dụng web bằng cách cắtnhỏ dữ liệu và chỉ hiển thị những gì cần thiết, thay vì tải đi tải lại toàn bộ trang web.AJAX không phải một công nghệ đơn lẻ mà là sự kết hợp một nhóm công nghệ vớinhau Trong đó:
Trang 12- HTML và CSS đóng vai trò hiển thị dữ liệu.
- Mô hình DOM (Document Object Model), được thực hiện thông quaJavaScript, trình bày thông tin động
- Đối tượng XMLHttpRequest trao đổi dữ liệu không đồng bộ với máy chủweb
- XML là định dạng chủ yếu cho dữ liệu truyền
Công nghệ này xử lý thông tin được thực hiện trên máy yêu cầu dịch vụ thay
vì trên máy xử lý yêu cầu dịch vụ như cách truyền thống Máy xử lí yêu cầu dịch vụchỉ làm một việc đơn giản là nhận thông tin từ máy khách và trả các dữ liệu về chomáy khách
1.3.1: AJAX hoạt động như thế nào?
Những hoạt động của người sử dụng trên trang web sẽ tạo ra một yêu cầuHTTP tới server Máy chủ thực hiện một số khâu xử lý như lấy lại dữ liệu, tính toán,kiểm tra sự hợp lệ của thông tin, sửa đổi bộ nhớ, sau đó gửi lại một trang HTMLhoàn chỉnh tới máy khách Về mặt kỹ thuật, phương pháp này nghe có vẻ hợp lýnhưng cũng khá bất tiện và mất thời gian Để khắc phục hạn chế trên, các chuyêngia phát triển giới thiệu hình thức trung gian cơ chế xử lý AJAX giữa máy khách vàmáy chủ Điều này giống như việc tăng thêm một lớp giữa cho ứng dụng để giảmquá trình “đi lại” của thông tin và giảm thời gian phản ứng Thay vì tải lại toàn bộmột trang, nó chỉ nạp những thông tin được thay đổi, còn giữ nguyên các phần khác
Vì thế, khi duyệt một trang hỗ trợ AJAX, người sử dụng không bao giờ nhìn thấymột cửa sổ trắng và biểu tượng đồng hồ cát dấu hiệu cho thấy máy chủ đang thựchiện nhiệm vụ
1.3.2: Những nhược điểm của AJAX
- Các trang web được tạo động không được ghi vào bộ lưu lịch sử lướt webcủa trình duyệt, do đó nút "back" của trình duyệt sẽ mất tác dụng quay lại trạng tháitrước đó của trang sử dụng AJAX, thay vào đó sẽ quay lại trang web trước đó màngười dùng ghé thăm Để khắc phục có thể dùng các IFrame không hiển thị để gây
Trang 13ra sự thay đổi trong lịch sử trình duyệt và thay đổi phần nào của URL (bằng mã a #)khi chạy Ajax và theo dõi những sự thay đổi của nó.
- Việc cập nhật các trang web động cũng gây khó khăn cho người dùng trongviệc bookmark một trạng thái nào đó của ứng dụng Cũng có những cách khắc phụccho vấn đề này, một số trong đó sử dụng mã xác định đoạn (fragment identifier)URL (phần URL ở sau dấu '#') để lưu vết, và cho phép người dùng đánh dấu vàquay lại một trạng thái nào đó của ứng dụng
- Do hầu hết các web crawler không thực thi mã JavaScript, các ứng dụngweb sẽ cung cấp một phương thức thay thế để truy cập nội dung thông thường đượctruy cập bằng Ajax, để cho phép các máy tìm kiếm lập chỉ mục chúng
- Bất kỳ người dùng nào có trình duyệt không hỗ trợ Ajax hay JavaScript,hoặc đơn giản là đã bị vô hiệu hóa JavaScript, sẽ không thể sử dụng Ajax.Tương tự,các thiết bị như điện thoại di động, PDA, và thiết bị đọc màn hình (screen reader) cóthể không hỗ trợ JavaScript hay đối tượng XML Http được yêu cầu Ngoài ra, cácthiết bị đọc màn hình nếu có thể sử dụng Ajax đi nữa cũng vẫn có thể không đọcchính xác các nội dung động
- Việc thiếu các chuẩn cơ bản của Ajax đồng nghĩa với việc không có nhiều
sự chọn lựa thực tiễn tốt nhất để kiểm tra các ứng dụng Ajax Các công cụ kiểm thửcho Ajax thường không hiểu các mô hình sự kiện, mô hình dữ liệu và giao thức củaAjax
- Mở ra một cách thức khác cho việc tấn công của các đoạn mã độc mànhững nhà phát triển web có thể không kiểm thử hết được
Trang 14CHƯƠNG 2 CÁC PHƯƠNG THỨC TẤN CÔNG WEB
2.1 Attacking Authentication
Xác thực là một quá trình nhận dạng người dùng, nó đóng một vai trò quantrọng trong bảo mật ứng dụng web Hầu hết các loại xác thực trên internet đều sửdụng tên người dùng và mật khẩu để xác thực người dùng
Trong thực tế xác thực web thường là liên kết yếu nhất, cho phép kẻ tấn côngtruy cập trái phép
Điểm yếu trong cơ chế xác thực:
- Mật khẩu yếu: nhiều ứng dụng không tuân thủ tiêu chuẩn mật khẩu mạnh sẽ
có một số lượng lớn các tài khoản người dùng với mật khẩu yếu được thiếtlập Một kẻ tấn công có thể dễ dàng đoán các mật khẩu tài khoản, từ đó cóthể truy cập trái phép tới các ứng dụng bằng tài khoản người dùng
- Brute-Forcible Login: Nếu ứng dụng cho phép kẻ tấn công đăng nhập lặp đilặp lại với mật khẩu khác nhau cho đến khi dự đoán chính xác thì ứng dụngrất rễ bị đột nhập
- Verbose Failure Messages: một ứng dụng yêu cầu người dùng một số thôngtin, hoặc tiến hành qua nhiều giai đoạn, chi tiết thông báo thất bại có thểcho phép kẻ tấn công nắm bắt lần lượt mỗi giai đoạn của quá trình đăngnhập, tăng khả năng truy cập trái phép
- Vulnerable Transmission of Credentials: Nếu một ứng dụng sử dụng mộtkết nối được mã hóa HTTP để truyền tải thông tin đăng nhập, kẻ nghe trộm
là người có vị trí phù hợp trên mạng có thể chặn và biết được thông tin đó
- Password Change Functionality: chức năng thay đổi mật khẩu thường dễ bịtấn công do thiết kế Chức năng thay đổi mật khẩu nhiều ứng dụng web cóthể truy cập mà không cần xác thực
- Forgotten Password Functionality: Các cơ chế cho việc khôi phục khi ngườidùng quên mật khẩu cũng sẽ gây ra lỗ hổng rất lớn để kẻ tấn công có thểkhai thác
- “Remember Me” Functionality: Các ứng dụng thường sử dụng chức nằng
Trang 15“ghi nhớ” như là một tiện nghi cho người sử dụng Bằng cách này, ngườidùng không cần phải nhập lại tên đăng nhập và mật khẩu của họ mỗi lần sửdụng các ứng dụng Chức năng này thường không an toàn do lỗi thiết kế và
dễ dàng bị tấn công bởi một máy tính khác
- User Impersonation Functionality: Một số ứng dụng cho phép quản trị củaứng dụng có thể truy cập dữ liệu và thực hiện các hành động trong tàinguyên người dùng của họ Như vậy có thể gây ra một số lỗi như: Có thểthực hiện các chức năng mà không bị kiểm soát, kẻ tấn công có thể truy cậpvào tài khoản người dùng mà không cần xác thực, có thể dẫn đến việc leothang đặc quyền
- Incomplete Validation of Credentials: một số xác thực được thiết kế kémkhông những không thực thi các yêu cầu tốt và không đảm bảo được sự antoàn cho tài khoản của người sử dụng
- Nonunique Usernames: Một số ứng dụng hỗ trợ việc đăng ký cho phépngười dùng chỉ định tên của riêng mình, tên người dùng là duy nhất Điềunày gây ra rất nhiều khó khăn cho người quản trị Và điều này có thể gây ramột số lỗi
- Predictable Usernames: Một số ứng dụng tự động tạo ra tên tài khoản ngườidùng theo một trình tự (VD:cust5331, cust5332, vv) Một khi ứng dụnghoạt động như vậy, kẻ tấn công có thể phân biệt các trình tự và nhanh chóngđạt được một danh sách có khả năng chứa đầy đủ các tài khoản người dùnghợp lệ, và sử dụng làm cơ sở cho các cuộc tấn công
- Predictable Initial Passwords: Trong một số ứng dụng, người dùng được tạo
ra cùng một lúc hoặc theo một số lượng khá lớn và được tự động gán mậtkhẩu ban đầu Các phương tiện tạo ra mật khẩu có thể cho phép kẻ tấn công
dự đoán các mật khẩu của người sử dụng ứng dụng khác
- Insecure Distribution of Credentials: Nhiều ứng dụng sử dụng một quá trìnhtrong đó các thông tin cho tài khoản mới tạo được phân phối cho người sửdụng thông qua sự tương tác bình thường của họ với các ứng dụng Trongmột số trường hợp,quá trình phân phối này còn có chứa cả tên người dùng
Trang 16Điểm yếu trong việc thực hiện xác thực:
- Fail-Open Login Mechanisms: là một loại lỗ hổng logic, nó có hậu quả đặcbiệt nghiêm trọng trong cơ chế xác thực
- Defects in Multistage Login Mechanisms: Cơ chế đăng nhập nhiều tầngđược thiết kế để cung cấp bảo mật cao hơn so với mô hình đơn giản dựatrên tên người dùng và mật khẩu Thông thường, giai đoạn đầu tiên đòi hỏingười sử dụng để xác định mình với một tên người dùng hoặc mục tương
tự, và giai đoạn tiếp theo thực hiện kiểm tra xác thực khác nhau Cơ chếnhư vậy thường chứa một lỗ hổng bảo mật
- Insecure Storage of Credentials: Người ta thường gặp phải các ứng dụngweb, trong đó thông tin người dùng được lưu trữ trong cơ sở dữ liệu không
an toàn
2.2 Attacking Session Management
Session dùng đ qu n lý và l u tr phiên làm vi c ể ả ư ữ ệ giữa người sử dụng và
hệ thống Việc quản lý phiên làm việc này sẽ giúp bạn tạo ra sự chứng thực hiệu quảbởi việc xác nhận thông tin trước khi truy cập vào một phân vùng cố định Session
ID có th để ượ ưc l u tr trong cookie hay đữ ược nhúng vào đ a ch URL hay trongị ủ
bi n n form.ế ẩ
Thông thường, sau khi người dùng được ch ng th c d a trên nh ngứ ự ự ữthông tin cá nhân nh tên/m t kh u, session ID đư ậ ẩ ược xem nh m t m t kh uư ộ ậ ẩtĩnh t m th i cho nh ng l n yêu c u ti p theo Đi u này đã khi n cho sessionạ ờ ữ ầ ầ ế ề ế
ID là m c tiêu l n cho nh ng hacker Trong nhi u trụ ớ ữ ề ường h p, hacker giànhợ
được session ID h p l c a ngợ ệ ủ ười dùng đ t đó đ t nh p vào phiên làm vi cể ừ ộ ậ ệ
Trang 172.3 Attacking Access Controls
Kiểm soát truy cập là một cơ chế bảo vệ quan trọng trong ứng dụng vì nó cótrách nghiệm đưa ra những quyết định quan trọng Khi nó bị lỗi, một kẻ tấn công cóthể làm ảnh hưởng tới toàn bộ ứng dụng, kẻ tấn công có thể kiểm soát các chứcnăng quản lý và truy cập dữ liệu nhảy cảm
Kiểm soát truy cập được chia thành ba loại chính: vertical, horizontal, vàcontext-dependent
- Vertical access controls (Kiểm soát truy cập theo chiều dọc) cho phép phânchia các quyền truy cập khác nhau của người sử dụng vào các chức năng của ứngdụng Ví dụ phân chia quyền truy cập của người dùng thông thường và quản trịviên
- Horizontal access controls (Kiểm soát truy cập ngang hàng) cho phép bạntruy cập vào tập hợp con của các nguồn tài nguyên cùng loại
- Context-dependent access controls ( Kiểm soát truy cập ngữ cảnh) đảm bảorằng hạn chế truy cập của người dùng với những gì được cho phép với trạng tháiứng dụng hiện tại
Có ba loại tấn công chính vào kiểm soát truy cập ứng với ba loại kiểm soát:
- Vertical privilege escalation (Leo thang đặc quyền theo chiều dọc) xảy rakhi một người sử dụng có thể thực hiện các chức năng mà người đó không có quyềntruy cập
- Horizontal privilege escalation (Leo thang đặc quyền theo chiều ngang) xảy
ra khi người dùng có thể xem hoặc sửa đổi các nguồn tài nguyên mà người đókhông có quyền
- Business logic exploitation xảy ra khi một người sử dụng có thể khai thácmột lỗ hổng trong ứng dụng web để truy cập vào các nguồn tài nguyên quan trọng
2.4 Attacking Data Stores
Gần như tất cả các ứng dụng đều dựa trên việc lưu trữ dữ liệu để quản lý vàđược xử lý trong ứng dụng Hầu hết dữ liệu được lưu trữ trong một cấu trúc, truy
Trang 18cập bằng cách sử dụng các ngôn ngữ truy vấn được xác định.
Thông thường, các ứng dụng sử dụng một mức độ đặc quyền chung cho tất
cả các loại hình truy cập để lưu trữ dữ liệu và khi xử lý dữ liệu phụ thuộc vào cácngười sử dụng khác nhau
Các dạng tấn công Attcking Data Stores:
- Injecting into Interpreted Contexts: Các chức năng ứng dụng web nhưmột điều khiển truy cập tùy ý để lưu trữ dữ liệu, xây dựng truy vấn đểlấy, thêm, hoặc sửa đổi dữ liệu trong dữ liệu lưu trữ dựa trên tài khoảncủa người sử dụng Một cuộc tấn công Injection thành công có thể bỏqua các điều khiển truy cập tùy ý của ứng dụng và truy cập trái phép
- Injecting into SQL: Hầu hết các ứng dụng web sử dụng một cơ sở dữ liệu
để lưu trữ các loại thông tin cần thiết để hoạt động Các phương pháptruy cập thông tin trong cơ sở dữ liệu bằng ngôn ngữ SQL SQL có thểđược sử dụng để đọc, cập nhật, bổ sung, và xóa các thông tin được tổchức trong cơ sở dữ liệu Điều này có thể gây lên các cuộc tấn côngthông qua các câu lệnh của ngôn ngữ SQL
- XML Path Language (XPath) được sử dụng để di chuyển xung quanh cáctài liệu XML và lấy dữ liệu từ bên trong Các ứng dụng web lưu trữ dữliệu trong XML, họ có thể sử dụng XPath để truy cập dữ liệu và đáp ứngtheo đầu vào mà người dùng cung cấp Nếu đầu vào này được đưa vàotruy vấn XPath mà không được lọc hoặc không được quản lý, kẻ tấncông có thể thao tác các truy vấn để can thiệp logic của ứng dụng hoặclấy dữ liệu mà không cần được ủy quyền
- Injecting into LDAP: được sử dụng để truy cập dịch vụ thư mục quamạng.Thư mục là một lưu trữ dữ liệu hệ thống dọc có thể chứa bất kỳloại thông tin nhưng thường được sử dụng để lưu trữ dữ liệu cá nhân nhưtên, số điện thoại, địa chỉ email, và các chức năng công việc Mỗi truyvấn LDAP sử dụng một hoặc nhiều bộ lọc tìm kiếm, trong đó xác địnhcác thư mục đó được trả về bởi truy vấn Bộ lọc tìm kiếm có thể sử dụng
Trang 19toán tử logic khác nhau.
2.5 Attacking Back-End Components
Các ứng dụng web ngày càng phức tạp Các ứng dụng web bao gồm nhiều tàinguyên mạng như dịch vụ web, web mail… các hệ thống tập tin và các giao tiếp với
hệ điêug hành Thông thường, các máy chủ ứng dụng cũng hoạt động như một lớpkiểm soát truy cập cho các thành phần back-end Bất kỳ cuộc tấn công thành côngnào đều có thể thực hiện tương tác tùy ý với một thành phần back-end có thể có khảnăng vi phạm toàn bộ mô hình kiểm soát truy cập được áp dụng bởi các ứng dụngweb, cho phép truy cập trái phép vào dữ liệu nhạy cảm và các chức năng
Injecting OS Commands: Hầu hết các nền tảng máy chủ web đều thông qua
API để thực hiện tương tác với máy chủ điều hành hệ thống Các API này cho phépcác nhà phát triển truy cập vào hệ thống tập tin bằng giao diện và thực hiện các kếtnối thông tin trong mạng một cách an toàn Tuy nhiên, có rất nhiều tình huống màcác nhà phát triển chọn sử dụng các kỹ thuật tốt hơn để đưa các lệnh của hệ điềuhành trực tiếp đến máy chủ Và nếu sử dụng ứng dụng đưa các lệnh vào hệ điềuhành, nó có thể dễ bị tấn công để chèn lệnh cho phép kẻ tấn công xâm nhâp vào và
sửa đổi các lệnh của nhà phát triển Các chức năng thường được sử dụng để tạo ra
các lệnh hệ điều hành, chẳng hạn như exec trong PHP và wscript.shell trong ASP,không áp đặt bất kỳ hạn chế trên phạm vi các lệnh có thể được thực hiện Ngay cảkhi một nhà phát triển có ý định sử dụng một API để thực hiện một nhiệm vụ tươngđối nhỏ như liệt kê một thư mục của nội dung, kẻ tấn công có thể phá vỡ nó để viếtcác tập tin tùy ý hoặc khởi động các chương trình khác
Manipulating File Paths: Nhiều loại chức năng thường thấy trong các ứng
dụng web liên quan đến cách thức sử dụng cung cấp đầu vào như một tập tin hoặcthư mục Thông thường, đầu vào thông qua một API mà chấp nhận một đường dẫntập tin, chẳng hạn như trong việc thu hồi các tập tin từ hệ thống tập tin cục bộ Ứngdụng xử lý các kết quả của các yêu cầu đến API đáp ứng yêu cầu của người dùng.Nếu đầu vào người dùng cung cấp được xác nhận không đúng,hành vi này có thể
Trang 20dẫn đến lỗ hổng bảo mật khác nhau, phổ biến nhất đó là lỗi path traversal PathTraversal hay còn được biết với một số tên khác như “dot-dot-slash”, “directorytraversal”,”directory clumbing” và “backtracking” là hình thức tấn công truy cậpđến những file và thư mục mà được lưu bên ngoài thư mục webroot Hình thức tấncông này không cần sử dụng một công cụ nào mà chỉ đơn thuần thao tác các biếnvới / (dot-dot-slash) để truy cập đến file, thư mục, bao gồm cả source code, nhữngfile hệ thống, … Để nhận biết khả năng khai thác lỗi này, các kẻ tấn công thườngquan sát kết quả có được từ spider hoặc crawler mang lại
2.6 Attacking Users:Cross-Site Scripting
Cross –Site Scripting (XSS) là một kỹ thuật tấn công bằng cách chén vàonhững website động (ASP, PHP, CGI ) những thẻ HTML hay những đoạn mãscript nguy hiểm có thể gây hại cho những người sử dụng khác Trong đó nhữngđoạn mã nguy hiểm thường được viết bằng các Client Site Script như: JavaScript,Jscript, DHTML và cũng có thể là các thẻ HTML
Các kỹ thuật tấn công XSS:
Trang 21- Redirection: Khi click vào một đường link trên website người dùng sẽ bịchuyển đến một trang web nào đó bên ngoài mà hacker mong muốn.
- HTTP Respone Injection: là một kỹ thuật tiêm vào header phản hồi Mỗikết quả trả về bao gồm header và phần nội dung, xen kẽ giữa hai phầnnày là một khoảng trống mà nếu như hacker có thể tiêm những kí tự đặcbiệt vào thì nguy cơ bị tấn công XSS là rất cao, khi đó người dùng có thể
bị đầu độc bộ nhớ cache
- Source with real DHTML: Kỹ thuật này dựa vào việc khai thác sơ hởsource code của một website động nào đó để chèn những đoạn mã độchại vào website nhắm đánh cắp , thay đổi thông tin hay theo dõi ngườidùng
- Bypassing XSS Length Limitations: Đây là một trong số những kĩ thuậtgiúp hacker có thể tăng thêm số kí tự đặc biệt chèn vào so với số lượng
ký tự cho phép thông thường
- Filter Evasion: Những người phát triển web thường bảo vệ website củamình bằng những bộ lọc vì vậy nếu muốn thực hiện thành công XSS thìhacker cần vượt qua sự kiểm soát của bộ lọc này và Filter Evasion làmột kĩ thuật được sử dụng để thực hiện điều này
2.7 Attacking Users: OtherTechniques
Phần lớn các cuộc tấn công chống lại các ứng dụng web chủ yếu đều liênquan tới máy chủ ứng dụng Một trong số đó là các cuộc tấn công tác động đếnngười dùng Những phương pháp thiết yếu của kẻ tấn công là tương tác với máychủ để thực hiện các hành động trái phép và truy cập vào CSDL trái phép
Các dạng tấn công:
- HTTP Header Injection: phát sinh khi dữ liệu kiểm soát người dùng
được xếp vào một HTTP header và được trả về bởi các ứng dụng Nếu kẻtấn công có thể tiêm các ký tự vào và kiểm soát được header ấy, kẻ tấncông có thể chèn HTTP header bổ sung vào các phản hồi và có thể viếtnội dung bất kỳ vào body của các phản hồi
- Request Forgery: loại tấn công này có liên quan chặt chẽ với các cuộc
Trang 22tấn công chiếm quyền điều khiển phiên làm việc, trong đó kẻ tấn côngghi lại phiên mã thông báo của người sử dụng và do đó có thể sử dụngứng dụng "như" người dùng Với giả mạo yêu cầu, kẻ tấn công cầnkhông bao giờ thực sự biết phiên mã thông báo của nạn nhân Thay vào
đó, những kẻ tấn công khai thác các hành vi bình thường của các trìnhduyệt web để chiếm quyền điều khiển mã thông báo của người sử dụng,làm cho nó được sử dụng để thực hiện các yêu cầu mà người sử dụngkhông có ý định để thực hiện
- JSON Hijacking: phát sinh từ trong một chính sách có chung nguồn
gốc Nó cho phép một trang web độc hại lấy và xử lý dữ liệu từ một tênmiền khác
- Session fixation: thường phát sinh khi một ứng dụng tạo ra một phiên vô
danh cho mỗi người dùng khi họ lần đầu tiên truy cập ứng dụng Nếuứng dụng có chứa một chức năng đăng nhập, phiên ẩn danh này sẽ đượctạo ra trước khi đăng nhập và sau đó nâng cấp thành một chứng thực saukhi họ đã đăng nhập Kể tấn công bằng cách nào đó gửi phiên này chonạn nhân Sau khi người dùng đã đăng nhập, những kẻ tấn công có thể sửdụng thẻ để chiếm quyền điều khiển phiên làm việc của người dùng
- Attacking ActiveX Controls: Khi một ứng dụng cài đặt một điều khiển đểgọi nó từ các trang riêng của mình Một khi điều này xảy ra, bất kỳ trangweb khác truy cập bởi người sử dụng cũng có thể được điều khiển
2.8 Automating Customized Attacks
Việc tấn công một ứng dụng có hiệu quả hay không liên quan đến quá trìnhhoạt động của ứng dụng web và kỹ thuật tấn công, thăm dò các lỗ hổng của mình
Để làm tốt việc này đòi hỏi bạn phải có kinh nghiệm và có khả năng tư duy logic,trực giác tốt để phán đoán các trường hợp Trong thực tế các cuộc tấn công thườngđược tùy biến phù hợp với các tương tác và hoạt động của ứng dụng web Thực hiệncác cuộc tấn công bằng tay có thể rất mất thời gian và dễ bị sai lầm Các hacker giỏithường tạo ra các cuộc tấn công chuyên nghiệp vào ứng dụng web và hơn nữa họ
Trang 23còn tìm cách để tự động hóa quá trình tấn công để chúng trở nên dễ dàng, nhanhhơn, và hiệu quả hơn.
Phương pháp này kết hợp những ưu điểm của trí tuệ con người và sức mạnhtính toán bằng máy tính để nâng cao khả năng tấn công
Phân loại Automating Customized Attacks:
• Enumerating identifiers - Hầu hết các ứng dụng sử dụng các loại tên địnhdanh để chỉ các hạng mục dữ liệu và tài nguyên, chẳng hạn như số tàikhoản, tên người dùng, ID Nếu phải quan tâm các định danh với một sốlượng lớn và liệt kê những thông tin cần quan tâm Trong trường hợpnày, bạn có thể sử dụng Automating Customized để làm việc thông quamột danh sách có thể là các tên định danh hoặc chu kì hoạt động của cácứng dụng
Ví dụ: một cuộc tấn công để liệt kê các tên định danh nơi một ứngdụng sử dụng một tham số để tải nội dung, cụ thể :
http://mdsec.net/app/ShowPage.ashx?PageNo=10069Trong quá trình duyệt qua ứng dụng, bạn phát hiện ra một lượng lớn
số PageNovalues hợp lệ Nhưng để xác định tất cả các giá trị hợp lệ ,bạn cần phải làm việc trên toàn bộ dữ liệu Việc này không khả thi nếuthực hiện bằng tay
• Harvesting data- Nhiều loại lỗ hổng ứng dụng web cho phép bạn tríchxuất dữ liệu hữu ích hoặc cá nhân từ các ứng dụng cụ thể Ví dụ, mộttrang hồ sơ cá nhân có thể hiển thị chi tiết thông tin cá nhân và ngânhàng của người sử dụng hiện tại Thông qua một khiếm khuyết kiểm soáttruy cập, bạn có thể xem các trang hồ sơ cá nhân của bất kỳ người sửdụng nào - nhưng chỉ xem được một người sử dụng tại một thời điểm
Để thu thập dữ liệu này bạn có thể làm hàng ngàn lần công việc này Đểkhông phải làm như vậy, bạn có thể sử dụng một cuộc tấn côngAutomating Customized để nhanh chóng nắm bắt tất cả các dữ liệu một
Trang 24cách hữu ích nhất.
• Web application fuzzing: Trong một ứng dụng lớn, nhờ việc vẽ bản đồbạn có thể xác định được hàng chục yêu cầu riêng biệt mà bạn cần phảithăm dò, mỗi lần thăm dò có chứa rất nhiều các thông số khác nhau.Kiểm tra từng trường hợp bằng tay sẽ tốn nhiều thời gian và mệt mỏi và
có thể bỏ sót một số lượng lớn dữ liệu Nhờ việc sử dụng AutomatingCustomized, bạn có thể nhanh chóng tạo ra rất lớn các yêu cầu có chứachuỗi tấn công thông thường và nhanh chóng đánh giá câu trả lời củamáy chủ để phục vụ trong các trường hợp điều tra
2.9 Attacking NativeCompiled Applications
Phần này bao gồm 3 loại:
- Lỗi tràn bộ nhớ đệm (buffer overflows): là một lỗi lập trình có thể gây
ra một ngoại lệ truy nhập bộ nhớ máy tính và chương trình bị kết thúc,hoặc khi người dùng có ý phá hoại, họ có thể lợi dụng lỗi này để phá vỡ
an ninh hệ thống Lỗi tràn bộ đệm là một điều kiện bất thường khi mộttiến trình lưu dữ liệu vượt ra ngoài biên của một bộ nhớ đệm có chiều dài
cố định Kết quả là dữ liệu đó sẽ đè lên các vị trí bộ nhớ liền kề Dữ liệu
bị ghi đè có thể bao gồm các bộ nhớ đệm khác, các biến và dữ liệu điềukhiển luồng chạy của chương trình (program flow control) Các lỗi tràn
bộ đệm có thể làm cho một tiến trình đổ vỡ hoặc cho ra các kết quả sai.Các lỗi này có thể được kích hoạt bởi các dữ liệu vào được thiết kế đặcbiệt để thực thi các đoạn mã phá hoại hoặc để làm cho chương trình hoạtđộng một cách không như mong đợi
- Integer overflows: Một chuỗi nguyên ngắn có kích thước chứa 16 bit,
đủ cho giá trị của nó nằm trong khoảng giữa 0 và 65.535 Khi một chuỗi
có độ dài 65.535 được gửi, các chương trình bổ sung thêm điều này, vàgiá trị kết thúc tốt đẹp để trở thành 0 Một bộ đệm chiều dài bằng khôngđược phân bổ, và tên người dùng lâu được sao chép vào nó, gây ra tràn
bộ đệm vừa được cấp đó
Trang 25- Lỗ hổng chuỗi định dạng: phát sinh khi đầu vào bị user-controllable
kiểm soát được thông qua như các tham số chuỗi định dạng một hàmmang tính xác định mà có thể bị sử dụng sai
2.10 Attacking Application Architecture
Kiến trúc ứng dụng web là một lĩnh vực quan trọng của an ninh mạng nhưnglại thường xuyên bị bỏ qua khi thẩm định sự an toàn của các ứng dụng
Một phạm vi khác của các mối đe dọa bảo mật là phát sinh trong môi trườngnhiều ứng dụng được lưu trữ trên một cơ sở hạ tầng, hoặc thậm chí chia sẻ cácthành phần chung của một ứng dụng quá rộng Trong những tình huống này, các lỗihay mã độc trong một ứng dụng đôi khi có thể được khai thác để làm ảnh hưởng tớitoàn bộ môi trường của các ứng dụng
Trong phần này chúng ta sẽ xem xét một vài cấu hình kiến trúc khác nhau và
mô tả cách bạn có thể khai thác khiếm khuyết trong kiến trúc ứng dụng để thúc đẩycuộc tấn công của bạn
Tiered Architectures
Nhiều ứng dụng web sử dụng một kiến trúc đa tầng, trong đó giao diện củaứng dụng người dùng và lưu trữ dữ liệu được chia sẻ giữa nhiều lớp, có thể sử dụngcông nghệ khác nhau và được thực hiện trên máy tính vật lý khác nhau Một kiếntrúc ba lớp chung liên quan đến các lớp sau đây:
- Lớp trình bày, thực hiện các giao diện của ứng dụng
- Lớp ứng dụng, mà thực hiện logic ứng dụng cốt lõi
- Lớp dữ liệu, cung cấp lưu trữ và xử lý dữ liệu ứng dụng
Dưới đây là các dạng tấn công kiến trúc tầng:
- Khai thác mối quan hệ giữa các tầng
- Phá vỡ tầng khác
Shared Hosting and Application Service Providers
Nhiều tổ chức sử dụng các nhà cung cấp bên ngoài để giúp cung cấp các ứngdụng web của họ cho nhiều người Những thỏa thuận từ dịch vụ lưu trữ đơn giản,trong đó một tổ chức được cho quyền truy cập vào một trang web cơ sở dữ liệu máy
Trang 26chủ, thông qua các nhà cung cấp dịch vụ ứng dụng.
Hầu hết các nhà cung cấp dịch vụ lưu trữ web và các ứng dụng có nhiềukhách hàng và thường hỗ trợ nhiều ứng dụng của khách hàng bằng cách sử dụng cơ
sở hạ tầng như nhau, hoặc cơ sở hạ tầng kết nối chặt chẽ
Các trang web được lưu trữ trên hệ thống chia sẻ là mục tiêu chính trong việclàm giảm uy tín của nhiều trang web, bởi vì khi làm ảnh hưởng đến một máy chủchia sẻ đơn thường từ đó kẻ tấn công có thể kích hoạt chúng để tấn công hàng trămtrang web dường như tự trị trong một thời gian ngắn
Dưới đây là một số dạng tấn công:
- Hosting ảo(Virtual hosting)
- Chia sẻ ứng dụng dịch vụ(Shared Application Services)
- Tấn công vào môi trường chung(Attacking Shared Environments)
2.11 Attacking the Application Server
Một ứng dụng web phụ thuộc vào các lớp của công nghệ web, bao gồm cácmáy chủ web, hệ điều hành, và cơ sở hạ tầng mạng Tất cả các thành phần này đều
có thể là mục tiêu của kẻ tấn công
Cho đến nay, chưa đưa ra được khác biệt giữa một máy chủ web và máy chủứng dụng, bởi vì các cuộc tấn công nhằm mục tiêu là các chức năng ứng dụng,không phân biệt nó được cung cấp như thế nào Trong thực tế, phần lớn các lớptrình bày, giao tiếp với các thành phần back-end, và các vấn đề an ninh cốt lõi có thểđược quản lý bởi các ứng dụng container Điều này có thể cung cấp phạm vi bổsung cho một cuộc tấn công
Các lỗ hổng bảo mật mà kẻ tấn công có thể khai thác để tấn công máy chủứng dụng được chia thành hai loại lớn:tấn công vào các lỗ hổng trong cấu hình củamáy chủ,và tấn công vào lỗ hổng bảo mật trong phần mềm máy chủ ứng dụng
Tấn công vào các lỗ hổng trong cấu hình của máy chủ:
- Thông tin mặc định: giao diện quản trị có các thông tin mặc định được cốđịnh và không được thay đổi cài đặt
- Nội dung mặc định
Trang 27- Danh mục mặc định
- Phương thức truyền dữ liệu WebDAV
- Sử dụng các máy chủ ứng dụng như một proxy
- Cấu hình sai máy chủ ảo
Tấn công vào lỗ hổng bảo mật trong phần mềm máy chủ ứng dụng:
- Lỗ hổng khung ứng dụng
- Lỗ hổng quản lý bộ nhớ
- Encoding and Canonicalization
- Lỗ hổng tìm kiếm trên máy chủ web
Trang 28và cá nhân thường có một cổng thông tin truy cập và sẽ yêu cầu khách hàng của họphải nhập thông tin tên người dùng và mật khẩu của khách hàng, nếu thông tin cógiá trị(hợp lệ), khách hàng sẽ được chuyển đến trang chủ của người dùng cụ thể.Quá trình này được gọi là xác thực Một khi người dùng được xác thực, máy chủweb sẽ thiết lập và cho phép người dùng có thể sử dụng tài nguyên thích hợp đốivới người dùng đó Bất cứ người dùng nào có gắng truy cập vào một tài nguyên nào
đó, máy chủ web sẽ kiểm tra xem người dùng có quyền truy cập vào tài nguyên nàyhay không Quá trình này được gọi là ủy quyền
Từ những quyền hạn mà máy chủ web cung cấp cho người dùng này, tin tặc
có thể dùng các phương pháp để chiếm tên người dùng và mật khẩu của khách hàng
để truy cập vào tài nguyên của khách hàng Trong phần này chúng tôi sẽ tìm hiểu vềcác loại xác thực phổ biến, thảo luận về các lỗ hổng, và các cuộc tấn công chống lạixác thực
3.1.1: Điểm yếu trong thiết kế cơ chế xác thực
3.1.1.1: Mật khẩu yếu
Nhiều ứng dụng web không có hoặc rất ít sử dụng việc kiểm soát về chấtlượng mật khẩu của người sử dụng Chúng ta thường gặp phải các ứng dụng chophép người dùng đặt các mật khẩu yếu như là:
- Rất ngắn hoặc trống
- Các từ có trong từ điển hay tên
- Giống tên người dùng
- Thiết lập một giá trị mặc định
Trang 29Hình 3-1 cho thấy một ví dụ về quy định chất lượng mật khẩu Người sửdụng thường có ít nhận thức về vấn đề an ninh Do đó, rất có thể một ứng dụngkhông tuân thủ tiêu chuẩn mật khẩu mạnh nên sẽ có mộtsố lượng lớn các tài khoảnngười dùng với mật khẩu yếu được thiết lập Một kẻ tấn công có thể dễ dàng đoáncác mật khẩu tài khoản, từ đó có thể truy cập trái phép tới các ứng dụng bằng tàikhoản người dùng.
Hình 3-3: Một ứng dụng thực thi các quy định chất lượng mật khẩu
Cách phát hiện các quy định liên quan đến chất lượngmật khẩu:
- Xem lại quy định được mô tả trong bất kỳ các trang web
- cố gắng để đăng ký nhiều tài khoảnvới các loại mật khẩu yếu để khámphá những gì quy định được đưa ra
- Nếu bạn kiểm soát một tài khoản và có thể thay đổi mật khẩu, cố gắng đểthay đổi mật khẩu của bạn để giá trị yếu khác nhau
3.1.1.2: Brute-Forcible Login
Chức năng đăng nhập sẽ đưa ra một lời mời mở cho kẻ tấn công cố gắngđoán tên người dùng và mật khẩu từ đó cho phép truy cập vào các ứng dụng Nếuứng dụng cho phép kẻ tấn công đăng nhập lặp đi lặp lại với mật khẩu khác nhau chođến khi dự đoán chính xác thì ứng dụng đó rất rễ bị đột nhập, thậm chí cả một kẻtấn công nghiệp dư cũng có thể thực hiện được tấn công
Trong trường hợp này, kẻ tấn côngsẽ sử dụng kỹ thuật tự động để cố gắng
Trang 30đoán mật khẩu, dựa trên danh sách dài các giá trị chung Ngày nay băng thông vàkhả năng xử lý của các nhà mạng rất tốt, cho nên nó có thể xử lý hàng ngàn lượtđăng nhập mỗi phút từ một máy tính tiêu chuẩn và kết nối CDSL Thậm chí nhiềumật khẩu mạnh nhất cuối cùng cũng sẽ bị phá vỡ bởi phương pháp này.
Hình 3-4: Một cuộc tấn công dự đoán mật khẩu thành công
Các bước tấn công:
- Đăng nhập nhiều lần và cố gắng theo dõi các thông báo lỗi nhận được
- Sau khoảng 10 lần đăng nhập thất bại, nếu ứng dụng không trả về bất kỳthông báo nào về khóa tài khoản có lẽ ứng dụng web không có chính sáchkhóa tài khoản
- Nếu bạn không kiểm soát bất kỳ tài khoản, cố gắng liệt kê một tên ngườidùng hợp lệ và thực hiện một số thông tin đăng nhập, giám sát đối với bất kỳthông báo lỗi về khóa tài khoản
- Gắn kết một cuộc tấn công brute-force, đầu tiên xác định sự khác biệt tronghành vi của ứng dụng khi đăng nhập thành công và thất bại
- Tạo được một danh sách tên người dùng thông thường và một danh sách cácmật khẩu phổ biến Sử dụng bất kỳ thông tin thu được về quy định chấtlượng mật khẩu để điều chỉnh danh sách mật khẩu tránh trường hợp thửnghiệm không cần thiết
- Sử dụng một công cụ thích hợp hoặc một kịch bản để nhanh chóng tạo ra các
Trang 31yêu cầu đăng nhập sử dụng tất cả các hoán vị của những tên người dùng vàmật khẩu Theo dõi phản ứng của máy chủ để xác định đăng nhập đượcthành công.
3.1.1.3: Verbose Failure Messages
- Khi đăng nhập một ứng dụng có thể kết hợp nhiều thông tin cùng một lúc
để xác thực như tên tài khoản, mật khẩu, câu hỏi bí mật, mã pin
- Nếu đăng nhập thất bại, tất nhiên bạn có thể suy luận rằng ít nhất một phầnthông tin không chính xác Tuy nhiên, nếu ứng dụng cho bạn biết phầnthông tin không hợp lệ, bạn có thể khai thác hành vi này để giới hạn phạm
- Ghi lại từng chi tiết câu trả lời của máy chủ sau mỗi lần cố gắng đăng nhập,bao gồm các mã trạng thái, bất kỳ chuyển hướng, thông tin hiển thị trênmàn hình, và bất kỳ sự khác biệt ẩn trong mã nguồn trang web HTML Sửdụng proxy của bạn để chặn một lịch sử đầy đủ tất cả lưu lượng đến và đi từmáy chủ
- Tìm cách phát hiện sự khác biệt trong câu trả lời của máy chủ để các cốgắng đăng nhập lại
- Nếu thất bại, ta có thể lặp lại với các tên đăng nhập có thể đã được gửi đitrong ứng dụng(VD: tự động đăng ký, thay đổi mật khẩu, quên mật khẩu)
- Nếu có sự khác biệt được phát hiện trong câu trả lời của máy chủ về tênngười dùng hợp lệ và không hợp lệ, có được một danh sách tên người dùngthông thường và sử dụng một kịch bản tùy chỉnh hoặc công cụ tự động đểnhanh chóng gửi từng tên người dùng và lọc các phản ứng và nhận biết đó
Trang 32là tên người dùng hợp lệ.
3.1.1.4: Vulnerable Transmission of Credentials
Nếu một ứng dụng sử dụng một kết nối không được mã hóa HTTP để truyềntải thông tin đăng nhập, kẻ nghe trộm là người có vị trí phù hợp trên mạng có thểchặn và biết được thông tin đó
Ngay cả khi đăng nhập trên giao thức HTTPS, thông tin vẫn có thể được tiết
lộ cho bên trái phép nếu các ứng dụng xử lý chúng một cách không an toàn
3.1.1.5: Password Change Functionality
Chức năng thay đổi mật khẩu là cần thiết cho một cơ chế xác thực vì:
- Thay đổi mật khẩu định kỳ sẽ giảm mối đe dọa liên quan tới mật khẩu Nólàm việc đoán mật khẩu của kẻ tấn công trở nên khó khăn hơn
- Người dùng nghi ngờ rằng mật khẩu của họ có thể đã bị xâm nhập
có thể nhanh chóng thay đổi mật khẩu của họ để làm giảm nguy cơ
sử dụng trái phép
Mặc dù nó là một phần cần thiết của cơ chế xác thực hiệu quả, nhưng chứcnăng này dễ bị tấn công do lỗi thiết kế Chức năng thay đổi mật khẩu của nhiều ứngdụng web có thể truy cập mà không cần xác thực và làm như sau:
- Cung cấp chi tiết một thông báo lỗi cho biết liệu tên người dùng là hợp lệ
- Cho phép dự đoán không hạn chế “ mật khẩu hiện tại”
- Kiểm tra xem "mật khẩu mới" và "xác nhận mật khẩu mới" có giá trị nhưnhau chỉ sau khi xác nhận mật khẩu hiện, do đó cho phép một cuộc tấn công
Trang 33thành công trong việc phát hiện ra các mật khẩu hiện tại.
Các bước tấn công:
- Xác định các chức năng thay đổi mật khẩu trong ứng dụng
- Cố gắng để xác định những hành vi có thể được sử dụng cho tên ngườidùng hoặc liệt kê các cuộc tấn công brute-force
3.1.1.6: Forgotten Password Functionality
Các cơ chế cho việc khôi phục từ việc quên mật khẩu cũng sẽ gây ra lỗ hổngrất lớn để kẻ tấn công có thể khai thác
Điểm yếu trong thiết kế chức năng quên mật khẩu thường xuyên làm cho cácliên kết yếu nhất mà tại đó kẻ tấn công có thể khai thác Một số loại điểm yếu thiết
kế thường có thể được tìm thấy:
- Chức năng quên mật khẩu thường liên quan đến việc trình bày cho ngườidùng một cách thức thứ hai ở vai trò của tên đăng nhập chính, như thể hiệntrong Hình 3-4 Cách thức này thường là dễ dàng hơn nhiều cho một kẻ tấncông có thể đoán mật khẩu của người dùng
Hình 3-6: Khôi phục mật khẩu người dùng
- Trong một số ứng dụng, phương thức phục hồi mật khẩu được thay thếbằng những câu hỏi đơn giản được thiết lập trong quá trình đăng ký
Các bước tấn công:
- Xác định chức năng quên mật trong ứng dụng
- Hiểu được hoạt động của các chức năng quên mât khẩu
Trang 34- Cố gắng xác định những hành vi trong cơ chế quên mật khẩu có thể khaithác làm cơ sở cho tên đăng nhập hoặc liệt kê các cuộc tấn công brute-force.
- Nếu ứng dụng tạo ra một email có chứa một URL phục hồi để đáp ứng vớiyêu cầu mật khẩu bị lãng quên, có được một số các URL, và cố gắng để xácđịnh hình thức có thể cho phép bạn dự đoán các URL cấp cho người dùngkhác Sử dụng các kỹ thuật tương tự như có liên quan đến phân tích thẻphiên cho khả năng dự đoán
3.1.1.7: “Remember Me” Functionality
Các ứng dụng thường sử dụng chức năng “ghi nhớ” như là một tiện nghi chongười sử dụng Bằng cách này, người dùng không cần phải nhập lại tên đăng nhập
và mật khẩu của họ mỗi lần sử dụng các ứng dụng Chức năng này thường không antoàn do lỗi thiết kế và dễ dàng bị tấn công
Các bước tấn công:
- Kích hoạt chức năng “ghi nhớ”, và xác định xem chức năng “ghi nhớ” đãthực sự đầy đủ hoặc chỉ nhớ tên người đó và vẫn đòi hỏi họ phải nhập mậtkhẩu lần ghé thăm sau
- Kiểm tra chặt chẽ tất cả các cookie liên tục được thiết lập Tìm kiếm bất kỳ
dữ liệu được lưu và xác định người sử dụng một cách rõ ràng hoặc có chứamột số dự đoán nhận dạng của người sử dụng
- Cố gắng sửa đổi các nội dung của cookie để cố gắng đảm bảo các ứng dụng
mà người dùng khác đã lưu lại chi tiết của mình trên máy tính của bạn
3.1.1.8: User Impersonation Functionality
Một số ứng dụng cho phép người quản trị có thể truy cập đến tài nguyêm củangười dùng
Một số lỗi thiết kế thường gặp với chức năng mạo danh:
- Có thể thực hiện các chức năng mà không bị kiểm soát
- Kẻ tấn công có thể truy cập vào tài khoản người dùng mà không cần xácthực
- Dẫn đến việc leo thang đặc quyền
Trang 35Hình 3-7: Tấn công mạo danh.
Các bước tấn công:
- Xác định bất kỳ chức năng mạo danh người dùng trong ứng dụng
- Cố gắng sử dụng các chức năng mạo danh trực tiếp đóng vai người dùngkhác
- Nếu thành công trong việc sử dụng các chức năng, cố gắng để mạo danh bất
kỳ người dùng quản trị biết hoặc đoán, để nâng cao đặc quyền
3.1.1.9: Incomplete Validation of Credentials
Cơ chế xác thực được thiết kế tốt là khi thực thi các yêu cầu khác nhau trênmật khẩu chẳng hạn như độ dài tối thiểu hoặc sự hiện diện của cả chữ viết hoa vàchữ thường, ký tự đặc biệt Tương ứng, một số xác thực được thiết kế với cơ chếxác thực kém không những không thực thi các yêu cầu tốt và không đảm bảo được
sự an toàn cho tài khoản của người sử dụng
Trang 36thành công.
3.1.1.10: Predictable Usernames
Một số ứng dụng tự động tạo ra tên tài khoản người dùng theo một trình tự(VD:cust5331, cust5332, vv) Một khi ứng dụng hoạt động như vậy, kẻ tấn công cóthể phân biệt các trình tự và nhanh chóng đạt được một danh sách có khả năng chứađầy đủ các tài khoản người dùng hợp lệ, và sử dụng làm cơ sở cho các cuộc tấncông
Các bước tấn công:
- Nếu tên người dùng được tạo ra bởi các ứng dụng, cố gắng để có được một
số tên người dùng liên tiếp và xác định trình tự bất kỳ hoặc mẫu có thểđược phân biệt
- Từ đó, suy ngược trở lại để có được một danh sách tên người dùng có thểhợp lệ
3.1.1.11: Predictable Initial Passwords
Trong một số ứng dụng, người dùng được tạo ra cùng một lúc hoặc theo một
số lượng khá lớn và được tự động gán mật khẩu ban đầu Các công cụ tạo ra mậtkhẩu có thể cho phép kẻ tấn công dự đoán các mật khẩu của người sử dụng ứngdụng khác Loại này phổ biến trên các ứng dụng mạng nội bộ của công ty
Trong một số trường hợp tất cả người dùng đều nhận được cùng một mậtkhẩu, hoặc mật khẩu được tạo ra dễ dàng có thể đoán ra được
3.1.1.12: Insecure Distribution of Credentials
Trang 37Nhiều ứng dụng sử dụng một quá trình trong đó các thông tin cho tài khoảnmới tạo được phân phối cho người sử dụng thông qua sự tương tác của họ với cácứng dụng (ví dụ, qua đường bưu điện, thư điện tử, tin nhắn văn bản hoặc tin nhắnSMS).
Trong một số trường hợp, quá trình phân phối này còn có chứa cả tên ngườidùng và mật khẩu, điều này để lộ ra các nguy cơ về bảo mật rất cao
- Cố gắng để tái sử dụng một URL kích hoạt nhiều lần, và xem các ứng dụngcho phép điều này Nếu không, hãy thử khóa các tài khoản trước khi tái sửdụng các URL, và xem nếu nó hiện đang làm việc
3.1.2: Điểm yếu trong việc thực hiện xác thực
3.1.2.1: Fail-Open Login Mechanisms
Fail-open logic là một loại lỗ hổng logic, nó có hậu quả đặc biệt nghiêmtrọng trong cơ chế xác thực
Các bước tấn công:
- Sử dụng một tài khoản mà bạn có thể kiểm soát để đang nhập một cách hợp lệ, sau
đó sử dụng proxy của bạn để ghi tất các dữ liệu được gửi tới các ứng dụng và câutrả lời nhận được
- Lặp lại quá trình đăng nhập nhiều lần, sửa đổi thành phần của dữ liệu gửi trongnhững cách ngẫu nhiên
- Xem xét chặt chẽ phản ứng của ứng dụng để xác định bất kỳ sự khác biệt của từngtrường hợp
- Ghi nhận những quan sát trả về vào khung trong từng trường hợp thử nghiệm củabạn Khi một người thay đổi gây ra một sự thay đổi trong hành vi, hãy thử kết hợp
Trang 38nó với các thay đổi khác để đẩy logic của ứng dụng đến giới hạn của nó.
3.1.2.2: Defects in Multistage Login Mechanisms
Một số ứng dụng sử dụng cơ chế đăng nhập phức tạp liên quan đến nhiềugiai đoạn, chẳng hạn như sau:
- Nhập vào một tên người dùng và mật khẩu
- Các con số cụ thể từ mã PIN hoặc một từ đáng nhớ
- Giá trị hiển thị trên một thẻ vật lý thay đổi
Cơ chế đăng nhập nhiều tầng được thiết kế để cung cấp bảo mật cao hơn sovới mô hình đơn giản dựa trên tên người dùng và mật khẩu Thông thường, giaiđoạn đầu tiên đòi hỏi người sử dụng định danh với một tên người dùng hoặc mụctương tự, và giai đoạn tiếp theo thực hiện kiểm tra xác thực khác nhau Cơ chế nhưvậy thường chứa một lỗ hổng bảo mật lớn
Một số cơ chế đăng nhập sử dụng một câu hỏi ngẫu nhiên tại một trong cácgiai đoạn của quá trình đăng nhập
- Lặp lại quá trình đăng nhập nhiều lần với yêu cầu được thay đổi
3.1.2.3: Insecure Storage of Credentials
Nếu một cửa hàng ứng dụng cung cấp thông tin đăng nhập không an toàn, thì
an toàn cơ chế đăng nhập bị phá vỡ, mặc dù có thể không có lỗ hổng trong quá trìnhđịnh danh người dùng
Người ta thường gặp phải các ứng dụng web, trong đó thông tin người dùngđược lưu trữ trong cơ sở dữ liệu không an toàn Điều này có thể liên quan đến mậtkhẩu được lưu trữ dạng cleartext Nhưng nếu mật khẩu được băm và sử dụng một