Web应用渗透测试
对于web应用的测试,一般分为三个阶段:信息收集、漏洞发现以及漏洞利用。
信息收集
在信息收集阶段,我们需要尽量多的收集关于目标web应用的各种信息,比如:脚本语言的类型、服务器的类型、目录结构、使用的开源软件、数据库类型、所有链接页面,用到的框架等。
脚本语言的类型
常见的脚本语言的类型包括:php、asp、aspx、jsp等。
测试方法
- 爬取网站所有链接,查看后缀
- 直接访问一个不存在页面后面加不同后缀测试
- 查看robots.txt,查看后缀
服务器的类型
常见的web服务器包括:apache、tomcat、iis、ngnix等
测试方法
- 查看header,判断服务器类型
- 根据报错信息判断
- 根据默认页面判断
目录结构
了解更多的目录,可能发现更多的弱点,如:目录浏览、代码泄漏等。
测试方法 - 使用字典枚举目录
- 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
- 查看robots.txt是否泄漏
使用的开源软件
我们如果知道了目标使用的开源软件,我们查找相关的软件的漏洞直接对网站进行测试。
测试方法
指纹识别(网上在线的指纹识别工具,例:云溪指纹识别)
数据库类型
对于不同的数据库,有不同的测试方法。
测试方法
- 使用应用程序报错,查看报错信息
- 扫描服务器的数据库端口(没做NAT且防火墙不过滤时有效)
所有链接页面
这个跟前面的获取目录结构类似,但是这个不是获取网站的所有功能页面,有时候还可以获取到管理员备份的源码。
测试方法 - 使用字典枚举页面
- 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
- 查看robots.txt是否泄漏
用到的框架
很多网站都利用开源的框架来快速开发网站,所以收集网站的框架信息也是非常关键的。
测试方法
指纹识别
漏洞发现
在这个阶段我们在做测试的时候要对症下药,不能盲目的去扫描,首先要确定目标应用是否使用的是公开的开源软件、开源框架等,然后在做深一度的漏洞扫描。关于开源软件的漏洞发现
开源软件
常见的开源软件有:wordpress、phpbb、dedecms等。
开源的框架
常见的开源框架有:struts2、spring MVC、thinkPHP等。
中间件服务器
常见的中间件服务器有:jboss、tomcat、Weblogic等。
数据库服务
常见的数据库服务:mssql、mysql、oracle、redis、sybase、MongoDB、DB2等。
对开源软件的测试方法 - 通过指纹识别软件判断开源的版本信息,针对不同的版本信息去开放的漏洞数据库查找相应版本的漏洞进行测试
- 对于默认的后台登入页、数据库服务端口认证等入口可以进行简单的暴力破解、默认口令尝试等操作。
- 使用开源的漏洞发现工具对其进行漏洞扫描,如:WPScan
关于自主开发的应用
手动测试
这个阶段,我们需要手工测试所有与用户交互的功能,比如:留言、登入、下单、退出、退货、付款等操作。
软件扫描
使用免费的软件扫描,如:appscan、wvs、netsparker、burp等
漏洞利用
这种方式对于有特殊过滤等操作,或者网络上没有成型的利用工具的时候可以使用,在熟练之后,自己也可以写出自己的利用工具代替手工操作,毕竟手工操作是非常累的。有时候可以结合服务器的配置问题,增加成功率。