Trong phần thứ hai của chuỗi bài học, bạn sẽ được hướng dẫn cách tận dụng proxy của Burp Suite để thu thập dữ liệu từ các yêu cầu gửi qua trình duyệt. Bạn sẽ tìm hiểu sâu về cơ chế hoạt động của intercepting proxy cũng như cách phân tích, đọc dữ liệu của các request và response mà Burp Suite ghi nhận.
Phần thứ ba sẽ đưa bạn vào một kịch bản thực tế, giúp bạn hình dung cách áp dụng dữ liệu thu thập được vào quy trình kiểm thử bảo mật chuyên nghiệp.
Ngoài ra, Burp Suite còn tích hợp hàng loạt công cụ mạnh mẽ hỗ trợ việc xử lý dữ liệu, sẽ được giới thiệu chi tiết trong phần thứ tư của chuỗi bài học.
Chặn và giám sát lưu lượng
Proxy của Burp Suite là một intercepting proxy, có nghĩa là tất cả lưu lượng truy cập đi qua proxy này đều có tùy chọn bị chặn lại và được người dùng xử lý thủ công. Điều này cho phép bạn kiểm tra từng yêu cầu một cách chi tiết và quyết định phản ứng như thế nào đối với nó.
Phương pháp này có thể hiệu quả theo từng trường hợp, nhưng cũng có thể làm lộ dấu hiệu bất thường với người dùng trong quá trình kiểm thử chuyên nghiệp.
Do đó, nếu bạn chỉ cần thu thập một lượng lớn lưu lượng cùng lúc và sau đó giám sát theo luồng hoặc xem lại sau, bạn có thể tắt tính năng chặn của proxy để lưu lượng được chuyển đi tự do.
Để bật/tắt tính năng chặn, hãy chuyển đến thẻ “Proxy” ở hàng tab trên cùng, sau đó chọn thẻ “Intercept” ở hàng tab thứ hai. Theo mặc định, nút thứ ba sẽ hiển thị “Intercept is on.” Hãy nhấn vào đó để chuyển đổi giữa bật và tắt chế độ chặn. Hiện tại, hãy giữ chế độ bật.
Ở Firefox, hãy điều hướng đến trang WordPress trên localhost của bạn. Bạn sẽ thấy biểu tượng “loading” xoay tròn trên tab và Firefox dường như không phản hồi. Điều này xảy ra bởi vì yêu cầu gửi đến máy chủ web của bạn đã bị Burp’s proxy chặn lại.
Kiểm tra cửa sổ Burp Suite của bạn. Lúc này, sẽ có dữ liệu yêu cầu xuất hiện trong tab “Intercept”. Đây là thông tin được gửi từ trình duyệt tới máy chủ WordPress khi bạn truy cập trang. Bạn sẽ không thấy bất kỳ HTML hay nội dung nào được trả về từ máy chủ. Để nhận dữ liệu phản hồi, hãy chuyển đến tab “Options” trong mục “Proxy” và tích vào “Intercept responses based on the following rules” và “Or Request Was Intercepted.”
Trong mọi trường hợp, bạn có thể xem qua các tab mới ở màn hình “Intercept”. Các tab Raw, Params và Headers là những tab hữu ích nhất.
- Raw hiển thị yêu cầu ở dạng nguyên bản như lúc nó được gửi đi.
- Params liệt kê các tham số gửi kèm theo yêu cầu; đây thường là nơi chứa thông tin quan trọng như dữ liệu đăng nhập.
- Headers chỉ hiển thị phần header của yêu cầu, rất hữu ích khi yêu cầu chứa HTML.
Để chuyển yêu cầu về máy chủ, hãy nhấn nút “Forward”. Nếu bạn đã cấu hình Burp để chặn phản hồi, bạn sẽ thấy dữ liệu phản hồi xuất hiện ngay trên màn hình. Ngược lại, dữ liệu sẽ biến mất sau khi được gửi tới máy chủ.
Dữ liệu phản hồi có cách thức hiển thị tương tự, nhưng có thêm những mục mới như “HTML”. Mục này chứa HTML nguyên bản được máy chủ gửi về. Cũng sẽ có một tab “Render” – Burp có thể cố gắng hiển thị HTML của phản hồi nhưng không bao gồm CSS, JavaScript hoặc các tài nguyên tĩnh. Tính năng này chỉ nhằm giúp bạn nắm bắt nhanh cấu trúc của trang trả về. Nhấn “Forward” lần nữa sẽ gửi phản hồi về Firefox.
Lưu lượng qua Proxy
Hãy tắt chế độ chặn. Trong phần này, chỉ cần giám sát lưu lượng khi nó đi qua proxy. Hãy duyệt qua trang WordPress mẫu của bạn. Nếu cần, hãy thêm nội dung giả để trang của bạn có thêm dữ liệu nhằm hiển thị luồng lưu lượng thực tế khi Burp Suite ghi nhận.
Tất cả các lưu lượng đi qua proxy của Burp Suite được liệt kê ở tab “HTTP History” trong mục “Proxy”. Theo mặc định, các yêu cầu được liệt kê theo thứ tự tăng dần. Bạn có thể đổi cách sắp xếp để các yêu cầu mới nhất hiển thị ở đầu bằng cách nhấn vào cột số thứ tự yêu cầu (#) ở phía bên trái bảng.
Hãy dành chút thời gian duyệt qua trang WordPress của bạn và quan sát Burp Suite. Bạn sẽ thấy danh sách HTTP history nhanh chóng được cập nhật. Điều bất ngờ có thể là số lượng yêu cầu được thu thập rất lớn. Trình duyệt của bạn thường tạo ra nhiều hơn một yêu cầu cho mỗi lượt click. Những yêu cầu này có thể dành cho các tài nguyên trên trang hoặc là kết quả của chuyển hướng. Tùy theo giao diện hoặc các font chữ cài đặt, bạn thậm chí có thể thấy các yêu cầu được gửi tới các miền khác. Trong tình huống thực tế, điều này rất phổ biến vì hầu hết các website đều sử dụng tài nguyên được lưu trữ độc lập và hệ thống phân phối nội dung (CDN).
Phân tích một yêu cầu
Chọn một yêu cầu để xem chi tiết. Tốt nhất là chọn yêu cầu có MIME type là HTML, nghĩa là yêu cầu đó được gửi cho một trong các trang của website và chứa một số HTML để bạn xem xét.
Khi bạn chọn một yêu cầu, hệ thống sẽ hiển thị yêu cầu ở dạng raw. Yêu cầu ở dạng raw chứa tất cả thông tin được gửi từ Firefox tới máy chủ, tương tự như yêu cầu bạn đã chặn trong quá trình intercept. Lần này, bạn đang xem lại yêu cầu sau khi nó đã được gửi đi.
Bạn hoàn toàn có thể sử dụng dạng raw để thu thập những thông tin quan trọng nếu bạn cảm thấy quen thuộc, tuy nhiên các tab Params và Headers thường dễ đọc và dễ hiểu hơn trong hầu hết các trường hợp. Hãy xem tab Params: đây chứa các thông tin biến động mà trình duyệt cần chuyển tiếp. Với nhiều trang HTML cơ bản, thường chỉ chứa cookie. Khi bạn gửi một form, dữ liệu từ form sẽ hiển thị ở đây.
Tab Headers chứa thông tin về yêu cầu, đích đến của nó và thông tin trình duyệt của bạn. Các header sẽ cho biết yêu cầu đó là GET hay POST, máy chủ hoặc website nào đang được liên hệ, và thông tin trình duyệt cùng ngôn ngữ mà máy chủ nên phản hồi. Một số thông tin về cookie cũng có thể xuất hiện ở đây. Ngoài ra, tab này cũng hữu ích để xem trình duyệt chấp nhận các định dạng dữ liệu nào từ máy chủ (được liệt kê dưới mục “Accept”).
Phân tích phản hồi
Nhấp vào tab Response. Nội dung ở đây tương tự như ở yêu cầu về mặt loại thông tin có sẵn. Như yêu cầu, phần raw của phản hồi chứa nhiều thông tin nhưng ở dạng hơi rối. Bạn hoàn toàn có thể sử dụng nó, nhưng tốt hơn hết là nên phân chia theo các tab khác.
Thay vì tìm kiếm thông tin trình duyệt trong header, bạn sẽ tìm thấy thông tin của máy chủ ở đây. Các header ở phần phản hồi thường cho biết loại phản hồi HTTP nào mà máy chủ gửi về. Bạn cũng sẽ thấy thông tin về loại máy chủ web đang chạy và ngôn ngữ backend được sử dụng – trong trường hợp này là PHP.
Tab HTML sẽ chứa HTML nguyên bản mà máy chủ gửi về để trình duyệt hiển thị trang. Có thể bạn sẽ không tìm thấy gì quá thú vị ở đây, phụ thuộc vào mục đích kiểm tra của bạn. Điều này không khác gì khi bạn xem source của một trang từ trình duyệt.
Kết luận
Bạn đã thành công trong việc cài đặt và cấu hình Burp Suite, đồng thời thiết lập proxy cho Firefox qua Burp để chặn và phân tích các yêu cầu. Với việc Burp Suite thu thập và đánh giá hàng loạt các yêu cầu, bạn đã nắm bắt được những thông tin quan trọng từ giao tiếp giữa trình duyệt và máy chủ.
Trong hướng dẫn tiếp theo, bạn sẽ áp dụng những kỹ năng vừa học để thu thập thông tin phục vụ cho một cuộc tấn công brute force vào trang đăng nhập của WordPress, giúp bạn hiểu rõ hơn cách khai thác và kiểm tra bảo mật một cách chuyên sâu.