之前写过一个文章《web应用渗透测试流程》,这个文章的主要内容是关于一个web应用如何进行测试,测试什么地方,没有过多的提供使用的工具,只是一个针对web测试的一个流程。今天就主要讲一下关于一个web应用如何进行测试以及在测试中需要使用哪些工具。这个测试方法分为几个部分:信息收集、自动测试、手动测试。
信息收集
不管你在做什么,首先第一步就是信息收集,所谓知己知彼百战不殆,所以想要对一个web应用进行安全测试,首先要做的就是信息收集,还要把收集的信息做有效的整理保存,下面就是信息收集的流程步骤:
1 创建一个项目目录,合理的保存信息,如:myh0st
2 保存整个网站,通过保存网站可以了解到这个web应用所公开的所有信息,包括:目录结构、文件列表、网站内容等,可以两个工具:
wget -rck www.myh0st.cn
https://www.httrack.com/page/2/en/index.html
3 收集目标的email账号,邮箱账号是一个人的id,收集的邮箱越多,可能成功的几率会越高,因为很多情况下,邮箱账号也就是web应用的登录账号,收集的越多,遇到弱口令的情况越大,我们的成功的几率就越高,可以使用以下工具来收集:
https://github.com/laramies/theHarvester
http://www.freebuf.com/sectool/104949.html
4 收集web应用上的文档信息,文档上有很多有用的信息,比如:word的属性里可能有创建者或者修改这的id、内容里可能包含内网一些设备的操作指南,也有可能里面包含一些用户的个人信息等,这些都是对我们后续渗透哦有用的信息,收集这些信息可以使用以下的工具:
https://github.com/laramies/metagoofil
https://www.elevenpaths.com/labstools/foca/index.html
site: www.myh0st.cn ext:pdf intitle:"Documents and settings"
5 同一主机上的所有web应用,这个操作可以在我们进行渗透一个ip 的时候,扩大我们的攻击面,使我们的成功率增加,可以使用以下的方式收集:
./revhosts pig vhh www.myh0st.cn
关于这些网址,我就不写了,网络上多得是,大家自行查找
自动化测试
漏洞扫描器
对于自己不认识的web应用,可以使用一些免费的扫描器对其进行简单的扫描,扫描器可以扫出来的漏洞,我们就可以省很多的事情,不过可能误报会比较多,大家根据报告进行一一检测就行,下面提几个扫描器:
https://cirt.net/nikto2
http://w3af.org/
https://my.oschina.net/u/995648/blog/114321
http://www.arachni-scanner.com/
http://www.freebuf.com/sectool/5427.html
爬虫
有了这么多扫描器,其结果阅读起来并不容易,下面介绍一款工具可以合并多个扫描器的结果并且具有爬虫的功能如下:
http://www.golismero.com/
信息泄露
除了扫描漏洞外,我们还应该关注一些信息泄露的问题,如:robots.txt, gitignore, .svn, .listin, .dstore等,关于这个可以看一下之前的文章《运维安全之安全隐患》,下面这个工具可以完成这项任务,上面也提到过就是FOCA。
目录枚举
目录枚举是我们在web测试中必要的步骤,这个操作可以使我们找出一些隐藏的目录或者文件,往往这些目录和文件安全性不是那么高,像那些测试页面,调试页面以及方便管理员操作的页面等等,下面提几个kali下的工具:
./dirb http://www.myh0st.cn/ wordlist.txt
是一个界面程序,大家自行测试
国内有很多优秀的目录枚举工具,自己写一个也不难,关键之字典的优劣,这里就不多说了
测试常见漏洞
测试常见的漏洞例如:xss、sql注入、ldap注入、xpath注入、本地文件包含、远程文件包含等,下面提几个测试工具:
http://www.powerfuzzer.com/
这个工具大家都不陌生,国内的资料也是非常多的,我就不多说了
关于这个模块,大家要理解所有这些漏洞的成因,可以自己手工测试出来,这才是学习的关键所在,工具只能辅助不能代替任何事,重要的还是自己的基础是否扎实。
https://github.com/fuzzdb-project/fuzzdb
手工测试
测试辅助工具
即使是手工测试也是需要借助一些工具来的,像那些post数据、协议数据包等隐藏的我们靠纯手工是无法理解的,所以下面的几个工具是需要去学习如何使用的:
http://open.freebuf.com/category/subtitle
http://www.freebuf.com/sectool/5427.html
http://www.freebuf.com/sectool/11544.html
指纹识别
web应用的指纹识别是很关键的部分,因为你一旦确定web应用的由来,这样可以让你的渗透测试事半功倍,更有针对性,免去了很多时间,针对不同的地区有不同的指纹识别工具,毕竟不同的地区使用的web应用有所差别,这里也就不做过多解释,关键是指纹库,这个是需要积累的,国内外有很多优秀的产品,大家自行测试使用。
简单测试
拿到一个网站后需要大概看一下,网站返回的http头、session、http方法、证书信息等,可以使用的工具还是比较多的,简单的像nc、telnet等,复杂的可以是上面说的辅助工具。
http指纹识别
通过http的指纹识别可以判断服务器的类型、针对不同的服务器有不同的测试方式有不一样的弱点利用,下面的这个工具可以完成这个操作:
http://pnig0s1992.blog.51cto.com/393390/570470
测试参数
在任何我们可以控制的变量出都可以使用:单引号、%00、空字符、回车符等进行测试并查看返回结果,这些操作可以使用上述提到的辅助工具,对get、post、cookie等http方法进行测试。
分析文件
可以分析网站上的flash、java等运行环境,可能会存在一些xss等安全问题。我们可以用过一些工具来收集网站上的这类文件,如下:
filetype:swf site:myh0st.cn
wget -r -l1 -H -t1 -nd -N -nd -N -A.swf -erobots=off http://www.myh0st.cn -i output_swf_files.txt
对于这类文件的下载回来如何测试,可以使用一些反编译软件对这些文件进行反编译然后进行简单的代码审计,查找其中的问题。关于这个我不是很熟,请有经验的大神可以分享一下这个方面的技术。
测试认证
几乎每个web应用都会存在认证系统,有用户交互就会存在认证,针对认证的测试,首先查看其是否有反暴力破解的策略(如验证码、错误次数等)、如果有测试其策略的阈值看看能否绕过、如果没有或者可以绕过就可以使用一些在线破解工具对认证系统进行暴力破解,测试存在弱口令的用户账号,然后进行进一步的渗透。推荐工具:
https://www.thc.org/thc-hydra/
总结
今天这个文章主要提了一下在对一个web应用进行安全测试时的一些测试方法以及可以使用的工具,对这些工具基本上都是国外的或者kali上自带的,工具千奇百怪,其核心思想是不会变的,对于我们学习安全知识来说,理解工具的原理、理解安全问题产生的原理才是最关键的,只要懂了原理,实现自动化的工具那就很容易了,今天就分享到这,不多说了。