Lab: Inconsistent security controls

📌 Bài viết này thuộc chuỗi write-up quá trình tiếp cận và đáp án cho các bài lab từ Portswigger Web Academy mà mình đã làm trong thời gian thực tập tại NCSC.

Mình không thích lắm cái cách mấy idol viết write-up lab theo kiểu cứ như thể họ đã biết đáp án từ đầu – họ chẳng bao giờ đủ kiên nhẫn để giải thích cặn kẽ tại sao họ lại làm một cái gì đó. Vậy nên, write-up phong cách bạn Tiểu ra đời. Mình mong là bạn có được những câu trả lời thoả đáng qua loạt bài này. Những ý kiến góp ý, thảo luận, báo lỗi – luôn luôn được hoan nghênh dưới mục comment.

Link bài lab

Đề bài

Ngữ cảnh: Bài lab này có lỗi logic khiến cho bất kỳ người dùng nào đều cũng có thể truy cập các tính năng quản trị, thứ vốn được khả dụng chỉ với nhân viên trong công ty.

Mục tiêu: Truy cập giao diện quản trị viên (admin panel) và xoá người dùng carlos.

Phân tích

Một đặc điểm nữa của các bài gán nhãn “Apprentice” là bạn gần như luôn có thể tìm được câu trả lời trong hướng dẫn thực hành của chủ đề đó. Với bài này, những dòng đầu tiên của hướng dẫn cung cấp cho chúng ta một gợi ý để giải như sau:

(Nhiều ứng dụng trông thì có vẻ khá bảo mật bởi chúng được cài đặt những biện pháp bảo vệ nghiêm ngặt theo quy tắc nghiệp vụ. Tuy nhiên, một vài trong số chúng rơi phải sai lầm trong việc mặc định rằng, nếu như một người dùng/dữ liệu đã đi qua được vòng kiểm soát đầu tiên là ta hoàn toàn có thể tin tưởng họ mãi mãi. Điều này có thể dẫn đến những kiểm soát không chặt chẽ từ đó về sau.

Nếu như quy tắc nghiệp vụ cùng với các biện pháp bảo mật không được áp dụng triệt để xuyên suốt ứng dụng, điều này có thể dẫn tới những lỗ hổng nguy hiểm để các kẻ tấn công khai thác.)

Mấy bài kiểu này bạn chỉ cần đi một vòng khám phá, rồi bấm đồng hồ, đọ với một kỳ thủ rubik nào đó xem ai xong việc của mình trước.

Lời giải

  1. Truy cập vào bài lab. Thấy trên thanh điều hướng lâu nay bỗng có thêm một mục mới, mục “Register”. Bấm vào thì thấy dòng ghi chú thế này:

2. Nhìn đến đây là phải đoán ngay ra bài này sẽ được giải như thế nào: Đăng ký tài khoản và thay đổi email để email này được nhận diện dưới tên miền @dontwannacry.com. Nếu điều kiện này được thoả mãn, chúng ta mạnh dạn đoán là ta sẽ có quyền admin.

Chưa thoả mãn điều kiện email kia thì chưa vào được là đúng rồi.

3. Vấn đề ở đây là với Email Client ta được lab cung cấp, chúng ta cần phải đăng ký dưới email đó để có được link xác nhận tạo lập tài khoản. Sau đó ta mới đổi email sau.

4. Sau đó thì chúng ta đổi email thành cái-gì-đó@dontwannacry.com là được.

    5. Rồi sau đó giao diện /admin sẽ có thể truy cập. Vào và lại đấm anh Carlos ra khỏi hệ thống thôi. (Khổ thân!)