Report

PostSwigger

Cách cài đặt Burp Certificate:

Các chức năng cơ bản của BurpSuite:

Target

Mục đích của Target: giúp pentester có cái nhìn tổng quan về mục tiêu và lập kế hoạch tấn công hiệu quả

Các thành phần trong Target:

  • 1 - Site map: Nơi hiển thị toàn bộ domain, subdomain, structure đã được scan/tương tác thông qua proxy

  • 2 - Scope: Quản lí các site (List, Unlist) để đưa vào trong quá trình kiểm thử

  • 3 - Issues: Liệt kê các lỗ hổng mà BurpSuite đã từng phát hiện trong khi scan

  • 4 - Panel Site tree: Hiển thị cấu trúc cây các site và API endpoint, source

  • 5 - Contents: Hiển thị chi tiết các request đã được thu thập

  • 6 - Request/Response: Cửa sổ xem chi tiết từng request - response tương ứng tại mục Contents

  • 7 - Issues list: Tổng hợp chi tiết các issue, đi kèm severity, confidence, URL,...

  • 8 - Issues detail: Mô tả chi tiết vấn đề bảo mật, giải thích lý do, nguy cơ, cách thức khai thác và giải pháp tạm thời

  • 9 - Crawl paths view: Đây là chức năng scan nhưng ở dạng live (real time), có thể xem lần lượt từng location/target được discovered (Ảnh bên dưới)

  • 10 - Search / filter: Cho phép tìm filter nhanh trong sitemap, giúp truy xuất thông tin/nội dung muốn kiểm tra/chứng minh dễ dàng.

Proxy

Tab Proxy hiển thị chi tiết các request đi qua Burp Proxy. Tại đây, có các tùy chọn Forward, Drop, Chỉnh sửa hay chuyển sang các action khác (repeater, intruder, etc...)

Các thành phần trong Proxy Tab:

  • 1 - Intercept: đây là tab chính của chức năng proxy, nơi có thể bật/tắt chức năng Intercept (chặn, sửa và chuyển tiếp HTTP request/response).

  • 2 - HTTP History: Liệt kê tất cả các HTTP request/response đã đi qua proxy của Burp, giúp xem lại lịch sử tương tác giữa trình duyệt và server.

  • 3 - WebSockets History: Lưu lại lịch sử các kết nối WebSockets (giao tiếp thời gian thực) đã đi qua Burp Proxy.

  • 4 - Match and Replace: hỗ trợ tìm kiếm (match) và thay thế (replace) tự động các chuỗi trong HTTP/S request hoặc response đi qua proxy.

  • 5 - Proxy Settings

    • Thiết lập cấu hình proxy: cổng, địa chỉ lắng nghe, chế độ hoạt động, các rule forward, drop,…

    • Cho phép kiểm soát chi tiết việc chuyển tiếp traffic giữa browser và server.

Intruder

Intruder : cho phép test ứng dụng web bằng cách gửi các payloads đã được định nghĩa trước lên server, sau đó xem xét kết quả trả về

Các thành phần của Intruder

  • Attack Types:

    • Sniper: Dò từng vị trí một với toàn bộ payloads (có thể áp dụng fuzz cho từng parameter riêng lẻ).

    • Battering Ram: Sử dụng cùng một payload cho tất cả các vị trí cùng lúc.

    • Pitchfork: Kết hợp nhiều list payload, mỗi list cho từng vị trí, gửi đồng thời, cùng lúc và theo thứ tự.

    • Cluster Bomb: Kết hợp mọi hoán vị giữa các list payloads ở tất cả các vị trí, tạo ra số lượng request rất lớn

  • Request Template(1): đây là mẫu HTTP request mà bạn sẽ thực hiện tấn công. Các vị trí muốn chèn payload sẽ được đánh dấu bằng cặp ký tự đặc biệt: § (ví dụ: $p1val$, $p2val$…).

  • Payload: chứa nhiều loại payload khác nhau tùy vào từng endpoint và tùy vào từng loại payload sẽ có các cách config khác nhau

  • Resource pool: ccho phép tạo, cấu hình và cấp phát resource pool riêng biệt cho từng cuộc tấn công (ví dụ: số lượng thread đồng thời, tốc độ gửi request).

  • Settings: nơi cấu hình chi tiết toàn bộ các tùy chọn liên quan đến hoạt động của Intruder.

    • Bao gồm các cài đặt như:

      • Định nghĩa kiểu attack mặc định;

      • Cách xử lý lỗi và timeout;

      • Cấu hình phản hồi với các điều kiện nhất định (filter kết quả đáp ứng điều kiện nào mới lưu...);

      • Thiết lập encoding, kỹ thuật xử lý đầu vào/đầu ra;

      • Các tùy chọn nâng cao khác liên quan đến giao thức, proxy, cookie,...

Repeater

Repeater: có thể tùy ý thay đổi và gửi lại những request khác nhau tới server. Đồng thời sẽ nhận về response từ server để có thể phân tích được gói tin

Các thành phần trong tab Repeater:

  • Inspector: Nó sẽ liệt kê các thành phân trong request và response

  • Notes: ĐƯợc sử dụng để ghi chú cho từng request

  • Custom actions: Nơi có thể custom BurpSuite để thực hiện các minitask cho từng request.

Collaborator

Collaborator: giúp phát hiện các lỗ hổng bảo mật như Server Side Request Forgery (SSRF), External Service Interaction, và các vấn đề liên quan đến việc giao tiếp với các dịch vụ bên ngoài.

Sequencer

Sequencer: công cụ chuyên dụng để kiểm tra, phân tích mức độ ngẫu nhiên (randomness) của các giá trị token quan trọng như session ID, CSRF token, reset password token… mà ứng dụng web sinh ra.

Quy trình cơ bản sử dụng Sequencer

  1. Gửi request tạo ra token (ví dụ login, đăng ký, gửi form…) sang Sequencer.

  2. Chọn vị trí token cần phân tích (auto hoặc custom).

  3. Start live capture để Burp tự động thu thập nhiều giá trị token.

  4. Bấm Analyze now để hệ thống chạy kiểm tra.

  5. Đọc kết quả tại từng tab phân tích: entropy, pattern, khuyến nghị chi tiết.

Decoder/Comparer/Logger

Đây là 3 công cụ để thực hiện các minitask như là decode/encode và so sánh 2 request-response và xem toàn bộ HTTP traffic sinh ra bởi các công cụ của BurpSuite

Organizer

Organizer:

  • Lưu trữ, gắn nhãn, quản lý các request/response quan trọng: ta có thể gửi (send) các request từ các tool khác (Repeater, Logger, Proxy…) đến Organizer để “bookmark” lại, phục vụ phân tích chuyên sâu hoặc báo cáo.

  • được dùng như một “todo list”, cho phép bạn dán nhãn trạng thái từng request (New, In progress, Postponed, Done, Ignored), ghi chú (notes) liên quan, tô màu (highlight) để dễ nhận diện mức quan trọng

Cấu trúc HTTP Request Response

HTTP Request

HTTP Response

  • Status Line: <VERSION> <STATUS-CODE> <REASON-PHRASE>

    • 1xx (Informational): Các status code loại này dùng để đơn giản thông báo với client rằng server đã nhận được request.

    • 2xx (Sucess): Các status code loại này có ý nghĩa rằng request được server và xử lý thành công.

    • 3xx (Redirect): Các status code loại này có ý nghĩa rằng server sẽ chuyển tiếp request hiện tại sang một request khác và client cần thực hiện việc gửi request tiếp theo đó để có thể hoàn tất.

    • 4xx (Client error): Các status code loại này có ý nghĩa rằng đã có lỗi từ phía client trong khi gửi request.

    • 5xx (Server error): Các status code loại này có ý nghĩa rằng đã có lỗi từ phía server trong khi xử lý request.

  • Response Headers

  • A blank line

  • Response Message Body

HTTP Method

GET

Lấy dữ liệu từ server. Dữ liệu gửi lên (nếu có) nằm trên URL.

POST

Gửi dữ liệu mới lên server (thường để tạo mới tài nguyên). Dữ liệu nằm trong phần body request nên an toàn hơn GET về mặt hiển thị.

PUT

Cập nhật hoặc thay thế toàn bộ thông tin của một tài nguyên đã có trên server. Khi gửi PUT, toàn bộ thông tin sẽ bị ghi đè bởi dữ liệu mới (nếu thiếu field nào sẽ bị mất field đó)

PATCH

Sửa/mở rộng một phần thông tin của tài nguyên. Khác PUT ở chỗ chỉ thay đổi phần muốn cập nhật, không ghi đè toàn bộ thông tin

DELETE

Xóa tài nguyên trên server. Khi gọi DELETE đúng, tài nguyên đó sẽ bị xóa, có thể gọi lại nhiều lần nhưng sau lần đầu sẽ báo không tìm thấy (idempotent)

OPTIONS

là phương thức dùng để hỏi server: "Tài nguyên này hỗ trợ những method HTTP nào?"

TRACE

Khi gửi TRACE request, server sẽ phản hồi lại toàn bộ nội dung request đã gửi, giúp kiểm tra xem request có bị thay đổi trên đường đi (qua proxy, firewall,...) không.

CONNECT, HEAD

Ngoài ra ta còn 2 method khác đó là Connect và Head

  • Connect: Thiết lập kết nối tới server theo URI cụ thể

  • HEAD: giống với GET nhưng không trả về body mà chỉ có phần header của 1 request.

HTTP Header

Host

Header này chỉ định và lưu trữ hostport của server.

X-Forwarded-Host

Đây không phải 1 header chuẩn, Version chuẩn của nó là Forwarded

Header X-Forwarded-Host này được dựa trên header Forwarded trên, được dùng để xác định original host requested bởi client trong Host HTTP request header

X-Forwarded-For

Tương tự như trên nhưng header này được sử dụng để xác định Original IP address của client mà kết nối đến Web Server thông qua proxy server.

Referer

Header này chứa absolute hoặc partial address mà người dùng đã đến từ đó, giúp máy chủ đã biết được nguồn truy cập. Header này dùng để phân tích, tối ưu hóa nhưng có thể làm lộ thông tin người dùng nên cần kiểm soát bằng Referer-Policy.

Origin

Header này chứa các thông tin như trên để cho biết origin request. Tức là url "cha". Khác với Referer, Origin không chứa path chi tiết.

Header này chứa giá trị cookie liên quan đến server. (Ví dụ như lưu trữ giá trị của Set-Cookie response header)

Accept / Content-Type

Header này được sử dụng để thông báo cho server loại nội dung (MIME types) mà client có thể hiểu và chấp nhận trong phản hồi. Nó hỗ trợ đàm phán nội dung, giúp server chọn định dạng phù hợp

Còn header có thể xuất hiện trong cả HTTP req - res. Nó chỉ định loại nội dung (MIME type) của dữ liệu đang được gửi, giúp bên nhận biết cách xử lý dữ liệu

X-Frame-Options

Là một header HTTP quan trọng, được sử dụng để bảo vệ trang web khỏi các cuộc tấn công clickjacking bằng cách kiểm soát việc hiển thị nội dung trong <frame>, <iframe>, <object> hoặc <embed>

Content-Security-Policy (CSP)

Header này được sử dụng để nâng cao bảo mật cho các trang web bằng cách kiểm soát nguồn gốc của tài nguyên được tải và thực thi để ngăn chặn các cuộc tấn công như cross-site scripting (XSS), clickjacking

Các policy directive chính:

  • default-src: Quy tắc mặc định cho tất cả tài nguyên nếu không có directive cụ thể khác (ví dụ: default-src 'self' chỉ cho phép từ cùng nguồn gốc)

  • script-src: Kiểm soát nguồn của script JavaScript (ví dụ: script-src 'self' https://trusted.com)

  • style-src: Kiểm soát nguồn của CSS.

  • img-src: Kiểm soát nguồn của hình ảnh.

  • frame-ancestors: Ngăn chặn clickjacking bằng cách chỉ định nguồn được phép nhúng trang (tương tự X-Frame-Options nhưng linh hoạt hơn).

  • report-to hoặc report-uri: Gửi báo cáo vi phạm để theo dõi (ví dụ: report-to csp-endpoint)

Các giá trị phổ biến bao gồm 'self' (cùng nguồn), 'none' (không cho phép), hoặc URL cụ thể

<Thêm>

Location

Header này chứa giá trị url được chỉ định để chuyển hướng khi gặp Status code 302

User-Agent

Header này được gửi kèm mỗi lần thực hiện HTTP request. Giá trị của header cho phép máy chủ nhận diện trình duyệt, hệ điều hành, thiết bị hoặc bot đang truy cập

Authorization

Header dùng để gửi thông tin xác thực (credentials) từ client tới server nhằm truy cập tài nguyên được bảo vệ. Header này thường chỉ xuất hiện sau khi client đã nhận phản hồi 401 Unauthorized kèm WWW-Authenticate, nhưng cũng có thể được gửi ngay nếu client đã có sẵn thông tin xác thực.

Scheme
Mô tả
Ví dụ header

Basic

Username:Password được Base64-encode; đơn giản nhưng phải đi kèm HTTPS để tránh lộ thông tin.

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Bearer

Mang token (thường JWT hoặc OAuth 2.0 access token); token đại diện quyền truy cập của chủ sở hữu.

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…

Digest

Client gửi hash (MD5/SHA-256) của thông tin đăng nhập cùng nonce do server cấp; giảm rủi ro gửi mật khẩu thô.

Authorization: Digest username="maria", realm="site", nonce="abc", uri="/api", response="dcd98b…"

AWS4-HMAC-SHA256

Dành cho dịch vụ AWS; client ký chuỗi canonical bằng secret key để tạo chữ ký.

Authorization: AWS4-HMAC-SHA256 Credential=AKIA…/20250724/... , SignedHeaders=host;x-amz-date, Signature=...

Cookies

Sau khi đăng nhập, server sinh session ID (JSESSIONID, PHPSESSID) -> Gửi trong Set-Cookie. Mỗi request kết tiếp trình duyệt tự gửi cookie này; server tra session table để xác thực người dùng nên ta không cần phải đăng nhập lại

Các Flag của Cookies

Thuộc tính
Công dụng

Expires / Max-Age

Thời gian sống (phiên đăng nhập được “ghi nhớ”).

Domain, Path

Phạm vi gửi cookie.

Secure

Chỉ gửi qua HTTPS.

HttpOnly

JavaScript không truy cập được (giảm XSS).

SameSite

Giới hạn gửi cookie theo nguồn (giảm CSRF).

Cấu trúc URL

scheme://[user[:pass]@]host[:port][/path][?query][#fragment]

  • scheme: giao thức (http, https, ftp …).

  • user:pass@ (tùy chọn): thông tin đăng nhập.

  • host: tên miền hay địa chỉ IP.

  • port: cổng (mặc định 80 / 443 nếu bỏ qua).

  • path: tài nguyên.

  • query: cặp tham số name=value sau dấu ?; nhiều cặp cách nhau &.

  • fragment: thẻ # cho client-side, không gửi lên server.

Web Functionality

  1. Server-side

    • Xử lý request, tạo dynamic content (JSP, ASP.NET, PHP…).

    • Giao tiếp back-end: CSDL, SOAP/REST, dịch vụ e-mail.

    • Duy trì state bằng session token (cookie, URL-rewrite).

  2. Client-side

    • HTML/CSS hiển thị; JavaScript thao tác DOM, kiểm dữ liệu.

    • Ajax(Asynchronous JavaScript and XML)/XHR(XMLHttpRequest) thực thi request.

    • Extension: Flash, Java Applet, Silverlight – mở rộng khả năng hiển thị tại client-side nhưng tăng bề mặt tấn công.

  3. State & Session

    • HTTP không có trạng thái → ứng dụng tạo session giữ thông tin giỏ hàng, login, v.v.

    • Token yếu, dự đoán được hoặc lộ qua URL/log sẽ dẫn đến chiếm phiên.

Encoding Schemes

Loại
Mục đích
Mẫu
Bối cảnh

URL-encoding

Cho phép ký tự “lạ” đi qua HTTP (space → %20)

/search?q=red%20team

Trong URL hoặc trong Request's Body

Unicode / UTF-8

Hỗ trợ đa ngôn ngữ, có thể né lọc đầu vào

%u2215 (/)

Trong HTML hoặc Request's Body để hiển thị đa ngôn ngữ

HTML-encoding

Hiển thị ký tự đặc biệt an toàn, ngừa XSS

&lt;script&gt;

Trong HTML

Base64

Truyền dữ liệu nhị phân qua ASCII

TWFuIGlzIGRpc3...

Trong text-base request hoặc response

Hex-encoding

Chủ yếu cho dữ liệu nhị phân, debug

\x4d\x5a…

Trong các network packets

Last updated

Was this helpful?