渗透测试的主要作用有哪些
移动互联网时代人们更多的使用手机等移动通讯设备来处理各种日常事务,而很多软件开发商也对移动互联时代充满信心,纷纷将业务重心转向了移动应用程序开发的方向,而丰富多样的移动程序又再次刺激了人们对移动设备的使用。很多移动应用在正式上架前,往往都需要进行一些安全性测试,那么程序安全性测试中非常关键的渗透测试的主要作用都有哪些呢?
一、找出程序存在的漏洞
没有一款程序是完美无瑕的,即使这款程序在正式上线前经过了长时间的测试,这也是很多网络黑客存在的理由。而受欢迎的渗透测试有别于一般的安全性测试,完全采用了黑客的思维方式来对程序进行攻击,通过全面的端口测试来找出移动应用中存在的漏洞,帮助软件开发人员更好的完善程序。
二、提高程序的安全性能
移动互联虽然给人们的生活带来了极大的便利,同时也为一大批移动程序带来了海量的使用者,但移动程序的泛滥却也给了很多别有用心的黑客可乘之机。很多专为移动设备开发的木马和病毒给使用移动设备的用户带来了巨大的损失,而通过渗透测试能够有效的提升移动应用程序的安全性。
三、帮助开发人员升级程序
目前移动应用方面有着一大批优秀的开发人员,但这些开发人员由于视角的问题,往往很难自我察觉到程序的不足之处,因此很多移动应用开发人员都会借助口碑好的渗透测试的帮助,来找出程序设计之中的不合理之处,从而帮助开发人员更好的对下一代移动应用进行升级和更新。
移动互联时代带给了人们更多的乐趣和更多的便利,但与此同时移动应用程序也会给人们的信息安全带来很大的威胁。因此很多移动应用都会通过渗透测试来找出其中蕴藏的隐患,通过这种黑客视角来帮助移动应用获得更高的安全性。
如何进行Web渗透测试
什么是渗透测试?
渗透测试,是渗透测试工程师完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标网络、主机、应用的安全作深入的探测,发现系统最脆弱的环节。
如何进行Web渗透测试?
完整web渗透测试框架当需要测试的web应用数以千计,就有必要建立一套完整的安全测试框架,流程的最高目标是要保证交付给客户的安全测试服务质量。
1、立项:项目建立,时间安排,人力分配,目标制定,厂商接口人确定;
系统分析威胁分析:针对具体的web应用,分析系统架构、使用的组件、对外提供的接口等,以STRIDE为威胁模型进行对应的安全威胁分析,输出安全威胁分析表,重点关注top3威胁;
制定测试用例:根据威胁分析的结果制定对应的测试用例,测试用例按照模板输出,具备可执行性;
测试执行漏洞挖掘:测试用例执行发散测试,挖掘对应的安全问题or漏洞;
问题修复回归测试:指导客户应用开发方修复安全问题or漏洞,并进行回归测试,确保安全问题or漏洞得到修复,并且没有引入新的安全问题;
项目总结评审:项目过程总结,输出文档评审,相关文档归档。
2、Web应用的渗透测试流程
主要分为3个阶段,分别是:信息收集→漏洞发现→漏洞利用,下面仔细分析一下各个阶段流程:
一、信息收集
在信息收集阶段,我们需要尽量多的收集关于目标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等。
一个完整的渗透测试流程,分为那几块,每一块有哪些内容
包含以下几个流程:
信息收集
第一步做的就是信息收集,根据网站URL可以查出一系列关于该网站的信息。通过URL我们可以查到该网站的IP、该网站操作系统、脚本语言、在该服务器上是否还有其他网站等等一些列的信息。
漏洞探测
当我们收集到了足够多的信息之后,我们就要开始对网站进行漏洞探测了。探测网站是否存在一些常见的Web漏洞,比如:SQL注入 。
漏洞利用
探测到了该网站存在漏洞之后,就要对该漏洞进行利用了。不同的漏洞有不同的利用工具,很多时候,通过一个漏洞我们很难拿到网站的webshell,我们往往需要结合几个漏洞来拿webshell。
内网渗透
当我们能跟内网主机进行通信后,我们就要开始进行内网渗透了。可以先使用nmap对内网主机进行扫描,探测在线的主机,并且探测其使用的操作系统、开放的端口等信息。
内网中也有可能存在供内网使用的内网服务器,可以进一步渗透拿下其权限。
痕迹清除
达到了目的之后,有时候只是为了黑入网站挂黑页,炫耀一下;或者在网站留下一个后门,作为肉鸡,没事的时候上去溜达溜达;亦或者挂入挖矿木马。
撰写渗透测试保告
在完成了渗透测试之后,就需要对这次渗透测试撰写渗透测试报告了。明确的写出哪里存在漏洞,以及漏洞修补的方法。以便于网站管理员根据我们的渗透测试报告修补这些漏洞和风险,防止被黑客攻击。
渗透测试有哪些
渗透测试分为两种基本类型,白盒测试和黑盒测试。
1、白盒测试
也被称为白帽测试,是指渗透测试者在拥有客户组织所有知识的情况下所进行的测试。
使用白盒测试,需要和客户组织一起工作,来识别出潜在的安全风险。
白盒测试的最大好处是测试者将拥有所有的内部知识,并可以在不需要害怕被阻断的情况下任意地实施破坏。
而白盒测试最大的问题在于无法有效地测试客户组织的应急响应程序,也无法判断出他们的安全防护计划对检测特定攻击的效率。
白盒测试适用于时间比较紧急,或是特定的渗透测试环境,如情报收集并不在范围之内的测试场景。
2、黑盒测试
模拟一个对客户组织一无所知的攻击者所进行的渗透攻击。
经过授权的黑盒测试是设计成为模拟攻击者的入侵行为,并在不了解客户组织大部分信息和知识的情况下实施的。
黑盒测试可以用来测试内部安全团队检测和应对一次攻击的能力。
黑盒测试比较费时,同时对技术要求比较高。在安全业界的渗透测试眼中,黑盒测试能更逼真地模拟了一次真正的攻击过程。
黑盒测试依靠测试人员的能力探测获取目标系统的信息,作为一次黑盒测试的渗透测试者,通常不需要找出目标系统的所有安全漏洞,而只需要尝试找出并利用可以获取目标系统访问权代价最小的攻击路径,并保证不被检测到。
多少人知道什么是渗透测试?渗透测试有什么用?
渗透测试是对用户信息安全措施积极评估的过程。通过系统化的操作和分析,积极发现系统和网络中存在的各种缺陷和弱点,如设计缺陷和技术缺陷。渗透测试现在已经成为主机安全的重要手段之一了,说到这里就不得不提到青藤万相了。青藤万相是青藤云安全旗下的一款产品,青藤云安全凭借着丰富的攻击经验,站在攻击者的角度,通过真实模拟黑客使用的工具、分析方法进行模拟攻击,验证当前的安全防护措施,找出风险点,提供有价值的安全整改建议。百度上面都有。
软件测试和渗透测 试有什么区别?
1、测试对象不同
软件测试:主要测试的是程序、数据、文档。
渗透测试:对象主要为网络设备、主机操作系统、数据库系统和应用系统。
2、测试内容不同
软件测试:主要工作内容是验证和确认,发现软件中的缺陷或者不足,然后把发现的问题整理成报告并分析出软件质量的好坏。验证是保证软件正确地实现了一些特定功能的一系列活动;确认是一系列的活动和过程,目的是想证实一个给定的外部环境中软件的逻辑正确性,即保证软件做了你所期望的事情。
渗透测试:主要包括黑盒测试、白盒测试和灰盒测试。主要做的工作有:信息收集、端口扫描、权限提升、远程溢出攻击、Web应用测试、SQL注入攻击、检测页面隐藏字段、跨站攻击、Cookie利用、后门程序检查、第三方软件误配置等。
3、测试原则不同
软件测试:
①测试应该尽早进行;
②软件测试应该由第三方来负责;
③设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件;
④应该充分注意测试中的群集现象;
⑤对错误结果要进行一个确认过程;
⑥制定严格的测试计划;
⑦妥善保存测试计划、测试用例、出错统计和最终分析报告。
渗透测试:
①测试验证时间放在业务量最小的时间进行;
②测试执行前确保相关数据进行备份;
③所有测试在执行前和维护人员进行沟通确认;
④在测试过程中出现异常情况时立即停止测试并及时恢复系统;
⑤对原始业务系统进行一个完全的镜像环境,在镜像环境上进行渗透测试。
总而言之,软件测试更多的是以正常使用者的角度为出发点,测试软件的可用性;而渗透测试则是以极端攻击者的角度出发,测试系统的安全性。
0条大神的评论