NỘI DUNG
Tiếp theo nội dung Penetration Testing Step 3 – Chuẩn bị bàn đạp để tấn công từ Target tab của Burp Suite, kỳ này tôi sẽ quay lại làm rõ trắng đen với Proxy tab.
Như tôi đề cập trong kỳ trước, Target và Proxy tab chủ yếu phục vụ reconnaissance/mapping/analysis, là vị trí bàn đạp quyết định thành bại của các cuộc tấn công. Nếu như xem Target tab là vị trí đầu não giúp nắm bắt đại cục thì Proxy tab là vị trí trái tim để điều phối dòng chảy thông tin trong cuộc chiến.
Để làm được việc này, ngoài phần thiết lập và kiểm tra sơ bộ tôi đã giới thiệu trong Penetration Testing Step 3 – 6 điều bạn nên biết trước khi xài tool khủng Burp Suite, Proxy tab với các tab con Intercept, HTTP history, WebSockets history và Options sẽ giúp bạn theo dõi chi tiết thông tin ra vào cũng như kiểm soát thái độ phục vụ của Burp Suite.
#1. Intercept – Kiểm soát viên của Burp Suite
Phần Intercept, với Intercept is on, bạn có thể soi được các thông tin thú vị từ Message Analysis tab tương ứng với các request đang bắt được. Tùy thuộc vào dạng request/response, bạn có thể gặp một số thể loại như Raw/Pretty (tức là bản thô và bản mông má lại đẹp) để thể hiện thông tin.
Tương tự như Context Menu phần Target tôi đề cập kỳ trước, với intercepted request, bạn sẽ có thể có các thao tác xử lý và thao túng nó với các thứ như sau trước khi ra phán quyết cuối cùng là cho hàng đi (Forward) hay đạp đổ (Drop).
#2. Theo dõi dòng chảy thông tin chiến trận với HTTP history
Đến phần quan trọng HTTP history, nơi giúp bạn không những thấu hiểu về chức năng, kiến trúc, khuôn mẫu của mục tiêu mà còn quan sát được “dòng chảy” trong quá trình pentest. Phần này có nhiều điểm tương đồng với Target/Site map mà tôi đề cập sơ bộ kỳ trước. Giờ tôi sẽ bàn kỹ hơn các nội dung này. Bảng thông tin của HTTP history sẽ bao gồm các cột sau (từ trái sang phải):
- # – Request index number: Cột đầu tiên, là số thứ tự của các request/response theo thời gian;
- Host – Protocol and server hostname: Cột này thể hiện thông tin host của request/response;
- Method – HTTP method: Các dạng HTTP method như GET, POST;
- URL – URL file path and query string: Đường dẫn cụ thể của request/response;
- Params – Flag whether the request contains any parameters: Cờ hiệu báo cho bạn biến request có parameters hay không;
- Edit – Flag whether the request or response were modified by the user: Cờ hiệu báo cho bạn biết request/response có bị user chỉnh sửa mông má lại không;
- Status – The HTTP status code of the response: Cho biết trạng thái respone trả về (tôi có giới thiệu kỹ trong nội dung Giải ngố WWW – Phần 2: 4 điều cơ bản phải biết về HTTP)
- Length – The length of the response in bytes: Kích thước của response tính theo bytes;
- MIME type – MIME type of the response: Thể loại MIME của respone, ví dụ HTML, script,…;
- Extension – URL file extension: Cho biết file extension của URL, ví dụ svg, js…;
- Title – Page title (for HTML responses): Tên của HTML respone, ví dụ Login;
- Comment – Any user-applied comment: Thể hiện user comment – nếu có;
- TLS – Flag whether TLS is used: Cờ hiệu cho biết có dùng TLS không;
- IP – The IP address of the destination server: Địa chỉ IP của destination server;
- Cookies – Any cookies that were set in the response: Cookies set trong response, nếu có;
- Time – The time the request was made: Thời gian thực hiện request;
- Listener port – The listener port on which the request was received: Listener port của request.
Lưu ý, 2 column đặc biệt hữu ích cho quá trình tấn công:
- Params: Cho biết các thông số có thể fuzz với Intruder;
- Method: Cho biết các HTTP method có thể fuzz với Repeater;
Cũng giống Target tab, bạn cũng sẽ có Filter để ẩn đám thông tin ít có giá trị như image/CSS hoặc highlight/comment requets để phân loại cho dễ xem.
Ở đây cũng có Message Analysis như phần Intercept nhưng chỉ để xem (vì nó là History mà, còn chỉnh sửa cái vẹo gì nữa, muốn la liếm thì bạn mò sang bên Intercept hoặc bên các chỗ chuyên chọc ngoáy như Repeater/Intruder đi).
Và hiển nhiên, ở đây bạn cũng sẽ có phần rất thiết yếu là Context Menu tương tự như như phần Intercept hay tab Target.
Lưu ý: Tôi không giải thích gì thêm ở phần Context Menu vì đã giới thiệu kỹ trong kỳ trước. Bạn đừng thấy tôi không nói gì mà nghĩ cái Context Menu không quan trọng.
#3. Giám sát WebSocket connection với WebSockets history
Bảng thông tin của WebSockets history sẽ bao gồm các nội dung sau (từ trái sang phải):
- # – Request index number: Cột đầu tiên, là số thứ tự của các message theo thời gian;
- URL – The URL of the WebSocket connection: đường dẫn cụ thể của WebSocket connection;
- Params – The direction of the message (outgoing versus incoming): Thông tin về hướng đi của message, đến server/ đến client;
- Edit – Flag whether the message was modified by the user: Cờ hiệu báo cho bạn biết message có bị user chỉnh sửa mông má lại không;
- Length – The length of the response in bytes: Kích thước của response tính theo bytes;
- Comment – Any user-applied comment: Thể hiện user comment – nếu có;
- TLS – Flag whether TLS is used: Cờ hiệu cho biết có dùng TLS không;
- Time – The time the message was received: Thời gian nhận message;
- Listener port – The listener port on which the message was received: Listener port của message.
- WebSocket ID: ID của WebSocket message.
Lưu ý:
- Trong các bảng này (và bảng thuộc phần HTTP history), bạn có thể click vào column header để sort tương ứng (ví dụ theo # – request index number để xem các request mới nhất/cũ nhất);
- Ngoài ra, bạn cũng có thể drag các column sắp xếp lại để dễ theo dõi các column quan trọng.
#4. Kiểm soát thái độ phục vụ của Burp Suite với Proxy/Options
Với Options, phần rất quan trọng là Proxy Listeners tôi đã giới thiệu trong nội dung Penetration Testing Step 3 – 6 điều bạn nên biết trước khi xài tool khủng Burp Suite nên sẽ không đề cập lại. Ở đây tôi sẽ tập trung vào các thứ còn lại của Options. Cụ thể như sau.
#4.1 Intercept Client Requests
Mặc định Burp Suite sẽ không intercept các request tương ứng các URLs có file extension không liên quan nhiều đến quá trình test như images/CSS/static JavaScript. Tuy nhiên, nếu cần thiết, bạn có thể điều chỉnh vấn đề này trong Proxy/Options/Intercept Client Request như sau.
Lưu ý: Bạn có thể dùng nút Edit để chỉnh sửa các rules tương ứng (ví dụ đổi Operator Or thành And).
#4.2 Intercept Server Respone
Nếu cần thiết, bạn cũng có thể can thiệp vào response từ server dựa trên combo các rule thiết lập bao gồm:
- Khi request bị chỉnh sửa;
- Khi request bị can thiệp;
- Không khớp status code cụ thể;
- Khi URL nằm trong scope;
Cũng như trên, bạn có thể dùng Operator And/Or để có các combo như ý.
Lưu ý:
- Bạn cũng có thể chấm múc luôn Websockets Message với Intercetp Websockets Message thông qua thiết lập các chiều hướng intercept message client-to-server/server-to-client;
- Bạn cũng có thiết thiết lập rule để Burp Suite tự động chỉnh sửa response theo các tùy chọn trong Response Modification bao gồm các thứ như hiển thị field ẩn, bật lại disabled form field, xóa giới hạn độ dài input field, xóa JavaScript, <object> tag, chuyển HTTPS sang HTTP, bỏ secure flag trong cookies.
#4.3 Match and Replace
Với phần Match and Replace, bạn sẽ có thể thiết lập các rules match/replace tự động để thay đổi nội dung của request/response khi đi qua proxy. Phần này sẽ có khá nhiều chi tiết rối rắm bên trong. Do vậy, tôi sẽ quay lại khi có bối cảnh cụ thể để dễ nắm rõ hơn.
#4.4 TLS pass through
TLS pass through cho phép bạn chỉ định webserver (thông qua Host/IP range và Port) để Burp Suite chạy qua TLS connection. Với thiết lập này, bạn sẽ không có thông tin request/response trong Intercept hoặc History. Nghe hơi vô dụng nhưng chức năng này sẽ hữu ích trong tình huống thực tế như:
- Bạn gặp lỗi TLS với mobile application sử dụng TLS certificate pinning;
- Application truy cập nhiều domain hoặc kết hợp HTTP/HTTPS connection (khi đó bạn sẽ cần xử lý các host có vấn đề qua TLS connection).
Lưu ý: Với tùy chọn Automatically add entries on client TLS negotiation failure, Burp Suite sẽ xác định khi nào có lỗi trong quá trình TLS negotiation và tự động đưa đám server liên quan vô TLS pass through list để xử lý.
#4.5 Miscellaneous
Miscellaneous – đám linh tinh khác – cho phép bạn kiểm soát hoạt động của Burp Suite.
Các tùy chọn có thể có bao gồm:
- Use HTTP/1.0 in requests to server: Ép request với HTTP version 1.0 thay vì mặc định là theo HTTP version mà browser sử dụng (một số server/application đồ cổ chỉ chạy được với version 1.0);
- Use HTTP/1.0 in responses to client: Ép sử dụng HHTP version 1.0 trong response trả về đôi khi sẽ hữu ích ví dụ như khi muốn ngăn chặn HTTP pipelining;
- Set response header “Connection: close”/ Set “Connection: close” on incoming requests: Tương tự như trên, cái này cũng sẽ hữu ích cho tình huống muốn ngăn chặn HTTP pipelining;
- Strip Proxy-* headers in incoming requests: Browser thỉnh thoảng có thể gửi request header bao gồm các thông tin cho proxy server nên có thể bị mấy website độc hại gạ gẫm phụt ra các thông tin nhạy cảm kèm theo header. Để ngăn chặn việc này, mặc định, Burp Suite sẽ strip (cắt) đám này để bóp chết âm mưu từ trứng nước. Nếu cần thiết, bạn có thể bỏ tùy chọn này để Burp Suite không chấm mút gì vô cái header;
- Remove unsupported encodings from Accept-Encoding headers in incoming requests: Thông thường browser sẽ chấp nhận nhiều thể loại encoding trong response và một số thằng encoding có thể gây ra vấn đề khi Burp Suite xử lý response. Do vậy, mặc định Burp Suite sẽ gỡ sạch đám encoding không hỗ trợ để giảm thiểu vấn đề phát sinh. Tuy nhiên, khi server bắt buộc sử dụng encoding mà Burp Suite không hỗ trợ thì bạn cần phải tắt tùy chọn này đi;
- Strip Sec-WebSocket-Extensions headers in incoming requests: Browser có thể hỗ trợ nhiều loại hình extension cho WebSocket connection, ví dụ như khi để nén các nội dung lại. Và tương tự như trên, một số dạng encoding có thể phát sinh vấn đề khi Burp Suite xử lý response. Do vậy, mặc định Burp Suite sẽ quẳng cái header này đi để loại trừ rắc rối mấy cái extension không xử lý được. Tuy nhiên, khi server bắt buộc sử dụng extension cụ thể mà Burp Suite không hỗ trợ thì bạn cần phải tắt tùy chọn này đi;
- Unpack GZIP / deflate in requests: Một số application (thường là đám sử dụng custom client components – tức các thành phần client có chiên xào, hiệu chỉnh) sẽ nén message body trong request. Với option này, bạn sẽ kiểm soát việc Burp Proxy có tự động bung hàng đám request body đã bị nén hay không. Cần lưu ý một số app có thể bị banh càng nếu nó đang chờ xử lý compressed body mà Burp Suite đã “lỡ tay” đâm thọt vô;
- Unpack GZIP / deflate in responses: Đa số browser châp nhận GZIP-/deflate-compressed content trong respone. Và với option này, bạn cho kiểm soát việc Burp Proxy có tự động bung hàng compressed response bodies hay không. Cần lưu ý là thông thường bạn có thể ngăn server thực thi việc nén response bằng cách loại bỏ Accept-Encoding header trong các request, ví dụ thông qua cái tính năng Match and replace nói ở phần trên.
- Disable web interface at http://burp: Tính năng này sẽ hữu ích khi bạn bắt buộc phải cấu hình listener chấp nhật connection trên unprotected interface và muốn ngăn chặn mấy mặt nồi khác truy cập vô Burp’s in-browser interface;
- Suppress Burp error messages in browser: Khi xuất hiện lỗi, mặc định Burp Suite sẽ trả về error message liên quan đến browser. Trong tình huống bạn đang chơi stealth mode – ví dụ chơi man-in-the-middle attack thì có điên mới để cho nó thông báo lỗi. Lúc này hiển nhiên bạn sẽ cần đàn áp đám error message này đi để che đậy tội ác kinh hoàng đã và đang diễn ra;
- Don’t send items to Proxy history or live tasks: Tùy chọn này sẽ ngăn chặn Burp Suite log request vô Proxy history hoặc gửi qua Live task (ví dụ passive crawling/ live auditing). Cái này sẽ hữu ích trong tình huống bạn sử dụng Burp Proxy cho các mục đích cụ thể như xác thực với upstream servers hoặc thao tác match and replace và muốn tránh tiêu tốn memory và storage cho đám log không cần thiết;
- Don’t send items to Proxy history or live tasks, if out of scope: Tùy chọn này sẽ ngăn chặn Burp Suite log đám request out-of-scope vô Proxy history hoặc gửi qua Live task (ví dụ passive crawling/ live auditing) để tránh phải lưu trữ các dữ liệu không cần thiết.
Phù, đến đây tôi xin hết. Hẹn gặp lại bạn trong kỳ tới với phần la liếm sang các công cụ tấn công cụ thể của Burp Suite.
1 thought on “Penetration Testing Step 3 – Chi tiết về Proxy tab, trái tim của Burp Suite”