Spike Proxy是一款开源的以发现网站漏洞为目的的HTTP代理。它是Spike Application Testing Suite的一部分,功能包括自动SQL注入检测、 网站爬行(web site crawling)、登录列表暴力破解、溢出检测和目录游走检测。
下载链接:http://down.51cto.com/data/155573
SPIKE Proxy是测试Web服务的最简便的一种工具,对Web服务器的分析取决于利用这个工具作为代理浏览各种网页的客户。假定你采用python spkproxy.py启用了这个工具,就可以打开浏览器访问SPIKE Proxy界面和评估准则,将它的代理设置设为127.0.0.1:8080,再访问网页http://spike/。
如果你想测试自己的Cisco设备的安全级别,可以利用浏览器输入目标设备的IP地址,让SPIKE使用各种畸形HTTP协议请求的组合对HTTP请求进行fuzzing攻击。这是通过单击下列选项完成的:Delve into Dir、argscan、dirscan和overflow VulnXML Tests。这样做会执行目录遍历、对参数执行fuzzing攻击,通过提交各种长度的串尝试获得缓冲区溢出,还会执行其他有用的任务。你所要做的就是分析响应,并检查服务器是否仍然正常运转。如果你发现服务器停止响应或者响应的信息与你期望的不同,你就可能发现了一个软件缺陷,需要进一步检查、测试。
当然,SPIKE不仅仅是个代理。它具有大量工具可供尝试并测试。我在这里将概述fuzzer集合中的另一个工具:Web-fuzz。为了利用这个工具,你必须设置中间人类型重定向,解释你浏览目标设备的Web界面所产生的所有流量。在完成网站爬行之后,通过下列步骤让Webfuzz对Web服务器进行分析:
1. 以下列方式捕获HTTP请求:
- $ ./webmitm -t <IP/hostname of web site> -p 80
2. 修改你的/etc/hosts(或windows/system32/hosts),以便将你的目标重定向到你主机上的Web代理。
3. 像平时一样浏览网站。这会产生大量文件,这些文件用于进行进一步的处理和分析。
4. 利用makeWebfuzz.pl创建Webfuzz.c。
- $ ./makewebfuzz.pl <http-request-N> > webfuzz.c
利用从Webmitm输出中产生的文件名取代<http-request-N>。
5. 在你的SPIKE src目录中运行$ make,将Webfuzz.c编译成一个二进制文件。
6. 针对Web服务器运行$ ./webfuzz <target-IP> <port>,指定目标设备的IP地址和端口作为例子,Webfuzz.c看上去应该类似于以下这样(显然会由于每种测试场景的不同而不同):
- #include <stdio.h>
- #include <stdlib.h
- #include <string.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <signal.h>
- #include "spike.h"
- #include "hdebug.h"
- #include "tcpstuff.h"
- void
- usage()
- {
- fprintf(stderr,"用法: ./webfuzz target port ");
- exit(-1);
- }
- int
- main (int argc, char ** argv)
- {
- int first;
- char * target;
- char buffer[1500000];
- int port;
- char * optional;
- struct spike * our_spike;
- unsigned long retval;
- int notfin;
- if (argc!=3)
- {
- usage();
- }
- .
- .
- <output omitted on purpose>
- .
- .
- while(retval && notfin)
- {
- memset(buffer,0x00,sizeof(buffer));
- notfin=s_fd_wait();
- if (!notfin)
- break;
- retval=read(our_spike->fd,buffer,2500);
- if (first && (retval==-1 || retval==0))
- {
- printf("***服务器断开连接! ");
- }
- first=0;
- if (retval)
- {
- printf("%.500s",buffer);
- }
- }
- s_incrementfuzzstring();
- spike_close_tcp();
- }
- s_incrementfuzzvariable();
- }
- printf("完成. ");
- return 0;
- }
建议将输出重定向到一个文件,以便以后可以对它进行分析。如果你看到任何不寻常的信息,就要花点时间看看并进行进一步的分析和研究。也许你刚好发现了Cisco HTTP服务器中的另一个漏洞。