现在,随着企业信息化培植的开展,越来越多的主要数据会以电子媒介的形式存放,这在方便企业办公的同时,也造成了极大的安全隐患。近年来,随着APT攻击的蔓延,使得越来越多的企业遭受不可挽回的重大丢失。
在目的明确、装备精良、履历丰富的\公众雇佣军\公众式的攻击者面前,传统的安全设备已显得力不从心,企业须要做的是定期开展专业的渗透测试,来降落风险,加固安全。
那么,什么是渗透测试?
渗透测试,是渗透测试工程师完备仿照黑客可能利用的攻击技能和漏洞创造技能,对目标网络、主机、运用的安全作深入的探测,创造系统最薄弱的环节。
如果说安全检测是\公众横向地毯式自动化扫描\公众,那么渗透测试便是\"大众纵向深度人工化入侵\公众。
可见渗透测试的目的是创造目标系统潜在的业务漏洞风险。
安全问题都表示在输入输出的问题上,能够剖析数据流就有迹可循了。先知道渗透测试的流程,用工具找到漏洞,理解并且复现它。
如何进行Web渗透测试?
1、 完全web渗透测试框架
当须要测试的web运用数以千计,就有必要建立一套完全的安全测试框架,流程的最高目标是要担保交付给客户的安全测试做事质量。
立项:项目建立,韶光安排,人力分配,目标制订,厂商接口人确定;
系统剖析&威胁剖析:针对详细的web运用,剖析系统架构、利用的组件、对外供应的接口等,以STRIDE为威胁模型进行对应的安全威胁剖析,输出安全威胁剖析表,重点关注top3威胁;
制订测试用例:根据威胁剖析的结果制订对应的测试用例,测试用例按照模板输出,具备可实行性;
测试实行&漏洞挖掘:测试用例实行&发散测试,挖掘对应的安全问题or漏洞;
问题修复&回归测试:辅导客户运用开拓方修复安全问题or漏洞,并进行回归测试,确保安全问题or漏洞得到修复,并且没有引入新的安全问题;
项目总结评审:项目过程总结,输出文档评审,干系文档归档。
2、Web运用的渗透测试流程
紧张分为3个阶段,分别是:信息网络→漏洞创造→漏洞利用,下面仔细剖析一下各个阶段流程:
1、 信息网络
在信息网络阶段,我们须要只管即便多的网络关于目标web运用的各种信息,比如:脚本措辞的类型、做事器的类型、目录的构造、利用的开源软件、数据库类型、所有链接页面,用到的框架等
脚本措辞的类型:常见的脚本措辞的类型包括:php、asp、aspx、jsp等
测试方法:
1 爬取网站所有链接,查看后缀
2 直接访问一个不存在页面后面加不同的后缀测试
3 查看robots.txt,查看后缀
做事器的类型:常见的web做事器包括:apache、tomcat、IIS、ngnix等
测试方法:
1 查看header,判断做事器类型
2 根据报错信息判断
3 根据默认页面判断
目录的构造:理解更多的目录,可能创造更多的弱点,如:目录浏览、代码泄露等。
测试方法
1 利用字典列举目录
2 利用爬虫爬取全体网站,或者利用google等搜索引擎获取
3 查看robots.txt是否泄露
利用的开源软件:我们如果知道了目标利用的开源软件,我们可以查找干系的软件的漏洞直接对网站进行测试。
测试方法
指纹识别(网络上有很多开源的指纹识别工具)
数据库类型:对付不同的数据库有不同的测试方法。
测试方法
1 使运用程序报错,查看报错信息
2 扫描做事器的数据库端口(没做NAT且防火墙不过滤时有效)
所有链接页面:这个跟前面的获取目录构造类似,但是这个不但是获取网站的所有功能页面,有时候还可以获取到管理员备份的源码。
测试方法
1 利用字典列举页面
2 利用爬虫爬取全体网站,或者利用google等搜索引擎获取
3 查看robots.txt是否泄露
用到的框架:很多网站都利用开源的框架来快速开拓网站,以是网络网站的框架信息也是非常关键的。
测试方法
指纹识别(网络上有很多开源的指纹识别工具)
二、漏洞创造
在这个阶段我们在做测试的时候要对症下药,不能盲目的去扫描,首先要确定目标运用是否利用的是公开的开源软件,开源框架等、然后在做深一度的漏洞扫描。
关于开源软件的漏洞创造
开源的软件:常见的开源软件有wordpress、phpbb、dedecms等
开源的框架:常见的开源框架有Struts2、 Spring MVC、ThinkPHP等
中间件做事器:常见的中间件做事器有jboss、tomcat、Weblogic等
数据库做事:常见的数据库做事mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
对付开源软件的测试方法
1 通过指纹识别软件判断开源软件的版本信息,针对不同的版本信息去开放的漏洞数据库查找相应版本的漏洞进行测试
2 对付默认的后台登录页、数据库做事端口认证等入口可以进行大略的暴力破解、默认口令考试测验等操作
3 利用开源的漏洞创造工具对其进行漏洞扫描,如:WPScan
关于自主开拓的运用
手动测试:这个阶段,我们须要手工测试所有与用户交互的功能,比如:留言、登入、下单、退出、退货、付款等操作
软件扫描:利用免费的软件扫描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp关键点
代码安全之上传文件
代码安全之文件包含
代码安全之SSRF
逻辑漏洞之密码重置
逻辑漏洞之支付漏洞
逻辑漏洞之越权访问
平台安全之中间件安全
三、漏洞利用
针对不同的弱点有不同的漏洞利用办法,须要的知识点也比较多。一样平常这个阶段包括两种办法,一种是手工测试,一种是工具测试
手工测试
手工测试是通过客户端或做事器访问目标做事,手工向目标程序发送分外的数据,包括有效的和无效的输入,不雅观察目标的状态、对各种输入的反应,根据结果来创造问题的漏洞检测技能。手工测试不须要额外的赞助工具,可由测试者独立完成,实现起来比较大略。但这种方法高度依赖于测试者,须要测试者对目标比较理解。手工测试可用于Web运用程序、浏览器及其他须要用户交互的程序。
这种办法对付有分外过滤等操作,或者网络上没有成型的利用工具的时候可以利用。
工具测试
网络上有很多好用的免费利用工具,比如针对sql注入的sqlmap、针对软件漏洞的matesploit等。