SPIKE Proxy:HTTP攻擊檢測
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服務器中的另一個漏洞。