HTTP追踪工具 - 深入解析HTTP重定向与Cookie管理

本文详细介绍了HTTP Traceroute工具的开发背景与功能实现,该工具可追踪HTTP重定向链、收集响应头与Cookie数据,支持HTTPS证书验证与代理调试,是网络调试与安全测试的实用利器。

HTTP Traceroute

这个项目最初是作为对@christruncer优秀工具EyeWitness的扩展构想而诞生的。其核心功能很简单:获取一个包含重定向的URL,追踪所有重定向步骤直至最终目标页面。在每次跳转过程中,工具会完成以下工作:

  • 显示所有响应头信息
  • 收集各阶段Cookie
  • 标记包含大体积响应体的重定向
  • 对无效SSL证书发出警告
  • 提供Cookie保存功能以便后续回放测试

技术实现细节

虽然功能需求并不复杂,但这个项目成为我练习使用Ruby的net/http库的良好实践。Cookie处理通过CookieJar库实现,但由于该库存在若干缺陷(我已提交修复补丁但尚未被合并),目前代码中直接包含了我修改后的库版本。

关键功能点:

  1. Cookie管理:所有Cookie以JSON格式存储,支持人工查看/修改后回放测试,特别适用于需要首次访问设置Cookie的网站场景
  2. 代理支持:可配置代理通过Burp Suite等工具进行流量分析
  3. 安全检测
    • 自动验证HTTPS证书有效性
    • 对超过默认500字节的重定向响应体发出警告(可调整阈值)
  4. 防护机制:默认限制10次重定向以防循环跳转(可调整)

示例输出

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
./http_traceroute.rb http://cewl.dev/red.php -c demo.json

http_traceroute 0.1 Robin Wood (robin@digi.ninja) (http://digi.ninja)

************************************************************
Requesting: http://cewl.dev/red.php
Response code: 302
=======
Headers
=======
date: Sun, 02 Nov 2014 20:11:42 GMT
server: Apache
set-cookie: rewriteme=First+Value
location: red2.php
...

完整输出展示了包含302→301→302→200的状态码跳转链,共收集6个Cookie(含Session/Persistent类型及HTTPOnly/Secure标记),并检测到red3.php存在异常大体积响应体。

JSON存储示例

1
2
3
4
5
6
{
    "json_class":"CookieJar::Jar",
    "cookies":[
        {"name":"secure","value":"I+am+secure","domain":"cewl.dev",...}
    ]
}

存储的Cookie数据采用结构化JSON格式,便于二次处理和分析。

版本下载

  • 2016-02-28 HTTP Traceroute 1.1
  • 2014-11-01 HTTP Traceroute 1.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计