这篇文章是有感于Web Analysis, Vulnerability Assessment and Exploitation using Backtrack5(http://resources.infosecinstitute.com/web-analysis-bt-5/), web安全性分析/漏洞利用一直是风险评估/渗透测试过程中一个重要的环节。甚至有时是外网渗透测试过程中唯一的突破口。Hari Krishnan的文章虽然看似只是简单介绍了如何利用BT5中的一些工具进行web风险评估和漏洞利用,实质上从中还是可以看出web渗透测试的一个基本思想或者说是基本思路。个人觉得渗透测试也好,风险评估也好,每一个案例都是一个工程。如果渗透测试人员能够把每一次的渗透测试任务当成一项工程来做,并不断总结经验和教训,我相信个人能力一定会得到很大的提高。
    我的博客中介绍了很多各种各样的工具,最初的想法很简单,把好的东西分享给大家。并不是要在这里传播工具,悲剧的是12月15号,因为介绍了一款工具博客被短暂的和谐了,把文章删除以后就恢复了...,有人发邮件问我原因,没回复,这里算是回复了,谢谢提醒了。一个渗透测试人员不会使用工具是悲剧的,有两种情况发生一种是他什么也做不出来,另一种是做出来了,号称纯手工,貌似很高深,其实费了牛劲了。一个渗透测试人员如果只会使用工具那会更悲剧,因为很难再上一个层次,工具能做的他能做,工具做不了的他也做不了,这样会导致一个情况就是他可有可无,他谁都可以替代。细心的同学会发现我这里介绍的工具,大多数都是开源的,不是说闭源的没有好的工具,而是想大家真正的能从工具中吸收一些营养,一个工具无论它价值大小,或者不论它是成功的还是失败,总是凝结的了开发者的思想和技术在里面。成功的东西我们可以学习借鉴,失败的东西同样也可以学习借鉴。失败的东西至少可以让你少走一条失败的道路。
    所以说别人分享的工具一定要去用进而再去研究。以whatweb为例,拿到这款工具首先我们要把它用起来,在BT5上你就可以直接用了,如果你不想在BT5上使用,想在windows上使用,那你就要把它安装上,保证它可以正常工作。接着感受它的效果,要进行实际测试,既然它是web指纹识别,那就拿一些你可以确定的在线web应用系统测试。如果它是成功的我们可以将它加入到兵器库中,但绝对不是简单的将它放起了事,那样的话你会发现他在日后的应用中并不能得心应手。中文乱码、没有国内cms系统识别模块等等一些问题。接下来的事,才是你最应该去做的事,研究whatweb的技术原理。研究过程中你至少可以学到当前有哪些web应用程序识别方法,whatweb是以怎样的方式来做web应用程序识别的(whatweb的工作原理),whatweb的插件调度机制,如何开发whatweb插件,弄个discuz识别插件自己试一试,说出whatweb的成功和不足之处等等,whatweb研究透了,还可以思考:如果让我做一个web应用指纹识别产品我应该怎样去实现它?。
    以上YY了一些东西,无非是想说不要仅停留在用工具的层面,还要研究工具,修改工具,定制属于自己的工具,开发工具等等。借鉴一切可以借鉴的东西,把一切可以借鉴的东西变成自己的东西。
   步入正题说web渗透测试,每个人做同一件事情或多或少总有些不同。事实上做事方法和角度可能不同,归根结底还是要遵循事物的一般规律,违背规律,你有apache的0day直接去攻击IIS,收到的结果可能也是徒劳。web渗透测试的大致有几个方面:信息的收集;漏洞的利用;获取shell。
   信息的收集,我们感兴趣的东西很多,如域名信息,子域名信息,DNS,web应用服务器信息,网站目录结构,web应用程序名称,web应用程序插件,管理员用户名称,email地址,安全防护设备信息等等。
    域名相关信息的获取:DNSDataView、Maltego、Revhosts、theHarvestor、srgn-infogather、QuickRecon、whoistd...
    web应用服务器信息的获取:httprint、httprecon...
    网站目录结构的获取:DirBuster、http-dir-enum,wfuzz,pywebfuzz...
    web应用程序识别:BlindElephant、CMS-Explorer、WhatWeb...
    web应用程序插件识别:plecost、wpscan、joomscan...
    waf检测:Waffit、ua-tester
    漏洞的利用,远程代码执行,上传漏洞、SQLi,LFI/RFI,XSS,CSRF等等
    web漏洞利用工具:SQLmap、Xsser、beef、Fimap、W3af、Xssploit、WebExploitationFramework、OWASP Mantra、pysqlin、themole...
    webshell太多了,不列举了。
上面列举了一些典型的web渗透测试工具,绝大多数都是脚本语言编写,并且开放源代码。研究这些工具,你可以完善、改造并形成自己的渗透测试工具集。其实说了这么多主要是表达web渗透测试的一个思路:先识别web应用程序,搜寻的公开漏洞,如果主程序没有漏洞,再识别web应用程序的插件信息,搜寻插件的公开漏洞。如果没有公开漏洞则挖掘或其他手段获取web应用程序or插件的0day漏洞。若web应用确实无懈可击还可以考虑社会工程。关键是尽可能多的获取各种相关信息,并根据这些信息找到一条切实可行的攻击路径。按照这个思路,要提高渗透测试的效率和成功率,需要我们积累,web应用程序的识别、插件的识别、公开漏洞,0day,利用各种web漏洞获取shell的方法等等。
    最后还想说的是我博客可以关闭,但请记住落后就要挨打,如果国外公开的技术或工具国内传播一下都不行,那我们与别人整体上的技术差距只能越来越远。这里强调整体上的差距是因为国内毕竟还有很多牛人,只是国内没有这个环境让他们把自己的研究拿出来分享。