Advertisement

Responsive Advertisement

Advent of Cyber 2 [2020] - Tryhackme - Write Up - Day 19

 


Task 24  [Day 19] Special by Tib3rius The Naughty or Nice List

Ông già Noel đã phát hành một ứng dụng web cho phép trẻ em trên thế giới kiểm tra xem chúng hiện đang nằm trong danh sách nghịch ngợm hay tốt bụng. Thật không may, người yêu tinh đã mã hóa nó đã phơi bày nhiều thứ hơn cô ấy nghĩ. Bạn có thể truy cập quản lý danh sách và đảm bảo rằng mọi đứa trẻ đều nhận được quà từ ông già Noel trong năm nay không?

Hãy tự mình thử hack ứng dụng web này hoặc làm theo hướng dẫn bên dưới! Lưu ý: khi bỏ qua bộ lọc tên máy chủ, hãy sử dụng localtest.me nếu không các nỗ lực của bạn sẽ không thành công!

Không thể tự mình vượt qua danh sách nghịch ngợm hay tốt đẹp? Hãy xem người sáng tạo (@ Tib3rius) giải quyết thử thách hôm nay.!

Server-Side Request Forgery

Truy vấn yêu cầu phía máy chủ (SSRF) là một lỗ hổng ứng dụng web cho phép những kẻ tấn công buộc máy chủ ứng dụng web thực hiện yêu cầu đối với tài nguyên mà nó thường không làm. Ví dụ: một ứng dụng web có thể có chức năng tạo ảnh chụp màn hình của các trang web khác khi người dùng cung cấp URL. Đây là chức năng hoàn toàn hợp lệ, tuy nhiên, URL cũng có thể được tạo cho địa chỉ IP nội bộ (ví dụ: 192.168.1.1, 10.10.10.10, 127.0.0.1, v.v.) cũng như tên máy chủ chỉ nội bộ (ví dụ: localhost, WIN2019SERV.CORP). Nếu nhà phát triển web không cẩn thận, kẻ tấn công có thể cung cấp cho ứng dụng những thứ này và quản lý để chụp ảnh màn hình các tài nguyên nội bộ, thường có ít biện pháp bảo vệ hơn.

Để chống lại điều này, các URL do người dùng cung cấp có thể được kiểm tra trước khi chúng được yêu cầu, để đảm bảo rằng các giá trị độc hại không được sử dụng. Tuy nhiên, do bản chất phức tạp của chính các URL, kẻ tấn công thường có thể làm nhiều điều để vượt qua các bước kiểm tra này.

Lưu ý rằng mặc dù ví dụ về SSRF được sử dụng trong tác vụ này cũng là một lỗ hổng bao gồm tệp từ xa (RFI), nhưng không phải mọi SSRF đều như vậy. Một số lỗ hổng SSRF chỉ kích hoạt tra cứu DNS, trong khi những lỗ hổng khác có thể không trả lại bất kỳ loại phản hồi nào cho ứng dụng web, nhưng vẫn có thể được sử dụng để "quét cổng" hệ thống nội bộ bằng cách đo thời gian mỗi yêu cầu hoàn thành. Trong các trường hợp khác, SSRF có thể được sử dụng như một hình thức Từ chối Dịch vụ (DoS) vì kẻ tấn công có thể liên tục yêu cầu máy chủ tải xuống các tệp lớn đồng thời (chiếm bộ nhớ, dung lượng đĩa và băng thông mạng).

Walkthrough

  1. Sau khi máy ảo được triển khai, hãy kết nối với ứng dụng web: http://MACHINE_IP

  2. Nhập tên vào biểu mẫu và nhấp vào nút "Tìm kiếm". Khi tải trang, nó sẽ cho bạn biết tên đó nằm trong Danh sách nghịch ngợm hay Danh sách tốt đẹp. Lưu ý rằng URL của trang trông giống như sau: http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A8080%2Fsearch.php%3Fname%3DTib3rius

  3. Nếu chúng tôi sử dụng bộ giải mã URL trên giá trị của tham số "proxy", chúng tôi nhận được: http: //list.hohoho: 8080 / search.php? Name = Tib3rius
  4. Vì "list.hohoho" không phải là tên máy chủ hợp lệ trên Internet (.hohoho không phải là
  5. top-level domain), tên máy chủ này có thể đề cập đến một số máy back-end. Có vẻ như ứng dụng web hoạt động bằng cách lấy URL này, đưa ra yêu cầu ở phần cuối và sau đó trả lại kết quả cho ứng dụng web phía trước. Nếu nhà phát triển không cẩn thận, chúng tôi có thể khai thác chức năng này bằng cách sử dụng Truy vấn Yêu cầu Phía Máy chủ (SSRF).

  6. Điều rõ ràng nhất mà chúng ta có thể làm trước tiên là tìm nạp thư mục gốc của cùng một trang web. Duyệt đến: http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A8080%2 Điều này dường như có tiềm năng, như thay cho nguyên bản "Tib3rius nằm trong Danh sách Tốt đẹp." , thay vào đó, chúng tôi thấy "Không tìm thấy. Không tìm thấy URL được yêu cầu trên máy chủ này." Đây có vẻ giống như một thông báo 404 chung chung, cho biết rằng chúng tôi có thể yêu cầu máy chủ yêu cầu URL đã sửa đổi và trả lại phản hồi.Có nhiều điều chúng tôi có thể làm bây giờ, chẳng hạn như cố gắng tìm các URL hợp lệ cho trang web "list.hohoho". Chúng tôi cũng có thể thử thay đổi số cổng từ 8080 sang một số khác để xem liệu chúng tôi có thể kết nối với bất kỳ dịch vụ nào khác đang chạy trên máy chủ hay không, ngay cả khi các dịch vụ này không phải là máy chủ web.

  7. Hãy thử thay đổi số cổng từ 8080 thành chỉ 80 (cổng HTTP mặc định): http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A80

    Thông báo bây giờ chuyển thành "Không thể kết nối với cổng list.hohoho 80: Kết nối bị từ chối", điều này cho thấy rằng cổng 80 không được mở trên list.hohoho.

  8. Thử thay đổi số cổng thành 22 (cổng SSH mặc định): http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A22 Thông báo bây giờ chuyển thành "Recv fail: Connection by peer", điều này cho thấy rằng cổng 22 đang mở nhưng không hiểu nội dung được gửi (điều này có ý nghĩa, vì việc gửi một yêu cầu HTTP đến máy chủ SSH sẽ không đưa bạn đến được đâu!). Việc liệt kê các cổng đang mở qua SSRF có thể được thực hiện theo cách này, bằng cách lặp lại các cổng chung và đo lường sự khác biệt giữa các phản hồi. Ngay cả trong trường hợp thông báo lỗi không được trả lại, người ta thường có thể phát hiện cổng nào đang mở và cổng đóng bằng cách đo thời gian mỗi yêu cầu cần để hoàn thành.

  9. Một điều khác chúng ta có thể thử làm với SSRF là truy cập các dịch vụ đang chạy cục bộ trên máy chủ. Chúng tôi có thể làm điều này bằng cách thay thế tên máy chủ list.hohoho bằng "localhost" hoặc "127.0.0.1" (trong số những tên khác). Hãy thử ngay bây giờ: http://MACHINE_IP/?proxy=http%3A%2F%2Flocalhost. Giáo sư! Có vẻ như nhà phát triển đã sẵn sàng cho việc này, vì thông báo trả về cho biết "Tìm kiếm của bạn đã bị nhóm bảo mật của chúng tôi chặn". Thật vậy, nếu bạn thử các tên máy chủ khác (ví dụ: 127.0.0.1, example.com, v.v.) thì tất cả chúng sẽ bị chặn. Nhà phát triển đã thực hiện kiểm tra để đảm bảo rằng tên máy chủ được cung cấp bắt đầu bằng "list.hohoho" và sẽ chặn bất kỳ tên máy chủ nào không có.

  10. Hóa ra, việc kiểm tra này có thể dễ dàng bị bỏ qua. Vì tên máy chủ chỉ cần bắt đầu bằng "list.hohoho", chúng tôi có thể tận dụng các miền phụ DNS và tạo miền của riêng mình "list.hohoho.evilsite.com" có độ phân giải thành 127.0.0.1. Trên thực tế, chúng tôi thậm chí không cần mua miền hoặc định cấu hình DNS, bởi vì nhiều miền đã tồn tại cho phép chúng tôi thực hiện việc này. Cái mà chúng tôi sẽ sử dụng là localtest.me, giải quyết mọi miền phụ thành 127.0.0.1.

    Do đó, chúng tôi có thể đặt tên máy chủ trong URL thành "list.hohoho.localtest.me", bỏ qua kiểm tra và truy cập các dịch vụ cục bộ: http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho.localtest.me

    Thành công! Có vẻ như có một máy chủ web đang chạy cục bộ và nó có một tin nhắn từ Elf McSkidy chứa một số thông tin nhạy cảm mà chúng tôi có thể sử dụng!
  11. Nhấp vào liên kết "Quản trị" ở trên cùng hoặc cuộn xuống để đăng nhập. Đoán tên người dùng và sử dụng mật khẩu bạn tìm thấy để đăng nhập với tư cách là ông già Noel.

  12. Xóa danh sách nghịch ngợm để tìm cờ thách thức!

    Cảm ơn!

    Cảm ơn bạn đã hoàn thành nhiệm vụ này! Hy vọng rằng bạn đã học được một số kiến thức cơ bản về SSRF, cũng như một số kỹ thuật để vượt qua các hạn chế miền (cách bỏ qua cụ thể này đã được sử dụng trong một phần thưởng lỗi mà tôi tìm thấy).

    Vui lòng cân nhắc cho tôi theo dõi trên Twitter (@TibSec), Twitch (TibSec) và YouTube (Tib3rius). Tôi cũng bán hai khóa học OSCP PrivEsc trên Udemy; phiếu giảm giá cho cả hai có thể được tìm thấy trên Twitter của tôi. Bạn cũng có thể dùng thử các phòng PrivEsc Windows và Linux của tôi miễn phí trên TryHackMe!

    Giáng sinh vui vẻ!

    Tib3rius

    Truy cập website


    Mình dùng công cụ tìm kiếm thấy một trang admin
    Thực hiện lần lượt các hướng dẫn để tấn công gửi yêu cầu đến server để nó gọi về chính máy attack đưa ra thông tin nhạy cảm ở bước số 7


    Ta thu được mật khẩu của Santa.
    Sau khi đăng nhập bạn bấm vào nút  DELETE NAUGYTLIST và có cờ



    Post a Comment

    0 Comments