什么是渗透测试
渗透测试是渗透测试工程师对黑客可能用来深入检测目标网络、主机和应用程序安全的攻击技术和漏洞发现技术的完整模拟,并找到系统之中最易受攻击的环节
如何进行web渗透测试
完整的web渗透测试框架当有数千个web应用程序需要测试时,有必要建立一个完整的安全测试框架。该流程的最高目标是确保向客户提供的安全测试服务的质量。
项目立项:
项目立项、时间安排、人力配置、目标制定、厂商接口人确定
系统分析与威胁分析:针对具体的web应用,分析系统架构、使用的组件、内部提供的接口等,以STERID作为威胁模型进行相应的安全威胁分析,输出安全威胁分析表,关注后三名威胁
制定测试用例:根据威胁分析结果制定相应的测试用例。测试用例根据模板输出,可以执行
测试执行和漏洞挖掘:测试用例执行和发散测试,挖掘相应的安全问题或漏洞
问题修复和回归测试:指导客户端应用程序开发人员修复安全问题或漏洞,并进行回归测试,以确保安全问题或漏洞得到修复,并且没有引入新的安全问题
项目总结审查:项目过程总结,输出文档审阅,以及相关文档归档[2]。
web应用程序
渗透测试过程主要分为三个阶段:信息收集→ 漏洞发现→ 漏洞利用率。让我们仔细分析每个阶段的过程:
I.信息收集
在信息收集阶段,我们需要收集尽可能多的有关目标web应用程序的信息,例如脚本语言类型、服务器类型、目录结构、使用的开源软件、数据库类型所有链接页面、使用的框架、,etc
脚本语言类型:常见的脚本语言类型包括:PHP、ASP、ASPX、JSP等
测试方法:
1抓取网站的所有链接并检查后缀
2直接访问不存在的页面,然后进行不同的后缀测试
3检查robots Txt,检查后缀
服务器类型:常见的web服务器包括Apache、Tomcat、IIS、,ngnix等
测试方法:
1检查头部并判断服务器类型
2根据错误信息判断
3根据默认页面判断
目录结构:了解更多目录,并可能发现更多弱点,如目录浏览、代码泄露等
使用Google
robot 1获取整个目录,或者使用Google
robot 2搜索整个目录Txt是否披露使用的开源软件
如果我们知道目标公司使用的开源软件,我们可以找到相关软件的漏洞,直接测试网站
Fingerprint identification(网络之上有很多开源的指纹识别工具)
数据库类型:不同的数据库有不同的测试方法
1。使用应用程序报告错误并检查错误信息
2扫描服务器的数据库端口(在未完成NAT且未过滤防火墙时生效)
所有链接页面:这与以前的目录结构类似,但这不仅是为了获取网站的所有功能页面,但也要获取管理员备份的源代码有时
1使用字典枚举页面
2使用爬虫对整个网站进行爬网,或使用谷歌等搜索引擎获取
3查看机器人Txt是否泄漏
许多网站使用开源框架快速开发网站,因此,收集网站的框架信息也非常重要。指纹识别(网络之上有许多开源的指纹识别工具)
2。漏洞发现
在这个阶段,我们应该在测试时对案例应用正确的药物,而不能盲目扫描。首先,我们应该确定目标应用程序是否使用开源软件、开源框架等,然后进行深入的漏洞扫描
关于开源软件的漏洞发现
开源软件:常见的开源软件包括WordPress、phpbb、dedecms等。
开源框架:常见的开源框架包括struts 2,spring MVC、ThinkPHP等
下方件服务器:常用中间件服务器包括JBoss、Tomcat、Weblogic等
数据库服务:常用数据库服务MSSQL、mysql、Oracle、redis、Sybase、mongodb DB2等
开源软件测试方法
1通过指纹识别软件判断开源软件的版本信息,并根据不同的版本信息,在开放的漏洞数据库之中找到相应版本的漏洞进行测试
2默认后台登录页面可以进行简单的暴力破解,数据库服务端口身份验证和其他条目默认密码尝试和其他操作
3使用开源漏洞发现工具扫描漏洞,例如wpscan
3。漏洞利用
针对不同的漏洞,有不同的漏洞利用方法,需要更多的知识点。通常,该阶段包括两种方式:一种是手动测试,另一种是工具测试
手动测试是一种漏洞检测技术,通过客户端或服务器访问目标服务,手动向目标程序发送特殊数据,包括有效和无效输入,观察目标的状态及其对各种输入的响应,并根据结果发现问题。手动测试不需要额外的辅助工具,但可以由测试人员独立完成,实现起来相对简单。然而,这种方法高度依赖于测试人员,这需要测试人员更好地了解目标。手动测试可用于需要用户交互的web应用程序、浏览器和其他程序
有想要学习资料的,私聊加V。