[Root-me]LDAP injection – authentication – Easy

[Root-me]LDAP injection – authentication – Easy

Helloo chụy em, 4 5 hôm nay ôn thi sml trên trường nên không viết được bài nèo, với cả thêm 1 lí do nữa đó là … Tìm hiểu về LDAP là cái giề, trước giờ mình nghe nói chứ thực không hiểu nó là gì. Sau 2 ngày tìm hiểu thì mình hiểu ngắn gọn nó chỉ là 1 sever giống như sever 2012 chẳng hạn, các bạn học network chắc cũng học cấu hình sever 2012 các kiểu, phân OU, Đặt password UID các kiểu thì không còn xa lạ gì với định nghĩa này nữa. Quay trở lại bài. Bài này đơn thuần chỉ là một kiểu injection code độc hại bằng các operator thôi. Thử vào bài mình giải thích rõ hơn nè

2

Một form đăng nhập và nhiệm vụ của mình là phải bypass qua nó, thử một vài kí tự.

3

Thì xuất hiện lỗi syntax, điều này cho ta biết được format của filter get data.

Và mình dùng payload:

username: *)(&(sn=*

password: *)

Tức filter mà sever sẽ sử lí có dạng:

(&(uid=*)(&(userPassword=*)(userPassword=*)))

 

Kết quả:

4.PNG

Tới đây chắc có lẽ các bạn không hiểu ở đâu mà mình injection sn vào các kiểu, hay uid, userPassword là gì. Các name đó do coder control hay nó là defaut của sever. Nhiều câu hỏi phải không? Đoán xem giải đáp ở chap sau!!

Chap tiếp:

cn,uid,sn mình hiểu theo nghĩa là các thực thể được phía LDAP sever định danh, một vài thực thể được định danh như:

1

Với các định danh, quay trở lại payload ở trên mình sẽ giải thích kỹ hơn 1 chút:

(&(uid=*)(&(userPassword=*)(userPassword=*)))

Câu truy vấn ban đầu gốc thực thi có dạng:

5.PNG

Như kiến thức hạn hẹp của mình nghĩ, vốn dĩ mình chỉ cần tiêm * vào uid vào * vào pass thì có thể bypass được rùi, nhưng có lẽ vậy thì quá dễ nên author đã filter các trường hợp đó rồi. Câu truy vấn trên với & được hiểu như “Và”. Vietsub tức :

6

Và mình cứ injection code sao cho nó vẫn tồn tại giá trị thỏa mãn và không bị filter thì sẽ xuất ra được value thôi. Và điều đó đồng nghĩa có rất nhiều payload giải quyết được lỗi trên và  các bạn thử build 1 payload khác xem sao ^.^

  • Nếu một số bạn vẫn không hiểu giề thì thử dựng lại nó và attack nó xem sao, mình cũng thử dành ra 1 hôm để dựng attack và prevent nó… Đây là code cơ bản của mình, mình có sài ké sever LDAP:

https://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/

Code của mình:

https://github.com/h3ll38/WEB-LABS/blob/master/LDAP_INJECTION/Index.php

Nếu các bạn khôn muốn sài ké Sever thì có thể tự build sever local :

https://www.btis.vn/blog/ldap-server-setup.html

Và mình thiết nghĩ cách prevent cho lỗi này chắc đơn giản là filter các kí tự như *,(,&,)….

Và function ldap_escape trong php đã giải quyết được việc đó. Thôi, mình tạm dừng ở đây, nhiệm vụ tiếp của các bạn là tìm hiểu về nó, tự dựng lại lỗi, attack và tự defence chính nó. Và đó là cách mình tiếp cận mình được truyền lại từ anh khóa trên. Good luck!!!

Quên FLAG bài này nhỉ.

FLAG: {TRY_HARD_DON’T_COPY_PASTE}

Những bài kiểu này mình tiếp cận theo lối không biết gì và đi tìm nên đôi khi những định nghĩa cách dùng từ mình không dùng chính xác nên các bạn thông cảm. Mình viết ngẫu hứng câu cú lủng củng, bỏ qua nha các hôm miiii ❤

BONUS Documents:

-https://vi.scribd.com/doc/109951012/L%C3%9D-THUY%E1%BA%BET-V%E1%BB%80-LDAP-VA-%E1%BB%A8NG-D%E1%BB%A4NG-TRONG-CAC-D%E1%BB%8ACH-V%E1%BB%A4-M%E1%BA%A0NG-LINUX

-https://vulnerabilities.teammentor.net/article/61f0d74e-d9b6-4e27-9e12-da65baff83fd

-https://docs.microsoft.com/en-us/windows/desktop/adsi/search-filter-syntax

ga.gif

Leave a comment