Hướng dẫn tạo Macro trong Bupsuite để bypass CSRF Token

Trong quá trình thực hiện đánh giá bảo mật, chúng ta sẽ gặp một số trường hợp ứng dụng web sử dụng mã Token để tránh việc tấn công CSRF hay Bruteforce, Flood Data vào Database… Các ứng dụng thường thấy CSRF trong mỗi Request bao gồm các ứng dụng Chat, gửi bình luận…. Đối với những trường hợp như vậy khi chúng ta thực hiện chèn PAYLOAD vào Parameter, bắt buộc phải kèm theo Token hợp lệ mới nhất như vậy thì mới trả về kết quả chính xác. Tuy nhiên, làm thế nào để làm công việc lấy Token mới nhất và tự động chèn vào mỗi Request thì bài viết này sẽ hướng dẫn các bạn làm điều đó.

Trong bài viết này sẽ sử dụng một ứng dụng bị lỗ hổng SQL injection và luôn yêu cầu Token trong mỗi Request.

Hình 1 – Ứng dụng sử dụng Token

Nếu sử dụng công cụ SQL map để thực hiện tấn công thì sẽ không thể khai thác được vì Token không thay đổi và sẽ luôn nhận thông báo “Token is not valid”.

Hình 2 – SQLmap khai thác không thành công

Hình 3 – Token Valid

Để thực hiện khai, chúng ta phải thực hiện viết Script thực hiện các công việc lấy Token hợp lệ và sử dụng nó cho các Request tấn công. Tuy nhiên, Burpsuite cũng cung cấp cơ chế cho chúng ta tạo ra các Macro làm các công việc tự động trên, và tất cả nằm trong Tab Project Opions/Sessions

Hình 4 – Tab Project Options / Sessions

Mặc định tại đây đã có Burp’s Cookies Jar và chúng ta không cần quan tâm đến nó mà tập trung đi tiếp đến phần tạo Macro. Khi kéo xuống dưới, chúng ta sẽ thấy khu vực quản lý các Macro.

Hình 5 – Khu vực quản lý Macro

Tại đây để thực hiện tạo Macro, chúng ta chọn Add và sẽ xuất hiện một hộp thoại như sau:

Hình 6 – Giao diện khởi tạo Macro

Trong đó:

  1. Tên Macro
  2. Các Request đã được lựa chọn Macro Recorder
  3. Cấu hình, chuyển đổi mức độ ưu tiên giữ các Request
  4. Nội dung Request/Response.
  5. Tìm kiếm các Request sử dụng trong Macro.

Chọn Record Macro, tại đây chúng ta có thể xem lại các Request History và tìm trong đó Request nào dùng để get Token hoặc có thể tạo Request mới hoàn toàn. Lựa chọn Request và chọn OK

Hình 7 – Giao diện Record Macro

Sau khi chọn xong, chúng ta thực hiện đặt tên cho Macro và lựa chọn tiếp Configure item. Hộp thoại xuất hiện, bỏ chọn 2 checkbox trong Cookie Handling và chọn Add

Hình 7 – Giao diện Record Macro

Sử dụng chuột để lựa chọn mục giá trị Token, mặc định Burpsuite sẽ tự động sinh ra phần khai báo nhận dạng vị trí Token, sau đó đặt tên và chọn OK

Hình 8 – Lựa chọn vị trí sinh Token

Sau khi tạo xong Macro, tiếp theo chọn AddSession Handling Rules, lựa chọn Run a Macro và chọn tên Macro vừa tạo. Sau đó thực hiện bỏ chọn Update Current Request With Cookie và chọn OK.

Hình 9 – Giao diện Session Handling Rules

Tại mục Scope lựa chọn vị trí mà Macro sẽ thực hiện, để kết hợp với SQLmap chúng ta chọn Proxy (Use as caution), tùy chỉnh URL scopeParameter scope

Hình 10 – Lựa chọn Scope thực thi

Cuối cùng đặt tên và chọn OK

Thực thi SQLmap và thêm tùy chọn proxy đi qua Burpsuite, lúc này các Request sẽ luôn có Token mới nhất và kết quả khai thác thành công ứng dụng.

Hình 11 – Khai thác thành công.

Mặc định chúng ta không thể xem sự thay đổi Token ở trong HTTP History mà thay vào đó sử dụng Open session tracer trong Sessions.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *