- headi là CLI Go open-source của mlcsec, tự động bơm 24 HTTP header (X-Forwarded-For, X-Original-URL, Host…) vào target và so sánh với baseline để lộ ra những backend đang tin sai header.
- Một single binary 282 sao, miễn phí, vừa đủ để soi auth bypass, cache poisoning và SSRF qua header trong vài giây.
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
| Property | Value |
|---|---|
| Ngôn ngữ | Go (97.2%) |
| Cài đặt | go install github.com/mlcsec/headi@latest |
| Số header test mặc định | 24 |
| CLI flags | -u URL, -p payload file, -t timeout (ms) |
| Sao / Fork | 282 / 56 |
| Tạo / Cập nhật | 19/12/2020 — vẫn còn hoạt động đến 04/2026 |
| License | Khô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
| Tool | Giao diện | Điểm mạnh | Điểm yếu |
|---|---|---|---|
| headi | CLI Go | Nhanh, 24 header có sẵn, baseline diff tô màu | Không có concurrency cross-host, output text |
| Burp + Param Miner | GUI | Wordlist khổng lồ, deep cache research | Cần Burp Pro, không hợp pipeline |
| nuclei (header templates) | CLI Go | Tích hợp pipeline lớn, scale tốt | Cần viết template, kém phần baseline diff |
| ffuf / wfuzz + wordlist | CLI | Linh hoạt | Phả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-URLcó 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 5000Trong 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.
InsecureSkipVerifykhô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 -Phoặ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.

