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

SAML Hacking (phần 1) - Giới thiệu về SAML

0 0 24

Người đăng: Minh Tuấn Ngụy

Theo Viblo Asia

Đây là bài mở đầu của series SAML Hacking mà mình tìm hiểu được trong thời gian vừa qua, bài đầu tiên sẽ giới thiệu về SAML và cách thức hoạt động của nó.

SAML là gì?

SAML (Security Assertion Markup Language) là một chuẩn giao thức được sử dụng rộng rãi trong việc truyền tải thông tin xác thực và phân quyền giữa các hệ thống khác nhau. Được áp dụng chủ yếu trong các ứng dụng web, SAML cho phép xác thực người dùng và đối tác bằng cách sử dụng chứng chỉ số và các thông tin khác để xác nhận danh tính.

SAML được sử dụng rộng rãi trong môi trường doanh nghiệp, với sự phổ biến hơn so với tiêu chuẩn SSO (Single Sign-On) khác như OIDC (OpenID Connect). Khi sử dụng xác thực SAML, không chỉ có việc xác thực người dùng diễn ra, mà cả thông tin thuộc tính liên quan cũng được xác thực. Điều này cho phép kiểm soát phạm vi truy cập của người dùng dựa trên các thuộc tính đã xác thực. Ngoài việc giúp người dùng chỉ cần đăng nhập một lần, SAML cũng hỗ trợ việc quản lý quyền truy cập chi tiết, cho phép hạn chế quyền truy cập vào các chức năng cụ thể cho các phòng ban, đơn vị trong tổ chức.

Do đó, SAML không chỉ được sử dụng cho mục đích xác thực (Authentication), mà còn có khả năng hỗ trợ trong việc quản lý quyền truy cập (Authorization) cho các ứng dụng.

Các thành phần của SAML

SAML entities

  • End users: là người cần được xác thực trước khi được phép sử dụng ứng dụng.
  • Service providers: Đây là ứng dụng hoặc dịch vụ yêu cầu thông tin về người dùng được xác thực. Nó sẽ nhận Assertion và xác minh tính hợp lệ của nó.
  • Identity providers: Đây là thực thể xác thực người dùng và tạo ra Assertion. Nó sẽ xác thực thông tin về người dùng và sau đó tạo ra Assertion chứa thông tin về người dùng và gửi nó đến Service Provider.

SAML components

  • Assertion: là một tài liệu XML chứa thông tin về xác thực và phân quyền. Nó được phát hành bởi Issuer và được gửi đến Service Provider. Assertion bao gồm các thông tin về Subject, các quyền và vai trò của Subject, thời gian hiệu lực và các chữ ký số.
  • Protocol: là một tập hợp các quy tắc và thông tin để cho phép các thực thể SAML tương tác với nhau. Giao thức SAML cung cấp các thủ tục xác thực, phân quyền và truyền thông giữa các thực thể.
  • Bindings: cung cấp các phương thức để truyền Assertion và các thông tin khác giữa Issuer và Service Provider. Các bindings phổ biến nhất bao gồm HTTP Redirect, HTTP POST và Artifact.
  • Profiles: cung cấp các quy định và yêu cầu cho việc triển khai các giao thức và bindings của SAML trong các kịch bản sử dụng cụ thể. Các profile phổ biến bao gồm Single Sign-On (SSO), Single Logout (SLO) và Identity Provider Discovery.

SAML Flow

Ở đây mình mượn ảnh flow SAML authentication với Azure Active Directory để nói về SAML Flow.

  • Bước 1: Người dùng mở trình duyệt lên và truy cập vào web browser. Ở đây web browser là thành phần ám chỉ cái mà người dùng tương tác trực tiếp.
  • Bước 2: Web browser gửi request yêu cầu truy cập vào source trên Web App (Service Provider)
  • Bước 3: Web app (Service Provider) kiểm tra, generate SAML Authorization request và redirect tới Identity Provider (ở đây là Azure AD)
  • Bước 4: Người dùng thực hiện login (authenticated) vào Identity Provider (ở đây là Azure AD)
  • Bước 5: Identity Provider gửi SAML tokens đến Web Browser
  • Bước 6: Web Browser thực hiện chuyển tiếp SAML tokens đến Service Provider
  • Bước 7: Service Provider thực hiện validate SAML response và token, check thành công thì chuyển sang bước 8
  • Bước 8: Sau khi validate thành công SAML response và token, Service Provider sẽ cho phép người dùng truy cập vào source mà người dùng đã thực hiện request trước đó.

OK vậy là xong phần giới thiệu về SAML và cách thức hoạt động của SAML. Phần tiếp theo sẽ là phần tập trung vào việc khai thác các lỗ hổng liên quan đến SAML. Các bạn chờ đến phần tiếp theo nhé 🙈

Tham khảo

Bình luận

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

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

Linux Hardening and System Auditing (P1)

. Ngày nay, các hệ thống Linux được sử dụng trong suốt quá trình tính toán, từ các hệ thống nhúng đến hầu như tất cả các siêu máy tính, đồng thời đảm bảo một vị trí quan trọng trong các hệ thống máy chủ trên toàn thế giới. Linux đem lại cho người dùng khả năng tùy biến cao, sự ổn định và độ tin cậy

0 0 43

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

Tìm bug với Eyewitness

. Chào các bạn, trong bài này mình sẽ viết về tool Eyewitness. Eyewiteness có tính năng chính là chụp hình lại giao diện trang web sau đó tạo một report thông qua file .

0 0 35

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

Tôi đã debug code PHP như nào!

. Nhân dịp đầu xuân năm mới, mình xin gửi lời chúc an lành tới tất cả thành viên của viblo.asia.

0 0 57

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

OAuth 2.0 và vài vấn đề bảo mật liên quan (Phần 2)

III. Demo một số tấn công vào cơ chế OAuth. Trong phần này mình sẽ demo một số kiểu tấn công của OAuth dựa trên các bài lab được thiết kế bởi Portswigger. a.

0 0 97

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

OAuth 2.0 và vài vấn đề bảo mật liên quan (Phần 1)

Trong thời đại công nghệ ngày nay, việc đăng nhập bằng các tài khoản của các nền tảng khác không phải điều gì xa lạ đối với mỗi người dùng chúng ta. Việc này khả thi nhờ một vài cơ chế khác nhau, một trong số đó là OAuth 2.

0 0 50

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

Hành trình pass OSCP trong lần thi đầu tiên (2020)

Vào một chiều đông 17/12/2020, tôi nhận được cái email thông báo đã pass OSCP ngay lần thử đầu tiên. Sau đó, tôi bắt đầu tìm hiểu về Security và quyết định học cái gì đó cho riêng mình.

0 0 195