Task 9 [Day 4] Web Exploitation Santa's watching
Giới thiệu & Câu chuyện:
Chúng ta sẽ xem xét một số công cụ cơ bản được sử dụng trong thử nghiệm ứng dụng web. Bạn sẽ học cách sử dụng Gobuster để liệt kê một máy chủ web cho các tệp và thư mục ẩn nhằm hỗ trợ việc khôi phục các diễn đàn của Elf. Sau đó, bạn sẽ được giới thiệu một kỹ thuật quan trọng đó là fuzzing, nơi bạn sẽ có cơ hội áp dụng lý thuyết vào thực tế.
Hacker độc hại, hèn hạ, hèn hạ, độc ác, khinh thường và độc ác của chúng tôi đã phá hoại các diễn đàn của Elf và xóa hoàn toàn trang đăng nhập! Tuy nhiên, chúng tôi vẫn có thể có quyền truy cập vào API. Sysadmin cũng cho chúng tôi biết rằng API tạo nhật ký sử dụng ngày tháng với định dạng YYYYMMDD.
Fuzzing là gì?
Nói một cách đơn giản, fuzzing có thể được coi là "hành động thô bạo lạnh lùng" ở một mức độ nào đó. Tuy nhiên, bạn có thể làm mờ những gì bạn không thể vũ phu. Fuzzing đang sử dụng các công cụ bảo mật để tự động hóa việc nhập dữ liệu mà chúng tôi cung cấp vào những thứ như trang web hoặc ứng dụng phần mềm. Fuzzing là một quá trình cực kỳ hiệu quả vì máy tính có thể thực hiện các hành động tốn công sức như cố gắng tìm các tệp / thư mục ẩn, thử tên người dùng và mật khẩu khác nhanh hơn nhiều so với con người có thể (và sẵn sàng làm ...)
Các ứng dụng được xây dựng kém thường không thể xử lý dữ liệu theo cách mà nó được cho là khi chịu tải cường độ cao. Hơn nữa, dữ liệu mà chúng tôi đang phân tích cú pháp cho ứng dụng có thể được diễn giải và thực thi (thay vì được xử lý chính xác, tức là các lệnh hệ thống). Chúng tôi có thể sử dụng fuzzing để khiến ứng dụng kích hoạt điều được gọi là tình trạng lỗi trong đó điều này có thể bị lạm dụng bởi người kiểm tra thâm nhập hoặc thợ săn tiền thưởng lỗi.
Giới thiệu về cách sử dụng Gobuster
Nói một cách hợp lý, có rất nhiều phần của một trang web mà người dùng bình thường không nhìn thấy. Chúng có thể là bất cứ thứ gì từ sơ đồ trang web đến một thư mục bí mật chứa các tệp quan trọng. Thật không may, điều này có thể khiến các nhà phát triển hơi lười biếng và không bảo vệ các thư mục này, cho phép bất kỳ ai phát hiện ra rằng chúng tồn tại có thể đánh cắp dữ liệu quan trọng. gobuster là công cụ giúp chúng ta khám phá những thư mục có giá trị này nếu chúng tồn tại. Ý tưởng đằng sau bản thân công cụ này rất đơn giản, bắt buộc các đường dẫn chung để kiểm tra xem nó có hợp lệ hay không. Tương tự như cách bạn làm trong trình duyệt của mình, mặc dù công cụ này nhanh hơn rất nhiều. Gobuster có ba chế độ: dir
, vhost
và dns
.
Vì lợi ích của ngày hôm nay, chúng tôi sẽ sử dụng gobuster trong chế độ dir
, đây là chế độ có nhiều khả năng nhất mà bạn sẽ sử dụng hàng ngày. dir
(viết tắt của thư mục) có thể được chọn bằng cách sử dụng gobuster dir <rest of command>
Hãy sử dụng bảng dưới đây để minh họa cách hoạt động của danh sách từ:
Original URL | Item in Wordlist | Final URL |
---|---|---|
http://example.com | backups | http://example.com/backups |
http://loveucmnatic.thm | shepards | http://loveucmnatic.thm/shepards |
Gobuster có một vài thủ thuật nhỏ khác, nó hỗ trợ các phần mở rộng thêm vào, có nghĩa là bạn cũng có thể bruteforce các tệp. Chúng ta có thể sử dụng một biểu đồ nhỏ tiện dụng khác để hình dung nó và hiển thị một ví dụ sau:
Original URL | Item in Wordlist | Specified Extension | Final URL |
---|---|---|---|
http://example.com | backup | php | http://example.com/backup.php |
http://example.com | backup | txt | http://example.com/backup.txt |
http://example.com | icecream | html | http://example.com/icecream.html |
Để tìm dữ liệu trong bảng trên, chúng tôi đã sử dụng một lệnh như sau (giả sử wordlist.txt có các từ "backup" và "icecream"): gobuster dir -u
http://example.com
-w wordlist.txt -x php,txt,html
.
Mặc dù Gobuster nhanh hơn đáng kể so với các lựa chọn thay thế như Dirbuster trên Kali Linux, nhưng nó vẫn bị giới hạn trong danh sách từ và các tùy chọn mà bạn cung cấp. Danh sách từ của bạn càng phù hợp với mục tiêu, kết quả của bạn sẽ càng tốt. Danh sách từ như SecLists có danh sách từ dành cho các ứng dụng và nền tảng cụ thể. Bạn có thể sử dụng thông tin thu thập được từ việc liệt kê để giúp xác định danh sách từ nào có thể thích hợp nhất để sử dụng. Mặc dù vậy, chúng tôi sẽ hoàn thiện những kỹ năng đó trong một ngày sau đó.
Bản thân Gobuster hoạt động giống như bất kỳ công cụ Linux nào khác, có nghĩa là nó có sẵn một trang trực tuyến tại đây, bạn có thể sử dụng trang này làm tài liệu tham khảo nếu muốn tìm hiểu thêm về các tùy chọn khác nhau mà gobuster hỗ trợ. Tuy nhiên, hãy trình bày chi tiết một số tùy chọn phổ biến bên dưới:
Options | Description |
---|---|
-u | Used to specify which url to enumerate |
-w | Used to specify which wordlist that is appended on the url path i.e "http://url.com/word1" "http://url.com/word2" "http://url.com/word3.php" |
-x | Used to specify file extensions i.e "php,txt,html" |
Danh sách từ được đề xuất để sử dụng: big.txt
Chúng ta đã cung cấp danh sách từ cho bạn trên AttackBox nằm trong "/ usr / share / wordlists". Đây cũng là vị trí mặc định cho danh sách từ trên các bản phân phối dồn nén như Kali Linux. Để cung cấp một ví dụ, "big.txt" nằm ở đường dẫn tệp "/usr/share/wordlists/dirb/big.txt". Hãy dành một chút thời gian để khám phá các danh sách từ khác được cung cấp và nghĩ về tình huống mà chúng có thể hiệu quả để sử dụng.
Giới thiệu về cách sử dụng wfuzz
Tiền đề đằng sau wfuzz rất đơn giản. Đôi khi bạn muốn biết thêm một chút thông tin về lượng dữ liệu mà một thứ gì đó trong ứng dụng web trả về. Đây có thể là bất kỳ thứ gì từ tệp, mã phản hồi (nghĩa là 404 có nghĩa là URL không tồn tại) hoặc các tham số được sử dụng trong một biểu mẫu tương tự như biểu mẫu bạn đã tấn công trong Ngày 2.
Ví dụ: giả sử bạn đang dồn nén một ứng dụng ghi chú và bạn muốn xem liệu bạn có thể xem ghi chú của những người dùng khác hay không. Một cách bạn có thể muốn đạt được là sử dụng FUZZing cho tên người dùng (với kiến thức rằng mọi người dùng hợp lệ sẽ có note.txt theo mặc định). Lệnh wfuzz của chúng tôi giống như sau:
wfuzz -c -z file,/usr/share/wordlists/dirb/big.txt localhost:80/FUZZ/note.txt
Bây giờ wfuzz sẽ truy vấn máy chủ web bằng các từ được lặp lại từ danh sách từ "big.txt". Để minh họa:
- Truy vấn số 1: http: //localhost/admin/note.txt
- Truy vấn số 2: http: //localhost/administrator/note.txt
- Truy vấn số 3: http: //localhost/system/note.txt
Lưu ý cách thay thế thông số "FUZZ" bằng các từ trong danh sách từ. Chúng tôi sẽ phác thảo một số tùy chọn có thể được định cấu hình trong wfuzz, tuy nhiên, cần biết rằng điều đó sẽ hiển thị kết quả khác với các thông số mà chúng tôi đã đặt. Trong hình trên, chúng tôi đã sử dụng --hw
để ẩn tất cả các trang có 57 từ trên chúng. Vì wfuzz tìm thấy một URL chỉ có 8 từ, nó sẽ được hiển thị cho chúng tôi, vì đây không phải là 57 từ.
- Điều quan trọng cần biết là bạn có thể FUZZ bất kỳ phần nào của URL, nghĩa là bạn có thể kiểm tra bất kỳ thông số nào nếu bạn cũng không biết chúng.
Options | Description |
---|---|
-c | Hiển thị đầu ra bằng màu |
-d | Chỉ định các tham số bạn muốn làm mờ, nơi dữ liệu được mã hóa cho một biểu mẫu HTML |
-z | Chỉ định những gì sẽ thay thế FUZZ trong yêu cầu. Ví dụ: -z file, big.txt. Chúng tôi đang yêu cầu wfuzz tìm kiếm tệp bằng cách thay thế "FUZZ" bằng các từ trong "big.txt" |
--hc | Không hiển thị mã phản hồi http nhất định. I E. Không hiển thị câu trả lời 404 cho biết tệp không tồn tại hoặc "200" để cho biết tệp tồn tại |
--hl | Không hiển thị cho một số lượng dòng nhất định trong phản hồi |
--hh | Don't show for a certain amount of characters |
Hãy tập hợp điều này lại với nhau và chứng minh một số tùy chọn này. Giả sử chúng tôi muốn đánh dấu một ứng dụng trên http: //shibes.thm/login.php để tìm thông tin đăng nhập chính xác cho biểu mẫu đăng nhập. Sau khi nhớ lại kiến thức của chúng tôi từ Ngày thứ 2, chúng tôi đã biết tất cả về các tham số URL! Chúng ta có thể phỏng đoán một chút về những thông số mà biểu mẫu đăng nhập có thể đang sử dụng username
và password
, Đáng để thử! Lệnh wfuzz của chúng ta sẽ trông giống như sau: wfuzz -c -z file,mywordlist.txt -d “username=FUZZ&password=FUZZ” -u http://shibes.thm/login.php
Nơi wfuzz bây giờ sẽ lặp lại qua danh sách từ mà chúng tôi đã cung cấp và thay thế các giá trị "FUZZ" được chỉ định trong các tham số "tên người dùng" và "mật khẩu".
Thử thách
Triển khai cả phiên bản được đính kèm với tác vụ này (nút triển khai màu xanh lá cây) và AttackBox bằng cách nhấn nút "Bắt đầu AttackBox" màu xanh lam ở đầu trang. Sau khi chờ 5 phút, hãy điều hướng đến trang web (MACHINE_IP) trong trình duyệt AttackBox của bạn.
Bạn quyết định tự mình tạo danh sách từ hay sử dụng danh sách từ lớn hơn nằm trong /opt/AoC-2020/Day-4/wordlist
trên AttackBox. Danh sách từ cũng có sẵn để tải xuống nếu bạn đang sử dụng máy của riêng mình.
Tóm lại, hãy sử dụng các công cụ và kỹ thuật được nêu trong sự ra đời của không gian mạng ngày nay; tìm kiếm API, tìm đúng bài đăng và đưa trở lại các diễn đàn của Elf!
Cách tiếp cận thử thách
Vì chúng ta biết về mặt lý thuyết có một thư mục API, chúng ta có thể sử dụng gobuster để liệt kê trang web và xem liệu chúng tôi có thể tìm thấy gì không. Sau đó, giả sử chúng ta tìm thấy thứ gì đó, chúng ta nên điều tra nó để tìm các tệp thú vị. Giả sử sau đó, chúng tôi tìm thấy thứ có vẻ chứa nhật ký, chúng tôi biết chúng tôi đang tìm kiếm theo ngày, vì vậy chúng tôi có thể suy ra rằng có nhiều khả năng chúng tôi sẽ sử dụng thông số ngày để tương tác với API. Chúng tôi cũng biết rằng API có một ngày ở dạng YYYYMMDD. Bạn có thể tìm thấy danh sách từ ở định dạng đó trong gợi ý cho nhiệm vụ này, mặc dù nếu bạn muốn có thêm thử thách, bạn có thể thử và tự xây dựng danh sách từ ở định dạng đó.
Cuối cùng, API có thể không trả về dữ liệu nếu các tham số thích hợp không được chuyển, vì vậy với kiến thức đó, chúng tôi có thể sử dụng các tùy chọn trong wfuzz để lọc ra các tham số không trả về bất kỳ thứ gì.
Với tất cả những điều đó, chúng ta sẽ có thể có được một lá cờ.
Phòng được đề xuất:
Deploy your AttackBox (the blue "Start AttackBox" button) and the tasks machine (green button on this task) if you haven't already. Once both have deployed, open FireFox on the AttackBox and copy/paste the machines IP (MACHINE_IP) into the browser search bar.
Given the URL "http://shibes.xyz/api.php", what would the entire wfuzz command look like to query the "breed" parameter using the wordlist "big.txt" (assume that "big.txt" is in your current directory)
Note: For legal reasons, do not actually run this command as the site in question has not consented to being fuzzed!
--Còn tiếp --
0 Comments