Published on

Authentication Labs

Authors
  • avatar
    Name
    Kim Phu
    Twitter

1.Username enumeration via different responses

  • Bài này mình sẽ dùng intruder là chính
  • Với 2 list username password cho sẵn ở phần gợi ý, ta sẽ bruteforce.
  • Với trường hợp đúng username -> invalid password còn đúng password -> invalid username
  • Và tất nhiên thì length của respone trả về khác nhau nên ta chỉ cần sắp xếp theo length
  • Từ đây tìm ra username là au và password là 666666

2.2FA simple bypass

  • Với bài này thì credentials đã được cho sẵn.
  • Login vào tài khoản wiener:peter trước -> Gửi email -> nhập OTP code được gửi tới -> link ở trang chính sẽ trỏ tới /my-account
  • Sau đó logout và login vào carlos:montoya , sau đó thay link thành /my-account -> solved

3.Password reset broken logic

  • Với bài này thì credentials đã được cho sẵn.
  • Login vào tài khoản wiener:peter trước -> Gửi email -> nhập OTP code được gửi tới -> sẽ có link reset mật khẩu -> click vào đó
  • Đổi mật khẩu thành admin chẳng hạn 😃
  • Trong burpsuite -> vào HTTP History trong tab Proxy -> thấy có request vừa nãy reset -> Send tới Repeater image
  • Đổi username thành carlos và xoá token đi.
  • Sau đó vào web -> login với username carlos với password là admin -> done 🙂

4.Username enumeration via subtly different responses

  • Với bài này thì ta sẽ sử dụng bruteforce -> mà theo tên đề bài quan trọng nhất vẫn là những respone trả về khác nhau
  • Bước đầu tiên, ta sẽ bruteforce username
  • Ở đây ta sẽ sử dụng Grep-extract để lấy repsone trả về giữa 2 thẻ <p class="is-warning">..</p>
  • Sau khi enumarate thẻ username -> thấy respone của user asterix khônng có dấu . ở cuối câu như những respone khác. Mạnh dạn đoán đây chính là username.
  • Bây giờ thử qua bruteforce mật khẩu -> với list mật khẩu có sẵn -> bruteforce thấy password biteme có respone 302.
  • Vậy là chỉ cần login nữa thôi.

5.Broken brute-force protection, IP block

  • Bài này chỉ có 2 username nên chúng ta chỉ cần brutefore carlos. Tuy nhiên khá là thốn vì nó có giới hạn request số lần Invalid password và sau đó bắt mình thử lại sau 1 phút. Tất nhiên thì làm gì có chuyện như vậy 🙂.
  • Sau khi tham khảo trên mạng mình đã quyết định sẽ đăng nhập luân phiên giữa 2 account wiener:petercarlos chưa biết mật khẩu.
  • Đây là đoạn code python để generate password để intruder đăng nhập luân phiên.
        mang=[]
        fhand=open("password.txt","r")
        for line in fhand:
              line=line.rstrip()
              mang.append("peter")
              mang.append(line)
        fhand=open("password.txt","w")
        for i in mang:
              fhand.write(str(i)+"\n")
    
  • Với account wienercarlos thay phiên. Bây giờ mình sẽ dùng intruder với tuỳ chọn PitchFork.
  • Lưu ý: ở file password.txt sau khi generate mình sẽ có 200 dòng, nên tương tự bên payload của username mình cũng sẽ để 200 account là wienercarlos. hoặc dùng code dưới đây cho chắc chắn
     for i in range(100):
           print("wiener\ncarlos")
    
  • Sau khi bruteforce, tìm ra pass là trustno1. Ở resource pool mình cũng đã phải đổi thành 1 request 1s để tránh bị quá tải và chạy sai kết quả image

6.Username enumeration via account lock

  • Với bài này thì ta sẽ sử dụng bruteforce và clusterbombs và null payloads
  • Đầu tiên bruteforce để tìm username image
  • và sau khi có tài khoản rồi, mình sẽ brutefore mật khẩu image
  • Tài khoản và mật khẩu lần lượt là ec2-usercomputer

7.2FA broken logic

  • Tương tự bài 2, mình phải login vào tài khoản của weiner trước rồi sau đó verify cho carlos sau. -> Nhập verify code trong mail của weiner
  • Trong burpsuite, tab proxy, mở HTTP History -> /login2. Tại đây ta thấy trong request có verify=wiener , mình sẽ sửa nó thành verify=carlos rồi ném qua Repeater. image
  • Vì mã này chỉ dùng được 1 lần cho tài khoản weiner nên mình quyết định sẽ bruteforce nó image
  • mfa-code ta thấy chỉ có số có 4 chữ số, nên set payload 4 chữ số luôn :) image
  • Sau đó chèn payload mfa-code=0905 vào cuối request -> open respone in browser -> done

8.Brute-forcing a stay-logged-in cookie

  • Với bài này thì biết là dùng logged-in-cookie, nhưng mình đã bruteforce như bài 5 🥲 Tất nhiên nó là hướng đi sai lầm.
  • Sau khi xem gợi ý. Việc chúng ta cần làm chỉ là bruteforce logged-in-cookie mà thôi. Decode từ base64 ra thì thấy nó được viết dưới định dạng username:md5hash(password). Ok =)))) vậy giờ vào việc chính thôi.
  • Ở tuỳ chọn payload proccessing, mình chọn hash md5, prefix=carlos:, encode bas64 image
  • Giờ vào Crack Station để crack md5 nào -> thu được mật khẩu là 123qwe
  • Login -> done