HTTP追踪路由工具:深入解析网络重定向与Cookie管理

本文详细介绍了HTTP Traceroute工具的开发背景、功能特性及实现原理。该工具能够追踪URL重定向过程,收集响应头信息,管理Cookie数据,支持代理访问,并提供了HTTPS证书验证和重定向体大小检测等实用功能。

HTTP Traceroute

该项目最初是作为对@christruncer优秀工具EyeWitness的扩展想法而诞生的。核心概念很简单:获取一个会重定向的URL,并跟踪这些重定向直到最终目的地。在每个阶段显示所有头部信息,收集Cookie,识别具有长正文的重定向,并对遇到的任何无效证书进行注释。

该工具还提供了保存所有服务端返回的Cookie并在第二次运行时重放它们的选项。

实现细节

虽然这个项目可能有些过度设计,但它成为了我练习使用net/http gem的好方法。Cookie支持通过名为CookieJar的gem实现,但该gem存在一些bug,我已经提交了修复方案,但截至撰写时,我的pull request尚未被接受。因此,我将我的项目分支作为库包含在内,如果pull request被接受,我将移除它并进行整理。

Cookie以JSON格式保存,便于查看和修改(如果需要),并在后续运行中重放。这在网站首次访问设置Cookie,然后在看到该Cookie时更改路径的情况下特别有用。

工具还支持代理,允许通过Burp Suite等工具进行跳转。

安全特性

如果访问HTTPS站点,会检查证书并在无效时发出警告。如果执行重定向的页面超过给定大小(默认为500字节,但可根据需要调整),也会发出警告。这有助于发现重定向头部意外附带正文的情况。

默认情况下,脚本最多运行10次重定向后放弃,旨在防止重定向循环问题。此值也可根据需要增加。

示例输出

以下是在我的测试域中运行的示例输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
./http_traceroute.rb http://cewl.dev/red.php -c demo.json

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

************************************************************
Starting at: http://cewl.dev/red.php
************************************************************
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
set-cookie: leaveme=Alone
location: red2.php
content-length: 0
connection: close
content-type: text/html; charset=UTF-8

=======
Cookies
=======
rewriteme ; First+Value ; cewl.dev ; / ;  ;  ; Session
leaveme ; Alone ; cewl.dev ; / ;  ;  ; Session

===========
Redirecting
===========
Location: red2.php
Redirecting to: http://cewl.dev/red2.php

...(后续重定向过程省略)

在此次运行中,Cookie被保存到文件中,以下是JSON格式:

1
2
3
4
5
6
{
	"json_class":"CookieJar::Jar","cookies":"[
		{\"name\":\"rewriteme\",\"value\":\"Second+Value\",\"domain\":\"cewl.dev\",\"path\":\"/\",\"created_at\":\"2014-11-02 20:11:42 +0000\",\"json_class\":\"CookieJar::Cookie\"},
		...(其他Cookie数据)
	]"
}

可以看到,我们得到了302→301→302的重定向序列,最终以200状态码到达目的地。过程中收集了6个Cookie,包括会话Cookie和持久性Cookie,以及带有HTTPOnly和Secure标志的Cookie。页面http://cewl.dev/red3.php有一个长正文,值得进一步调查。

Cookie以易于查看和修改的方式存储,便于重放或转移到其他地方。

下载

  • 2016年2月28日 - 下载HTTP Traceroute 1.1
  • 2014年11月1日 - 下载HTTP Traceroute 1.0

如果您想尝试Go语言版本,可以试试@PaulWebSec的这个版本。

问题与反馈

如有任何bug、评论或功能请求,请告知我。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计