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、评论或功能请求,请告知我。