Phát hiện các cuộc tấn công web (1)

0 0 0

Người đăng: Nguyen Nguyen

Theo Viblo Asia

Tấn công web là gì?

Ứng dụng web là các ứng dụng cung cấp dịch vụ cho người dùng thông qua giao diện trình duyệt. Ngày nay, ứng dụng web chiếm một phần lớn trong việc sử dụng internet. Các trang web như Google, Facebook và YouTube (không bao gồm ứng dụng di động) thực chất là ứng dụng web.

Một nghiên cứu của Acunetix cho thấy 75% các cuộc tấn công mạng đều ở cấp độ ứng dụng web.

Dưới đây là một số phương pháp tấn công được sử dụng để xâm nhập vào các ứng dụng web

  • SQL Injection
  • Cross Site Scripting
  • Command Injection
  • IDOR
  • RFI & LFI
  • File Upload (Web Shell)

Nếu phân tích cấu trúc của một cuộc tấn công, chúng ta có thể thấy rõ kịch bản tốt nhất là ngăn chặn cuộc tấn công ngay từ giai đoạn đầu. Đây là lý do tại sao có nhiều biện pháp bảo mật khác nhau nhằm ngăn chặn và phát hiện các mối đe dọa đối với ứng dụng web (quy tắc WAF, IPS, SIEM...).

Điều cần thiết là nhà phân tích SOC phải phát hiện và thực hiện các biện pháp phòng ngừa đối với các cuộc tấn công dựa trên ứng dụng web được kẻ tấn công ưa chuộng.

OWASP

Danh sách OWASP năm 2021 bao gồm các lỗ hổng bảo mật nghiêm trọng sau:

image.png

Cách thức hoạt động của ứng dụng web

các ứng dụng web giao tiếp bằng Giao thức Truyền Siêu văn bản (HTTP), giao thức HTTP nằm ở lớp 7 của mô hình OSI. Điều này có nghĩa là các giao thức như Ethernet, IP, TCP và SSL được sử dụng trước giao thức HTTP .

image.png

Giao tiếp HTTP diễn ra giữa máy chủ và máy khách. Đầu tiên, máy khách yêu cầu một tài nguyên cụ thể từ máy chủ. Máy chủ nhận được yêu cầu HTTP và gửi lại phản hồi (phản hồi HTTP) cho máy khách.

image.png

HTTP Requests

được sử dụng để truy xuất một tài nguyên cụ thể từ máy chủ web. Tài nguyên này có thể là tệp HTML, video, dữ liệu JSON, v.v. Nhiệm vụ của máy chủ web là xử lý phản hồi nhận được và hiển thị cho người dùng

image.png

Một HTTP request bao gồm:

  • Phương thức GET chỉ ra rằng tài nguyên "/" đang được yêu cầu từ máy chủ. Vì không có tên, ký hiệu "/" nghĩa là trang chính của máy chủ web đang được yêu cầu
  • trình duyệt sử dụng tiêu đề "Host" để xác định tài nguyên được yêu cầu thuộc về tên miền nào
  • Cookie thường được sử dụng để lưu trữ thông tin phiên
  • Tiêu đề “Upgrade-Insecure-Request” cho biết máy khách muốn giao tiếp bằng mã hóa (SSL)
  • Tiêu đề "User-Agent" chứa thông tin về trình duyệt và hệ điều hành của máy khách
  • Loại dữ liệu được yêu cầu nằm trong tiêu đề "Accept”
  • Kiểu mã hóa được máy khách chấp nhận nằm trong tiêu đề "Accept-Encoding"
  • Tiêu đề "Accept-Language" chứa thông tin ngôn ngữ của máy khách
  • Tiêu đề "Connection" hiển thị cách kết nối HTTP được thiết lập
  • Một dòng trống được chèn vào giữa tiêu đề yêu cầu HTTP và nội dung tin nhắn yêu cầu HTTP để tạo phân vùng
  • Bất kỳ dữ liệu nào khác cần gửi đến ứng dụng web đều nằm trong request message body

HTTP Responses

Khi máy chủ web nhận được HTTP request, nó sẽ thực hiện các kiểm tra và xử lý cần thiết, sau đó gửi tài nguyên được yêu cầu đến máy khách. Không có quy trình chuẩn nào cả, vì có nhiều công nghệ và thiết kế liên quan.

Một thông điệp phản hồi HTTP bao gồm một Status Line, Response Headers, and a Response Body. Status line chứa mã trạng thái và thông tin giao thức HTTP. Trong Response Header, một số tiêu đề được sử dụng cho nhiều mục đích khác nhau. Response Body chứa thông tin về tài nguyên được yêu cầu. Nếu một trang web được yêu cầu, thường sẽ có mã HTML trong Resoponse Body.

image.png

Phát hiện các cuộc tấn công SQL Injection

SQL Injection là phương thức tấn công quan trọng trong đó ứng dụng web trực tiếp đưa dữ liệu chưa được kiểm tra do người dùng cung cấp vào các truy vấn SQL. Có 3 loại SQL Injection. Đó là:

  • In-band SQLi (Classic SQLi): Khi một truy vấn SQL được gửi và phản hồi trên cùng một kênh
  • Inferential SQLi (Blind SQLi): Các truy vấn SQL nhận được phản hồi không thể nhìn thấy được
  • Out-of-band SQLi: Nếu phản hồi cho truy vấn SQL được truyền qua một kênh khác, Ví dụ: nếu kẻ tấn công nhận được phản hồi cho truy vấn SQL qua DNS

Trang đăng nhập là nơi xảy ra hầu hết các cuộc tấn công SQL Injection. Để phát hiện các cuộc tấn công SQL injection:

  • Khi kiểm tra một yêu cầu web, hãy kiểm tra tất cả các khu vực đến từ người dùng: Vì các cuộc tấn công SQL injection không chỉ giới hạn ở các khu vực biểu mẫu, bạn cũng nên kiểm tra các tiêu đề yêu cầu HTTP như "User-Agent".
  • Tìm kiếm từ khóa SQL: Tìm kiếm các từ như "INSERT", "SELECT" và "WHERE" trong dữ liệu nhận được từ người dùng.
  • Kiểm tra bất kỳ ký tự đặc biệt nào: Tìm dấu nháy đơn ('), dấu gạch ngang (-) hoặc dấu ngoặc đơn được sử dụng trong SQL hoặc các ký tự đặc biệt thường được sử dụng trong các cuộc tấn công SQL trong dữ liệu nhận được từ người dùng.
  • Làm quen với các payload tiêm SQL thường gặp: Mặc dù payload SQL thay đổi tùy theo ứng dụng web, kẻ tấn công vẫn sử dụng một số payload phổ biến để kiểm tra lỗ hổng tiêm SQL. Nếu bạn đã quen thuộc với các payload này, bạn có thể dễ dàng phát hiện các payload tiêm SQL

Cần:

  • Xác định xem có phải là một cuộc tấn công SQL injection không ( có thể sử dụng các ứng dụng web tự động giải mã URL)
  • xem xét thời gian yêu cầu, xem là tấn công tự động hay thủ công
  • xác định xem cuộc tấn công có thành công hay không bằng cách xem xét kích thước của phản hồi

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tài nguyên nghiên cứu sâu Html

1. Articles and standards. . HTML 5.

0 0 215

- vừa được xem lúc

Embedded Template in Go

Getting Start. Part of developing a web application usually revolves around working with HTML as user interface.

0 0 68

- vừa được xem lúc

Full Stack Developer Roadmap 2021

Cách để trở thành một Full Stack Web Developer trên thế giới hiện nay. Các công ty đang luôn săn đón những developer có nhiều kĩ năng để cung cấp cho họ sự linh hoạt trong các dự án.

0 0 56

- vừa được xem lúc

Những kiến thức hay về Gradient: Gradient đẹp nhất chỉ được tìm thấy ở ngoài thiên nhiên!

. Quen thuộc từ lâu với rất nhiều người, nền Gradient chỉ là những bức nền với 2 hay nhiều dải màu sắc được hòa trộn với nhau. Đơn giản là vậy, nhưng càng ngày Gradient càng phổ biến hơn trong thiết kế Website ngày nay.

0 0 309

- vừa được xem lúc

What Is Session Fixation?

Session Fixation là một kỹ thuật tấn công web. Kẻ tấn công lừa người dùng sử dụng session ID đặc biệt.

0 0 67

- vừa được xem lúc

Làm thế nào để Design của Website thu hút hơn?

Xin chào các bạn. Bởi thế, không phải bàn cãi, thiết kế giao diện vừa thu hút, vừa chuyên nghiệp và ấn tượng là một trong những yếu tố quan trọng nhất trong cả quá trình phát triển 1 website.

0 0 52