9 kiểu tấn công tiêm chích ứng dụng web phổ biến

Spread the love

Vấn đề với các ứng dụng web là chúng được tiếp xúc công khai với hàng tỷ người dùng internet, nhiều người trong số họ sẽ muốn phá vỡ các biện pháp bảo mật của nó – vì bất kỳ lý do gì.

Trong những ngày đầu của Internet, một trong những phương thức tấn công phổ biến nhất là brute force cơ bản, đơn giản. Các bot thường thực hiện các cuộc tấn công này – hoặc những người có nhiều thời gian nghỉ – đã thử hàng trăm kiểu kết hợp tên người dùng và mật khẩu cho đến khi họ tìm thấy một kết hợp sẽ cấp quyền truy cập vào ứng dụng mục tiêu.

Các cuộc tấn công vũ phu không còn là mối đe dọa nhờ các chính sách mật khẩu, số lần đăng nhập hạn chế và hình ảnh xác thực. Nhưng tội phạm mạng thích khám phá các cách khai thác mới và sử dụng chúng để thực hiện các kiểu tấn công mới. Cách đây rất lâu, họ đã phát hiện ra rằng các trường văn bản trên các ứng dụng hoặc trang web có thể bị khai thác bằng cách nhập –hoặc chèn– văn bản không mong muốn vào chúng để buộc ứng dụng thực hiện điều gì đó mà nó không được phép thực hiện. Theo cách đó, cái gọi là các cuộc tấn công tiêm chích đã xuất hiện.

Các cuộc tấn công tiêm chích có thể được sử dụng không chỉ để đăng nhập vào một ứng dụng mà không cần biết tên người dùng và mật khẩu, mà còn để tiết lộ thông tin riêng tư, bí mật hoặc nhạy cảm hoặc thậm chí để chiếm quyền điều khiển toàn bộ máy chủ. Đó là lý do tại sao các cuộc tấn công này không chỉ là mối đe dọa đối với các ứng dụng web mà còn đối với người dùng có dữ liệu nằm trên các ứng dụng đó và trong trường hợp xấu nhất là đối với các ứng dụng và dịch vụ được kết nối khác.

tiêm mã

Chèn mã là một trong những kiểu tấn công tiêm chích phổ biến nhất. Nếu kẻ tấn công biết ngôn ngữ lập trình, khung, cơ sở dữ liệu hoặc hệ điều hành được ứng dụng web sử dụng, chúng có thể đưa mã qua các trường nhập văn bản để buộc máy chủ web thực hiện những gì chúng muốn.

Các kiểu tấn công tiêm nhiễm này có thể xảy ra trên các ứng dụng thiếu xác thực dữ liệu đầu vào. Nếu trường nhập văn bản cho phép người dùng nhập bất cứ thứ gì họ muốn, thì ứng dụng có khả năng bị khai thác. Để ngăn chặn các cuộc tấn công này, ứng dụng cần hạn chế nhiều nhất có thể những người dùng đầu vào được phép nhập.

Ví dụ: nó cần giới hạn lượng dữ liệu dự kiến, kiểm tra định dạng dữ liệu trước khi chấp nhận và hạn chế tập hợp các ký tự được phép.

Có thể dễ dàng tìm thấy các lỗ hổng chèn mã, chỉ bằng cách kiểm tra kiểu nhập văn bản của ứng dụng web với các loại nội dung khác nhau. Khi được tìm thấy, các lỗ hổng tương đối khó khai thác. Nhưng khi kẻ tấn công quản lý để khai thác một trong những lỗ hổng này, tác động có thể bao gồm việc mất tính bảo mật, tính toàn vẹn, tính khả dụng hoặc chức năng của ứng dụng.

tiêm SQL

Theo cách tương tự như tiêm mã, cuộc tấn công này chèn một tập lệnh SQL – ngôn ngữ được hầu hết các cơ sở dữ liệu sử dụng để thực hiện các thao tác truy vấn – vào trường nhập văn bản. Tập lệnh được gửi đến ứng dụng, ứng dụng này sẽ thực thi tập lệnh trực tiếp trên cơ sở dữ liệu của nó. Do đó, kẻ tấn công có thể đi qua màn hình đăng nhập hoặc thực hiện những việc nguy hiểm hơn, chẳng hạn như đọc dữ liệu nhạy cảm trực tiếp từ cơ sở dữ liệu, sửa đổi hoặc hủy dữ liệu cơ sở dữ liệu hoặc thực hiện các thao tác quản trị trên cơ sở dữ liệu.

  Google Workspace là gì và nó có thay thế hoàn toàn G Suite không?

Các ứng dụng PHP và ASP dễ bị tấn công SQL injection do các giao diện chức năng cũ hơn của nó. Các ứng dụng J2EE và ASP.Net thường được bảo vệ tốt hơn trước các cuộc tấn công này. Khi một lỗ hổng SQL injection được tìm thấy –và chúng có thể được tìm thấy dễ dàng – tầm quan trọng của các cuộc tấn công tiềm năng sẽ chỉ bị giới hạn bởi kỹ năng và trí tưởng tượng của kẻ tấn công. Do đó, tác động của một cuộc tấn công SQL injection chắc chắn là rất cao.

tiêm lệnh

Các cuộc tấn công này cũng có thể xảy ra, chủ yếu là do xác thực đầu vào không đầy đủ. Chúng khác với các cuộc tấn công chèn mã ở chỗ kẻ tấn công chèn các lệnh hệ thống thay vì các đoạn mã lập trình hoặc tập lệnh. Do đó, hacker không cần biết ngôn ngữ lập trình mà ứng dụng dựa trên hoặc ngôn ngữ được sử dụng bởi cơ sở dữ liệu. Nhưng họ cần biết hệ điều hành được sử dụng bởi máy chủ lưu trữ.

Các lệnh hệ thống được chèn vào được thực thi bởi hệ điều hành máy chủ với các đặc quyền của ứng dụng, có thể cho phép hiển thị nội dung của các tệp tùy ý nằm trên máy chủ, để hiển thị cấu trúc thư mục của máy chủ, để thay đổi mật khẩu người dùng, trong số những thứ khác .

Quản trị hệ thống có thể ngăn chặn các cuộc tấn công này bằng cách giới hạn cấp độ truy cập hệ thống của các ứng dụng web đang chạy trên máy chủ.

Tập lệnh chéo trang

Bất cứ khi nào một ứng dụng chèn đầu vào từ một người dùng vào đầu ra mà nó tạo ra mà không xác thực hoặc mã hóa nó, nó sẽ tạo cơ hội cho kẻ tấn công gửi mã độc hại đến một người dùng cuối khác. Các cuộc tấn công Cross-Site Scripting (XSS) tận dụng những cơ hội này để đưa các tập lệnh độc hại vào các trang web đáng tin cậy, tập lệnh này cuối cùng sẽ được gửi đến những người dùng khác của ứng dụng, những người này sẽ trở thành nạn nhân của kẻ tấn công.

Trình duyệt của nạn nhân sẽ thực thi tập lệnh độc hại mà không biết rằng nó không đáng tin cậy. Do đó, trình duyệt sẽ cho phép nó truy cập mã thông báo phiên, cookie hoặc thông tin nhạy cảm được trình duyệt lưu trữ. Nếu được lập trình đúng cách, các tập lệnh thậm chí có thể viết lại nội dung của tệp HTML.

Các cuộc tấn công XSS thường có thể được chia thành hai loại khác nhau: được lưu trữ và phản ánh.

Trong các cuộc tấn công XSS được lưu trữ, tập lệnh độc hại nằm vĩnh viễn trên máy chủ mục tiêu, trong diễn đàn tin nhắn, cơ sở dữ liệu, nhật ký khách truy cập, v.v. Nạn nhân nhận được nó khi trình duyệt của họ yêu cầu thông tin được lưu trữ. Trong các cuộc tấn công XSS được phản ánh, tập lệnh độc hại được phản ánh trong một phản hồi bao gồm đầu vào được gửi đến máy chủ. Đây có thể là một thông báo lỗi hoặc một kết quả tìm kiếm chẳng hạn.

  Cách khắc phục lỗi Amazon Echo 7: 3: 0: 0: 1

tiêm XPath

Kiểu tấn công này có thể xảy ra khi ứng dụng web sử dụng thông tin do người dùng cung cấp để xây dựng truy vấn XPath cho dữ liệu XML. Cách thức hoạt động của các cuộc tấn công này tương tự như SQL injection: những kẻ tấn công gửi thông tin không đúng định dạng đến ứng dụng để tìm hiểu xem dữ liệu XML được cấu trúc như thế nào, sau đó chúng tấn công lại để truy cập dữ liệu đó.

XPath là một ngôn ngữ tiêu chuẩn, giống như SQL, bạn có thể chỉ định các thuộc tính mà bạn muốn tìm. Để thực hiện một truy vấn trên dữ liệu XML, các ứng dụng web sử dụng đầu vào của người dùng để đặt một mẫu mà dữ liệu phải khớp. Bằng cách gửi đầu vào không đúng định dạng, mẫu có thể biến thành một thao tác mà kẻ tấn công muốn áp dụng cho dữ liệu.

Không giống như những gì xảy ra với SQL, trong XPath, không có các phiên bản khác nhau. Điều này có nghĩa là việc tiêm XPath có thể được thực hiện trên bất kỳ ứng dụng web nào sử dụng dữ liệu XML, bất kể việc triển khai là gì. Điều đó cũng có nghĩa là cuộc tấn công có thể được tự động hóa; do đó, không giống như SQL injection, nó có khả năng bị kích hoạt đối với một số mục tiêu tùy ý.

Tiêm lệnh thư

Phương thức tấn công này có thể được sử dụng để khai thác các máy chủ email và ứng dụng xây dựng các câu lệnh IMAP hoặc SMTP với đầu vào của người dùng được xác thực không đúng cách. Đôi khi, các máy chủ IMAP và SMTP không có khả năng bảo vệ mạnh mẽ trước các cuộc tấn công, giống như trường hợp của hầu hết các máy chủ web và do đó có thể dễ bị khai thác hơn. Khi xâm nhập qua máy chủ thư, kẻ tấn công có thể tránh được các hạn chế như hình ảnh xác thực, số lượng yêu cầu hạn chế, v.v.

Để khai thác máy chủ SMTP, kẻ tấn công cần có tài khoản email hợp lệ để gửi tin nhắn với các lệnh được đưa vào. Nếu máy chủ dễ bị tổn thương, nó sẽ phản hồi các yêu cầu của kẻ tấn công, chẳng hạn như cho phép chúng ghi đè các hạn chế của máy chủ và sử dụng các dịch vụ của nó để gửi thư rác.

Việc tiêm IMAP có thể được thực hiện chủ yếu trên các ứng dụng webmail, khai thác chức năng đọc thư. Trong những trường hợp này, cuộc tấn công có thể được thực hiện bằng cách chỉ cần nhập vào thanh địa chỉ của trình duyệt web một URL có các lệnh được đưa vào.

tiêm CRLF

Việc chèn ký tự xuống dòng và ký tự nguồn cấp dữ liệu –kết hợp được gọi là CRLF– trong các trường nhập biểu mẫu web thể hiện một phương thức tấn công có tên là CRLF injection. Các ký tự vô hình này biểu thị phần cuối của một dòng hoặc phần cuối của một lệnh trong nhiều giao thức internet truyền thống, chẳng hạn như HTTP, MIME hoặc NNTP.

Ví dụ: việc chèn CRLF vào yêu cầu HTTP, theo sau là một số mã HTML nhất định, có thể gửi các trang web tùy chỉnh tới khách truy cập trang web.

  Làm thế nào để nhận được tư cách thành viên dùng thử miễn phí của khóa học Hero

Cuộc tấn công này có thể được thực hiện trên các ứng dụng web dễ bị tổn thương không áp dụng bộ lọc thích hợp cho đầu vào của người dùng. Lỗ hổng này mở ra cơ hội cho các kiểu tấn công tiêm nhiễm khác, chẳng hạn như XSS và tiêm mã, đồng thời cũng có thể dẫn đến một trang web bị tấn công.

Tiêm tiêu đề máy chủ

Trong các máy chủ lưu trữ nhiều trang web hoặc ứng dụng web, tiêu đề máy chủ trở nên cần thiết để xác định trang web hoặc ứng dụng web thường trú nào – mỗi trong số chúng được gọi là máy chủ ảo – sẽ xử lý yêu cầu đến. Giá trị của tiêu đề cho máy chủ biết máy chủ ảo nào sẽ gửi yêu cầu. Khi máy chủ nhận được tiêu đề máy chủ không hợp lệ, nó thường chuyển nó đến máy chủ ảo đầu tiên trong danh sách. Điều này tạo thành một lỗ hổng mà kẻ tấn công có thể sử dụng để gửi các tiêu đề máy chủ tùy ý đến máy chủ ảo đầu tiên trong máy chủ.

Thao tác với tiêu đề máy chủ thường liên quan đến các ứng dụng PHP, mặc dù nó cũng có thể được thực hiện với các công nghệ phát triển web khác. Các cuộc tấn công tiêu đề máy chủ hoạt động như các công cụ hỗ trợ cho các loại tấn công khác, chẳng hạn như đầu độc bộ đệm web. Hậu quả của nó có thể bao gồm việc kẻ tấn công thực hiện các hoạt động nhạy cảm, chẳng hạn như đặt lại mật khẩu.

tiêm LDAP

LDAP là một giao thức được thiết kế để tạo thuận lợi cho việc tìm kiếm tài nguyên (thiết bị, tệp, người dùng khác) trong mạng. Nó rất hữu ích cho mạng nội bộ và khi được sử dụng như một phần của hệ thống đăng nhập một lần, nó có thể được sử dụng để lưu trữ tên người dùng và mật khẩu. Truy vấn LDAP liên quan đến việc sử dụng các ký tự điều khiển đặc biệt ảnh hưởng đến điều khiển của nó. Những kẻ tấn công có thể thay đổi hành vi dự định của một truy vấn LDAP nếu chúng có thể chèn các ký tự điều khiển vào đó.

Một lần nữa, vấn đề gốc cho phép tấn công tiêm LDAP là đầu vào của người dùng được xác thực không đúng cách. Nếu văn bản mà người dùng gửi đến một ứng dụng được sử dụng như một phần của truy vấn LDAP mà không làm sạch nó, truy vấn có thể sẽ truy xuất danh sách tất cả người dùng và hiển thị danh sách đó cho kẻ tấn công, chỉ bằng cách sử dụng dấu hoa thị

ở đúng vị trí bên trong một chuỗi đầu vào.

Ngăn chặn các cuộc tấn công tiêm

Như chúng ta đã thấy trong bài viết này, tất cả các cuộc tấn công tiêm nhiễm đều hướng tới các máy chủ và ứng dụng có quyền truy cập mở cho bất kỳ người dùng internet nào. Trách nhiệm ngăn chặn các cuộc tấn công này được phân chia giữa các nhà phát triển ứng dụng và quản trị viên máy chủ.

Các nhà phát triển ứng dụng cần biết các rủi ro liên quan đến việc xác thực sai thông tin đầu vào của người dùng và tìm hiểu các phương pháp hay nhất để làm sạch thông tin đầu vào của người dùng với mục đích ngăn ngừa rủi ro. Quản trị viên máy chủ cần kiểm tra hệ thống của họ định kỳ để phát hiện các lỗ hổng và sửa chúng càng sớm càng tốt. Có nhiều tùy chọn để thực hiện các cuộc kiểm toán này, theo yêu cầu hoặc tự động.

x