Task 10 [Day 5] Web Exploitation Pesky Elf Forum
Câu chuyện
Diễn đàn Yêu tinh là nơi tất cả các yêu tinh bày tỏ niềm vui và sự phấn khích của họ về Giáng sinh, nhưng Grinch Enterprises có một tài khoản quản trị kém và họ đã cài đặt một plugin thay đổi tất cả đề cập đến Giáng sinh thành Buttmas !! McSkidy cần tìm tài khoản quản trị đó và vô hiệu hóa plugin.
Mục tiêu học tập
- Lỗ hổng XSS là gì?
- Có những loại lỗ hổng XSS nào?
- Hướng dẫn thử thách.
Lỗ hổng XSS là gì?
Cross-Site Scripting, hay còn được gọi là XSS trong cộng đồng an ninh mạng, được phân loại là một cuộc tấn công chèn ép trong đó JavaScript độc hại được đưa vào một ứng dụng web với ý định được thực thi bởi những người dùng khác.
Nếu bạn có thể chạy JavaScript trên máy tính của nạn nhân, bạn có thể đạt được rất nhiều điều. Điều này có thể bao gồm từ việc đánh cắp cookie của nạn nhân để tiếp quản phiên của họ, chạy keylogger sẽ ghi lại mọi phím mà người dùng nhấn trên bàn phím của họ khi truy cập trang web, chuyển hướng người dùng đến một trang web hoàn toàn khác hoặc thực hiện một số loại hành động trên trang web chẳng hạn như đặt hàng hoặc đặt lại mật khẩu của họ, v.v.
Có những loại lỗ hổng XSS nào?
Các lỗ hổng XSS được chia thành bốn loại khác nhau; DOM, Reflected, Stored và Blind. Mỗi loại là một chủ đề khá phức tạp mà chúng tôi sẽ thử và đề cập ngắn gọn ở đây, nhưng để hiểu sâu hơn, bạn có thể muốn thử phòng này sau khi hoàn thành thử thách https://tryhackme.com/room/xssgi
DOM:
DOM là viết tắt của Document Object Model và là một giao diện lập trình cho các tài liệu HTML và XML. Nó đại diện cho trang để các chương trình có thể thay đổi cấu trúc, kiểu và nội dung tài liệu. Trang web là một tài liệu và tài liệu này có thể được hiển thị trong cửa sổ trình duyệt hoặc dưới dạng nguồn HTML.
DOM Based XSS là nơi thực thi JavaScript diễn ra trực tiếp trong trình duyệt mà không có bất kỳ trang mới nào được tải hoặc dữ liệu được gửi tới mã phụ trợ. Việc thực thi xảy ra khi mã JavaScript của trang web hoạt động trên đầu vào hoặc tương tác của người dùng. Ví dụ về điều này có thể là mã JavaScript của trang web lấy nội dung từ tham số window.location.hash và sau đó ghi nội dung đó lên trang trong phần hiện đang được xem. Nội dung của băm không được kiểm tra để tìm mã độc hại, cho phép kẻ tấn công đưa JavaScript mà chúng chọn vào trang web.
Reflected:
XSS ánh xạ xảy ra khi dữ liệu do người dùng cung cấp trong một yêu cầu HTTP được đưa vào nguồn trang web mà không có bất kỳ xác thực nào. Ví dụ về điều này có thể là một thông báo lỗi trong một chuỗi truy vấn của một URL được phản ánh trên trang web. URL có thể trông giống như sau:
https://website.thm/login?error=Username%20Is%20Incorrect
Thông báo lỗi có thể được thay thế bằng mã JavaScript được thực thi khi người dùng truy cập trang.
Stored:
Như tên gọi, tải trọng XSS lưu trữ trên ứng dụng web (ví dụ: trong cơ sở dữ liệu) và sau đó được chạy khi người dùng khác truy cập trang web hoặc trang web. Loại XSS này có thể gây thiệt hại đặc biệt do số lượng nạn nhân có thể bị ảnh hưởng. Một ví dụ về điều này có thể là một blog cho phép khách truy cập để lại nhận xét. Nếu thư của khách truy cập không được xác thực và kiểm tra tải trọng XSS đúng cách, thì mỗi lần truy cập tiếp theo vào trang blog sẽ chạy mã JavaScript độc hại.
Blind:
Blind XSS tương tự như XSS lưu trữ ở chỗ trọng tải của bạn được lưu trữ trên trang web để người dùng khác xem, nhưng trong trường hợp này, bạn không thể thấy tải trọng hoạt động hoặc có thể tự kiểm tra nó trước. Một ví dụ về điều này có thể là một biểu mẫu liên hệ. Trong biểu mẫu liên hệ, tin nhắn của bạn có thể chứa tải trọng XSS, khi một nhân viên xem thông báo, nó sẽ được thực thi.
Thử thách
Username: McSkidy
Password: password
Bây giờ bạn đã đăng nhập, bạn sẽ nhận thấy thanh điều hướng hiện đã thay đổi từ Đăng nhập thành Cài đặt và Đăng xuất.
Nhấp vào liên kết Cài đặt và bạn sẽ nhận thấy tính năng thay đổi mật khẩu đăng nhập của McSkidy. Hãy thử thay đổi mật khẩu của bạn thành pass123. Khi làm điều này, bạn sẽ nhận thấy thanh địa chỉ của mình thay đổi trông giống như ảnh chụp màn hình bên dưới (của bạn sẽ có địa chỉ IP MACHINE_IP thay thế). Nếu bạn có thể lừa Grinch truy cập vào URL này bằng cách nào đó, nó sẽ thay đổi mật khẩu của chúng thành pass123.
Bây giờ chúng ta hãy quay trở lại diễn đàn và truy cập một trong các chủ đề. Nếu bạn cuộn xuống dưới cùng, bạn sẽ nhận thấy rằng bạn có thể để lại nhận xét. Hãy thử để lại bình luận sau:
hello <u>world</u>
Sau khi bình luận của bạn được đăng, bạn sẽ thấy rằng thế giới từ đã được gạch chân.
Điều này có nghĩa là nhận xét được phản ánh khi bạn viết nó mà không loại bỏ các thẻ HTML gạch dưới. Vì điều này không bị loại bỏ, thay vào đó, bạn có thể thử các thẻ tập lệnh HTML để xem liệu trang web có chạy bất kỳ JavaScript nào được nhập hay không.
Sử dụng URL, bạn đã tìm thấy trước đó để thay đổi mật khẩu của người dùng, bạn có thể thử tải trọng sau:
<script>fetch('/settings?new_password=pass123');</script>
Thẻ <script> cho trình duyệt biết chúng tôi muốn chạy một số JavaScript và lệnh tìm nạp thực hiện một yêu cầu mạng tới URL được chỉ định.
Sau khi đăng phần trên dưới dạng nhận xét, bạn có thể xem nguồn trang web để xem liệu nó có được hiển thị chính xác hay không. Ảnh chụp màn hình bên dưới cho chúng ta thấy rằng các thẻ script không bị loại bỏ hoặc vô hiệu hóa và trên thực tế, đang hoạt động:
Bây giờ chúng ta có XSS này đang chạy trên diễn đàn, điều đó có nghĩa là bất kỳ người dùng đã đăng nhập nào đang xem chuỗi sẽ tự động được thay đổi mật khẩu của họ thành pass123. Vì vậy, hãy đăng xuất và xem liệu Grinch đã truy cập chuỗi hay chưa bằng cách cố gắng đăng nhập với tư cách là họ (Có thể mất đến một phút trước khi Grinch truy cập trang và mật khẩu của chúng thay đổi).
Username: grinch
Password: pass123
Sau khi đăng nhập, hãy truy cập lại trang cài đặt và lần này, bạn sẽ khám phá ra một tính năng khác với tùy chọn tắt plugin Christmas to Buttmas.
Vô hiệu hóa plugin và bạn sẽ được trao một lá cờ có thể được nhập vào bên dưới.
Thực hành
Khởi tạo máy ảo và thực hiện theo bước hướng dẫn ở trên
Nhập user và pass
Username: McSkidy
Password: password
Mình để ý cái bài viết liên quan đến user grinch mình thực hiện như trên để thực thi javscript ở trên để đổi passThành công đổi mật khẩu
Mình thấy phần Plugins mình tắt nó sẽ có cờ nhé ✌✌✌
0 Comments