How Do Hidden Parameters Arise?

Tại sao lại tồn tại hidden params:

  • Từ môi trường dev (chẳng hạn như các tham số dùng để bypass cache).
  • Các tham số internal hoặc dành cho chức năng của admin (chẳng hạn như các tham số tracking)
  • Các API endpoint hoặc route cũ.
  • Các tham số không được tài liệu hóa nhưng vẫn có thể truy cập được bởi bất kỳ ai.

HTML Input Fields

Trong HTML có thể có một số các hidden input fields (sử dụng thuộc tính hidden), bao gồm cả các field không phải form.

Ví dụ, form bên dưới có một hidden input field là user_id:

Để phát hiện các field này, ta có thể sử dụng các công cụ crawling chẳng hạn như gospider. Ngoài ra, ta cũng có thể cấu hình để Burp Suite tự động highlight hidden input fields trong Settings > Proxy > Response modification rules.

JavaScript File Enumeration

Việc phân tích file JavaScript cũng có thể giúp phát hiện các param ẩn:

Trong hình trên, nhờ vào việc đọc file JavaScript, ta có thể biết được các field trong request body cũng như là query param chẳng hạn như type.

Variable Names

Chúng ta có thể lấy tất cả các biến trong file JavaScript rồi dùng chúng làm query param để phát hiện hidden params.

Intercepting Client-side Parameters

Sử dụng một công cụ nào đó chẳng hạn như Eval Villain để hook vào hàm URLSearchParams.get. Việc hook vào hàm này giúp ta biết rằng query params nào được sử dụng trong client-side script.

Google/GitHub/Wayback Machine Enumeration

Sử dụng Google Dork:

site:.example.com inurl:? || inurl:&
Sử dụng các dork tương tự cho Bing, DuckDuckGo, Yandex hoặc GitHub.

Hoặc cũng có thể dùng Wayback Machine để tìm các query params cũ.

Parameter Fuzzing

Sử dụng một số công cụ chẳng hạn như:

Nên sử dụng kết hợp generic wordlist và custom wordlist khi fuzzing.

Re-use of Parameters

Nếu target có ứng dụng di động thì đọc source code để tìm các URL mà có query params.

Resources