一, 什么是安全渗透测试?
安全渗透测试就是在网络、数据库、操作系统、代码框架和工具各方面深入挖掘查找漏洞,发现数据泄露等安全问题。一般需要通过渗透测试、安全审计、防御部署、业务反欺诈、硬件安全令牌、安全架构等多方面评估,提供整体安全解决方案。
二、渗透的测试的方法
一般通过的工具扫描和人工分析测试进行。常用到的工具有:
·Burpsite
·Acunetix Web Vulnerability Scanner
·Nessus
·SQLMAP
·NMAP
参照OWASP(Open Web Application Sercurity Project)组织提交和维护的各类cheetsheet,结合自己项目的实际情况测试。
CheatSheetSeries/cheatsheets at master · OWASP/CheatSheetSeries · GitHub
三、安全渗透报告
整体报告会在标注测试工具和方法之外,主要列一个测试清单。测试点清单分类包括但不限于:信息泄露、安全认证、业务逻辑、安全策略、通用安全漏洞。
类型 | 测试指标 | 测试方法 | 危害级别 | 利用难度 |
信息泄露 | robots.txt泄露敏感信息 | 手工挖掘,直接在域名后输入/robots.txt进行查看 | 低 | 中等:内容包含敏感路径 |
困难:没有网站敏感路径 | ||||
敏感文件信息泄露 | 查看是否返回含有重要的敏感信息的文件,比如数据库文件、代码的备份文件或svn、git版本控制文件等 | 高 | 中等:重要文件可访问 | |
困难:内容只有简单信息 | ||||
过时的、用于备份的或者开发文件残留 | 对网站进行web漏洞扫描,直接利用爬虫来爬取网站可能存在的路径以及链接 | 中 | 中等:爬取到后台目录、重要文件 | |
困难:爬取链接无重要信息 | ||||
报错页面敏感信息泄露 | 通过目录扫描或手工输入不存在的文件或路径,触发服务器产生404错误并返回404页面 | 低 | 中等:报错页面含有版本信息、网站路径 | |
困难:报错页面内容为自定义 | ||||
物理路径泄露 | 打开网页源代码,查看图片等媒体的链接及超链接或通过报错信息获取 | 低 | 中等:查看图片等网页信息含有物理路径 | |
困难:不含有物理路径,或价值不大 | ||||
入侵痕迹遗留 | 使用Web应用安全漏洞扫描工具或目录扫描工具发现入侵痕迹 | 高 | 简单:发现webshell、或相关漏洞利用脚本 | |
中等:无法直接使用脚本、或工具 | ||||
HTTP头信息泄露 | 查看HTTP响应头 | 低 | 中等:响应头包含服务器版本信息等,查找利用版本相关漏洞 | |
目录遍历 | 可以利用web漏洞扫描器扫描web应用进行检测 | 中 | 简单:通过输入../进行目录跳转,查看重要信息 | |
默认页面泄露 | 可以利用web漏洞扫描器扫描web应用进行检测 | 低 | 中等:访问中间件的默认配置链接 | |
简单:直接进入控制台 | ||||
存在可访问的管理后台入口 | 可以利用web漏洞扫描器扫描web应用进行检测 | 低 | 简单:扫描网站路径,可访问后台 | |
存在可访问的管理控制台入口 | 通过中间件类型判断管理控制台地址 | 中 | 简单:访问中间件特定的链接进入控制台 | |
参数溢出 | 在前端可控参数中输入超长字符串 | 高 | 简单:输入超长字符串,服务器报错 | |
任意文件下载 | 可以利用web漏洞扫描器扫描web应用进行检测 | 高 | 简单:输入../跳转目录,下载敏感文件 | |
认证功能 | 存在账号枚举 | 查看注册等位置是否能够针对存在用户名进行枚举猜测 | 低 | 中等:使用爆破工具枚举出用户名 |
账号密码共用 | 使用同一个用户名密码登录不同业务系统,看是否均可成功登录 | 高 | 简单:使用同一个账号密码成功登陆不同系统 | |
传输过程泄露 | 通过对网站登录页面的请求进行抓包,分析其数据包中相关password(密码)参数的值是否为明文 | 中 | 简单:查看数据包密码字段没有加密或简单编码 | |
会话变量泄露 | 查看网页源代码,寻找隐藏域中是否存在密码等信息 | 高 | 简单:查看网页源代码,查找发现password、username等信息 | |
存在弱口令 | 登录页面,尝试输入常见弱口令 | 高 | 简单:常见弱口令登陆成功 | |
中等:定制的弱口令登陆成功 | ||||
存在暴力破解 | 固定账号对密码暴力破解,或固定密码对账号进行暴力破解,或撞库攻击 | 中 | 简单:使用收集的字典爆破成功 | |
存在空口令 | 认证登录环节是否允许空口令 | 高 | 简单:不输入密码直接登录 | |
中等:需要特定的用户名 | ||||
认证绕过 | 人工测试,是否存在绕过认证逻辑的可能 | 高 | 中等:修改数据包或者返回包数据,通过认证 | |
IP地址伪造 | 使用代理软件拦截请求包,修改HTTP头中的IP相关字段,伪造IP地址绕过限制 | 高 | 中等:抓包修改IP字段成功绕过限制 | |
会话固定 | 查看是否存在会话重用、会话失效时间过长等会话管理问题 | 中 | 中等:登录长时间未操作,cookie未失效 | |
业务逻辑 | 交易订单正负值反冲 | 提交订单时拦截请求,修改订单参数为负数,如商品单价、数量、总价等 | 高 | 简单:抓包修改价格参数,支付成功 |
邮件可定向转发 | 拦截发送邮件的请求,将接收人邮箱改为测试人员的邮箱地址,测试是否可接收邮件 | 中 | 简单:抓包修改邮箱参数,成功接收邮件 | |
不安全的对象引用 | 查看请求接口是否存在越权的情况 | 中 | 简单:直接访问接口,获取数据 | |
未验证的URL 跳转 | 修改参数中的合法URL为非法URL,然后查看是否能正常跳转 | 中 | 中等: url参数绕过限制 | |
简单:抓包修改url参数,跳转成功 | ||||
服务器端请求伪造(SSRF) | 应用程序对用户提供的URL和远端服务器返回的信息是否进行合适的验证和过滤 | 高 | 中等:编写脚本或对参数传入特定url获取重要信息 | |
短信内容可控 | 在客户端编辑任意短信内容,测试是否过滤特殊内容 | 高 | 简单:抓包修改短信内容,成功接收短信 | |
邮件内容可控 | 在客户端编辑任意邮件内容,测试是否过滤特殊内容 | 高 | 简单:抓包修改邮件内容,成功接收邮件 | |
请求重放攻击 | 重放重点http/tcp请求,查看第二次请求是否被正常处理 | 中 | 中等:使用代理工具,多次发送数据包,服务器都处理请求 | |
安全策略 | 图形验证码绕过 | 查看图形验证码是否过于简单,可使用工具自动化识别,或图形验证码可绕过 | 中 | 中等:使用自动化工具识别验证码,然后爆破账户 |
短信验证码绕过 | 验证同一个短信验证码是否能使用多次 | 中 | 简单:多次提交同一个验证码,都成功提交请求 | |
短信验证码可暴力破解 | 短信验证码是否位数太短或有效期太长或无次数限制导致可暴力破解 | 中 | 简单:使用工具爆破验证码成功 | |
Cookies属性问题 | 存在未设置 HttpOnly 或 Secure 属性;Domain或者 Path 设置路径不合理。 | 低 | 困难:查看http响应含有httponly等属性 | |
中等:不含有httponly属性,Domain设置不合理等 | ||||
恶意锁定问题 | 针对测试账户,不断输入错误的密码,直至将其锁定 | 低 | 简单:使用工具不断发送登陆请求,锁定用户 | |
短信炸弹 | 通过利用burp或者其它抓包截断工具,抓取发送验证码的数据包,并且进行重放攻击,查看手机是否在短时间内连续收到大量短信 | 高 | 简单:短信发送没有限制 | |
邮件炸弹 | 通过利用burp或者其它抓包截断工具,抓取发送邮件的数据包,并且进行重放攻击,查看邮箱是否在短时间内连续收到大量邮件 | 中 | 简单:邮件发送没有限制 | |
未授权访问 | 是否存在不需要输入密码,即可通过直接输入网站控制台主页面地址 | 高 | 中等:找到后台、用户信息等,可直接访问 | |
通用型漏洞 | 跨站请求伪造(CSRF) | html代码模拟提交form表单,查看功能提交结果 | 中 | 中等:构造重要功能处链接,直接提交数据,被正常处理 |
跨站脚本攻击(XSS) | 测试站点是否存在dom XSS,反射型XSS以及存储型XSS | 高 | 中等:在输入点输入标签,成功弹窗 | |
困难:绕过过滤 | ||||
HTTP 响应分割 | 在http请求头中嵌入%0d%0a,查看响应效果 | 中 | 中等:抓包工具修改请求头数据,感染网页 | |
HTTP 参数污染 | 在请求中添加同名参数,并在添加的参数中输入恶意构造的语句 | 高 | 简单:请求数据添加同名参数,成功注入恶意语句 | |
Host 头攻击 | 利用web漏洞扫描工具进行检测 | 中 | 困难:利用邮件功能,发送包含恶意host链接 | |
SQL注入 | 通过web漏洞扫描工具进行对网站爬虫后得到的所有链接进行检测,或者手工判断是否存在注入点,一旦确认存在漏洞,可利用自动化工具sqlmap去尝试注入。 | 高 | 简单:使用扫描工具,重要功能点手工测试,输入’”`%0a等符号,获取数据 | |
中等:使用编码或特殊符号,定制的payload进行绕过 | ||||
XXE | 通过手工篡改网站中xml实体中的头部,加入相关的读取文件或者是链接,或者是命令执行等,篡改以后,如果可读取file文件或者达到植入命令的效果,则说明存在该漏洞 | 高 | 简单:构造xml语句,执行任意命令,或者读取任意文件 | |
Xpath注入 | 是否能够在URL、表单或其它信息上附带恶意的XPath查询代码,以获得权限信息的访问权并更改这些信息 | 高 | 中等:插入xpath查询语句获取系统信息 | |
命令注入 | 过web扫描工具进行扫描,也可以通过手工进行验证:打开网站,在URL中传入命令的参数输入所要执行的命令 | 高 | 简单:使用扫描器或手工站到注入点,执行任意命令 | |
任意文件上传 | 判断目标系统使用的语言与中间件, 根据语言及中间件特点尝试对上传点进行脚本文件上传,常用有;以及0x00截断。 | 高 | 简单:抓包修改后缀名,配合解析漏洞,使用00截断等等上传shell | |
反序列化漏洞 | 使用扫描器扫描或人工测试,常见中间件,如JBoss、Weblogic、WebSphere、jenkins等存在java反序列化漏洞,可利用工具进行测试 | 高 | 简单:针对中间件使用工具或者脚本,执行命令等 | |
第三方应用相关漏洞 | 查看是否存在Redis和Memcached等非关系型数据库,Zabbix等其他第三方应用存在的漏洞 | 高 | 中等:使用扫描工具或特定脚本获取系统信息 | |
第三方插件相关漏洞 | 检查第三方插件,如编辑器fckeditor、ewebeditor等存在的漏洞 | 高 | 中等:利用插件已知漏洞或利用脚本上传shell或获取敏感信息、执行命令等 | |
开发框架 | 检查已知开发框架的漏洞,如Struts2框架漏洞 | 高 | 简单:使用工具进行测试,命令执行、上传文件等 |
透过上述的checklist,按照严重程度总结出严重问题、中等问题、轻度问题数量及列表,以及影响的应用进行安全整改改造。