Copyright (c) 2010 Czy Invicta <Hack01@Live!cn> All rights reserved.
这篇文章将为你讨论评估Cisco Web服务安全性的一些方式,有几种框架和工具在进行这种评估时非常有用,不过不幸的是,有些是私有的、价格昂贵的闭源软件。可以利用几种不错的商用工具执行安全评估。这些工具通常可以对目标服务执行一系列的详尽测试。这些工具大多数是可以从安全市场上获得——例如,Application Security公司的AppDetective、SPI Dynamics的WebInspect和Immunity的CANVAS。这些工具通常适合于以安全为中心的、提供各种级别网络/应用评估服务的公司。它们在每天工作结束时会产生很漂亮的报告,非常适合于管理层的视觉习惯,这些人通常不会对技术细节感兴趣。
SPIKE ~~~~~~~~
首先要说的是SPIKE,这种非常强大的软件是一种发现攻击的工具,来自于Immunity。可以从http://www.immunitysec.com/resources-freesoftware.shtml下载这个工具。
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 \r\n"); 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("***服务器断开连接!\n"); } first=0; if (retval) {
printf("%.500s",buffer); } } s_incrementfuzzstring(); spike_close_tcp(); } s_incrementfuzzvariable(); } printf("完成.\n"); return 0; }
建议将输出重定向到一个文件,以便以后可以对它进行分析。如果你看到任何不寻常的信息,就要花点时间看看并进行进一步的分析和研究。也许你刚好发现了Cisco HTTP服务器中的另一个漏洞。
Peach Fuzzer ~~~~~~~~~~~~~~~
Peach是一种用Python编写的Fuzzer。这种工具有助于发现并公开许多漏洞,并认为是黑客和安全团体中最流行的工具之一。为了利用Peach框架,必须创建Phthon脚本,脚本中包含了在服务器上执行的fuzzing攻击的细节。默认情况下,Peach在相同的目录中放置了一些攻击例子。为了运行相同的脚本,可以根据你的需要编辑它们,并利用python <script_name>查看这个工具执行操作。你的输出应该类似于以下这样(取决于你编写的脚本):
$ python test-http.py GET /index.html HTTP/1.0 Host: 192.168.15.77:80
GET /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...AAA HTTP/1.0 Host: 192.168.15.77:80
GET /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...AAAA HTTP/1.0 Host: 192.168.15.77:80
上面的输出是通过运行例子目录中的一个Peach fuzzer脚本得到的。这个脚本执行简单的检查,查看HTTP服务器或服务器上运行的脚本是否可以处理具有长串的请求。
这些脚本文件有些类似于SPIKE fuzzer的makeWebfuzz.pl脚本产生的Webfuzz.c文件。其思路是类似的。
尾声和对策 ~~~~~~~~~~~~
针对类似方法的最适当措施应该是提前行动——维护代码的安全并由多个具有安全意识的软件开发人员对其进行审计。如果预算允许的话,对付类似攻击的其他方式是设计并部署IDS,而且IDS最好集成了主动式入侵预防机制。由于开发、部署和维护的原因,这种解决方案的成本不低。不过,如果贵公司的业务活动高度依赖于IT基础设施,风险评估和成本效益分析就应该能够说服管理层采取这些措施。除此之外,如有疑问请写Email(Hack01[at]Live.cn)向我告知。
# HACKER NETSPY [CZY]
|