TL;DR

headi (github.com/mlcsec/headi) là một CLI Go nhỏ gọn, single-binary, dùng để tự động hóa HTTP header injection khi pentest hoặc săn bug bounty. Nó gửi một request baseline, sau đó replay với 24 header phổ biến (Host, X-Forwarded-For, X-Original-URL, X-Rewrite-URL…) bơm payload, rồi tô màu xanh các response thay đổi và đỏ các response giữ nguyên. Mục tiêu: phát hiện niềm tin sai chỗ ở backend — những header attacker kiểm soát được nhưng server lại tin tưởng để cấp quyền, định tuyến cache, hoặc rewrite URL nội bộ.

Điểm đáng chú ý

headi không phải tool mới — repo có từ tháng 12/2020 — nhưng đang được dân bug bounty share lại trên X như một utility "ít nói, nhiều giá trị". Vài con số:

  • 282 sao, 56 fork trên GitHub, topic chính thức: bugbounty, golang, header-injection.
  • Code 97% Go, build được sang single binary với go install github.com/mlcsec/headi@latest.
  • Mặc định test 24 header trust trong một lần chạy — đủ phủ phần lớn các kiểu IP spoofing, host override, URL rewrite hay gặp trong báo cáo bounty.
  • So với Burp Suite + Param Miner (chuẩn ngành cho cache-poisoning research): headi không thay thế, nhưng là bước recon CLI rất nhanh trước khi mở Burp.

Vì sao đáng quan tâm

Header injection là dạng lỗi vừa cũ vừa "gần như không bao giờ hết" vì nó phụ thuộc vào kiến trúc nhiều tầng: CDN, reverse proxy, load balancer, app server đều có thể đọc cùng một header với ý nghĩa khác nhau. PortSwigger từng public case cache của HackerOne bị poison qua X-Forwarded-Host, hay Rails Rack tin X-Forwarded-Scheme dẫn tới redirect-loop ảnh global. Những lỗi này không lộ ra qua scanner CVE — phải chủ động bơm header và quan sát phản ứng.

Đó chính xác là việc headi làm tự động: bạn không cần nhớ wordlist hay copy-paste curl 24 lần.

Technical facts

PropertyValue
Ngôn ngữGo (97.2%)
Cài đặtgo install github.com/mlcsec/headi@latest
Số header test mặc định24
CLI flags-u URL, -p payload file, -t timeout (ms)
Sao / Fork282 / 56
Tạo / Cập nhật19/12/2020 — vẫn còn hoạt động đến 04/2026
LicenseKhông khai báo trong repo (cẩn thận khi fork lại)

Danh sách 24 header được test:

Client-IP, Connection, Contact, Forwarded, From, Host, Origin, Referer, True-Client-IP, X-Client-IP, X-Custom-IP-Authorization, X-Forward-For, X-Forwarded-For, X-Forwarded-Host, X-Forwarded-Server, X-Host, X-HTTP-Host-Override, X-Original-URL, X-Originating-IP, X-Real-IP, X-Remote-Addr, X-Remote-IP, X-Rewrite-URL, X-Wap-Profile.

So với các tool cùng nhóm

ToolGiao diệnĐiểm mạnhĐiểm yếu
headiCLI GoNhanh, 24 header có sẵn, baseline diff tô màuKhông có concurrency cross-host, output text
Burp + Param MinerGUIWordlist khổng lồ, deep cache researchCần Burp Pro, không hợp pipeline
nuclei (header templates)CLI GoTích hợp pipeline lớn, scale tốtCần viết template, kém phần baseline diff
ffuf / wfuzz + wordlistCLILinh hoạtPhải tự dựng baseline-diff

Use cases thực tế

  • Auth / IP allowlist bypass: nhiều admin panel chỉ check X-Forwarded-For: 127.0.0.1. headi phát hiện trong vài giây.
  • Cache poisoning recon: tìm header "unkeyed" (X-Forwarded-Host, X-Original-URL) ảnh hưởng response nhưng không vào cache key — kết hợp cache-buster để khẳng định.
  • Password-reset poisoning: kinh điển — server tin Host/X-Forwarded-Host để build link reset, attacker chuyển sang domain mình kiểm soát.
  • SSRF qua URL rewrite: X-Original-URL / X-Rewrite-URL có thể pivot vào endpoint nội bộ trên IIS / một số reverse proxy.
  • CI gate: chạy headi trong pipeline staging để bắt regression khi team đổi reverse proxy hoặc CDN.

Lệnh chạy mẫu

headi -u https://target.com/admin
headi -u https://target.com/admin -p payloads.txt -t 5000

Trong payload file, gợi ý các giá trị: 127.0.0.1, localhost, IP nội bộ 10.0.0.1, 169.254.169.254 (metadata cloud), Burp Collaborator URL để bắt SSRF blind.

Limitations & pricing

  • Miễn phí, mã nguồn mở — nhưng repo không có file LICENSE, mặc định coi như "all rights reserved" theo luật bản quyền GitHub. Ổn để chạy local; cẩn thận khi redistribute hoặc nhúng vào sản phẩm thương mại.
  • InsecureSkipVerify không bật mặc định — gặp target dùng cert tự ký phải vào source uncomment lại rồi rebuild.
  • Một lần chạy chỉ một URL. Quét scope lớn: bọc xargs -P hoặc shell loop.
  • Wordlist mặc định nhỏ. Cache-poisoning research nghiêm túc vẫn cần Param Miner.
  • Output là text màu — đẩy vào triage automation cần parser nhỏ.

Take-away

Không phải mọi tool bug bounty đều cần là "framework". headi là kiểu utility cũ-mà-hay: làm đúng một việc — bơm 24 header, so baseline — và làm gọn. Bỏ vào toolbox cùng ffuf, nuclei, subfinder, đặt nó ở bước recon ngay sau khi liệt kê được host alive, bạn sẽ ngạc nhiên về số lượng backend vẫn còn tin sai header attacker bơm vào.

Nguồn: github.com/mlcsec/headi, PortSwigger Research, YesWeHack — HTTP header hacks, @obscaries on X.