LDAP - Lightweight Directory Access Protocol
Last updated
Last updated
Là giao thức truy cập cơ sở dữ liệu phân tán, được sử dụng để quản lý và truy xuất thông tin trong mạng máy tính. Các thông tin này thường được lưu trữ trong một thư mục (directory) và được tổ chức theo cấu trúc cây dữ liệu. Thư mục LDAP được cấu trúc để cho phép phân phối chúng trên nhiều máy chủ, với mỗi máy chủ chứa một phiên bản được sao chép và đồng bộ hóa của thư mục, được gọi là Directory System Agent (DSA). Trách nhiệm xử lý các yêu cầu hoàn toàn thuộc về máy chủ LDAP, có thể giao tiếp với các DSA khác khi cần để cung cấp phản hồi thống nhất cho người yêu cầu. Giao thức này hỗ trợ được nhiều phương thức truy cập dữ liệu khác nhau, bao gồm cả TCP/IP, X.500 và HTTP. LDAP là một công nghệ phổ biến trong các môi trường doanh nghiệp và mạng lớn để quản lý và truy xuất thông tin về người dùng và tài nguyên. Nó cũng hoạt động như một giải pháp quản lý danh tính và truy cập (IAM), hỗ trợ xác thực người dùng, bao gồm Kerberos, đăng nhập một lần (SSO), bảo mật xác thực (SASL) và cổng bảo mật (SSL).
Cổng mặc định: 389 và 636 (ldaps). Global Catalog (LDAP trong Active Directory) có sẵn theo mặc định trên các cổng 3268 và 3269 cho LDAPS.
LDAP hoạt động theo mô hình client-server. Một hay nhiều LDAP server sẽ chứa các thông tin về cây thư mục (Directory Information Tree -DIT). LDAP client sẽ kết nối đến server và gửi request, server sẽ phản hồi lại bằng chính nó hoặc trở tới LDAP server khác để client lấy được thông tin.
Thứ tự khi kết nối theo từng bước dưới đây:
Connect (Kết nối với LDAP): Client sẽ mở kết nối tới LDAP server.
Bind (kiểu kết nối – ẩn danh hoặc đăng nhập): Client gửi đi các thông tin xác thực.
Search (Tìm kiếm): Client gửi đi yêu cầu tìm kiếm.
Interpret search (xử lý tìm kiếm): Server thực hiện việc xử lý tìm kiếm.
Result (kết quả): Máy chủ phản hồi lại kết quả với Client.
Unbind: Client gửi đi yêu cầu đóng kết nối với server.
Close connection (đóng kết nối): Đóng kết nối từ server.
Database backend của LDAP: Slap là một “LDAP Directory Server” chạy trên nhiều platform khác nhau, cung cấp các tính năng:
Simple Authentication and Security Layer: Slapd cung cấp hỗ trợ mạnh mẽ cho việc xác thực và bảo mật dữ liệu dịch vụ thông qua SASL.
LDAP information: Xác định cấu trúc và đặc điểm của các thông tin trong thư mục.
LDAP Naming: Xác định cách tham chiếu và tổ chức của thông tin.
LDAP Functional: Định nghĩa cách mà các bạn truy cập và cập nhật thông tin trong thư mục của bạn.
LDAP Security: Định nghĩa ra cách thông tin trong thư mục của bạn được bảo vệ để tránh các truy cập không được cho phép.
Cách hoạt động và kiểm soát truy cập của LDAP
Một phiên bắt đầu với một máy khách liên kết với máy chủ LDAP (DSA, Directory System Agent – Tác nhân hệ thống thư mục), cổng mặc định 389:
Sau đó, khách hàng sẽ gửi một yêu cầu hoạt động (thường là một yêu cầu tìm kiếm hoặc so sánh) đến máy chủ, yêu cầu một tập hợp thông tin cụ thể.
Tiếp theo, máy chủ xử lý truy vấn này và cung cấp phản hồi.
Máy khách nhận phản hồi, hủy liên kết và sau đó xử lý dữ liệu.
LDAP Injection là một cuộc tấn công nhắm vào các ứng dụng web xây dựng các câu lệnh LDAP từ dữ liệu đầu vào của người dùng. Nó xảy ra khi ứng dụng không khử trùng dữ liệu đầu vào đúng cách, cho phép kẻ tấn công thao túng các câu lệnh LDAP thông qua proxy cục bộ, có khả năng dẫn đến truy cập trái phép hoặc thao túng dữ liệu.
Nếu LDAP sử dụng mà không có SSL, attacker có thể Sniff thông tin đăng nhập dạng rõ trong mạng. Ngoài ra có thể thực hiện MITM attack giữa LDAP server và client, rồi thực hiện Downgrade Attack để client với thông tin đăng nhập dạng rõ login. Nếu sử dụng SSL, với MITM, attacker có thể cung cấp chứng chỉ giả, nếu thành công, có thể Downgrade Attack và xem lại thông tin đăng nhập
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=
)" "
" +
LDAP anonymous binds: cho phép unauthenticated attackers truy xuất thông tin từ miền. Đây là cấu hình cũ và kể từ Windows Server 2003, chỉ những người dùng đã xác thực mới được phép khởi tạo yêu cầu LDAP. Tuy nhiên, admin có thể cần thiết lập một ứng dụng cụ thể để cho phép LDAP anonymous bind và cấp nhiều hơn số lượng quyền truy cập dự định, do đó cấp cho người dùng chưa xác thực quyền truy cập vào tất cả các đối tượng trong AD
Nếu bạn có thông tin xác thực hợp lệ để đăng nhập vào máy chủ LDAP, bạn có thể xuất tất cả thông tin về Quản trị viên miền bằng cách sử dụng:
pip3 install ldapdomaindump
ldapdomaindump <IP> [-r <IP>] -u '<domain>\<username>' -p '<password>' [--authtype SIMPLE] --no-json --no-grep [-o /path/dir]
LDAPv3: Slapd hỗ trợ LDAP cả cho địa chỉ , Unix IPC.
Transport Layer Security: Slapd có hỗ trợ và SSL.
Bypass TLS SNI check: Theo , chỉ cần truy cập vào máy chủ LDAP với tên miền tùy ý (như company.com), anh ta đã có thể liên hệ với dịch vụ LDAP và trích xuất thông tin với tư cách là người dùng ẩn danh: