案例指引"/>
渗透测试案例指引
认证测试
账号注册测试
- 批量注册
注册用户接口可无限制重放
- 恶意注册
注册时,填写个人信息,设置密码,设置登录名等情况时,输入已存在的用户的对应信息,以达到复制用户或者恶意修改已存在用户信息的目的;
是否存在同一手机号(邮箱、身份证等证件信息)可以注册多个账号;登录凭证传输测试
- 密码是否加密传输
账号密码是否采取有效的加密后传输
用户名枚举
用户输入框中通过"用户名不存在" 或"密码/口令错误"信息,判断是否存在此问题
暴力破解
- 撞库
如登录时,未限制登录失败次数或者无验证码机制等,可通过撞库获取用户名或密码
验证码安全验证
- 验证码绕过
1、服务器端,是否只要校验验证码成功后,再进行用户名和密码的校验,如果不是则存在问题;
2、生成的验证码是否可以通过html源码看到,如果可以则存在问题;
3、输入正确的用户名和口令,输入错误的验证码,通过抓包改包的方式,若能成功登陆,则存在问题;
- 验证码破解
1、验证码是否可以被猜解;
2、观察验证码是否是随机生成,如果存在一定规律则存在问题;
- 图形验证码可机器识别
使用工具,如pkavhttpfuzzer,验证是否可自动识别图形验证码
- 验证码复用
使用过期的验证码或者失效的验证码,是否可以绕过登录
短信验证码测试
- 短信炸弹
通过利用burp或者其他抓包截断工具,抓取发送验证码的数据包,并且进行重放攻击,查看手机是否在短时间内连续收到大量短信
- 暴力破解
1、短信验证码是否一次一用;
2、短信验证码是否位数挑断或有效期太长或无次数限制导致可暴力破解
- 短信绕过
1、同一个验证码是否可以使用多次
2、使用过期的验证码或者失效的验证码,是否可以绕过登录;
3、输入正确的用户名和口令,输入错误的验证码,通过抓包的方式,若能成功登录,则存在问题;账号锁定测试
针对测试账户,不断输入错误的密码,直至将其锁定。
密码重置
- 修改密码
1、打开忘记密码或密码重置的页面;
2、新密码是否有复杂度要求,复杂度校验是否可绕过
3、页面是否对用户登录状态,用户身份合法性进行校验;
4、根据业务需要,是否需要验证原密码;
- 忘记密码
1、打开忘记密码或密码重置的页面;
2、页面是否对用户身份合法性进行校验;
3、输入用户名后,给默认绑定的手机、邮箱发送短信/邮件发送验证码进行校验身份,如果在发送报文中修改手机号码、邮箱地址、修改后的手机号码/邮箱也能收到系统发送的信息,则存在问题。
4、如果系统对用户发送的验证码为纯数字,且没有失效时间限制,则存在被暴力破解的风险;
5、如果系统对用户邮箱发送的重置链接,且没有限制仅一次有效,或者URL中的token泄露、可破解等,则存在问题。注销测试
- 注销机制
1、登录状态下,点击”退出","注销"时,是否正常退出系统;
2、登录状态下,直接关闭浏览器后,再次访问网址时是否需要重新登录;
3、登录状态下,一段时间未操作页面,是否需要重新登录进行身份验证
会话测试
会话管理模式
- 会话超时退出
登录之后如果长时间误操作,服务器应该断开本次登录状态。以30分钟为时间间隔,不进行任何操作。
- 会话ID破解
1、查看URL中是否携带sessionID信息(可能是sid,jSESSIONID等形式);
2、会话ID明文或若加密存储
- 多设备登录
多设备多地同时登录同一账号时,无异常退出机制,无多地同时登录提醒
会话泄露
- 会话传输安全
会话中是否包括用户名和口令等敏感信息
cookie属性测试
- httponly,secure,domain,path属性设置
查看Cookie或者Session是否设置了对应的属性
会话固定
1、访问登录页面;
2、输入正确的用户名和密码,登录时,用Burpsuit拦截用户请求,查看登录前的会话标识(cookie和JSESSIONID等)
3、登录成功后,再访问其他应用页面时,用Burpsuit拦截用户请求,查看登录后的会话标识,是否和登录前的会话标识一致,如果一致说明会话标识没有变更,则存在会话固定(sessionfixation)风险CSRF
1、网页操作某功能(比如删除或者取消订单、关注微博等);
2、抓包后,如果发现没有token等参数,如果没有发现token等参数,则存在问题;
3、抓包后,修改Referer等字段后放行,若能正常请求,则存在问题。
业务逻辑测试
步骤绕过
- 步骤绕过
最常见的如绕过密码/验证码成功登陆;绕过卡号/手机号验证绑定用户;绕过相关校验以达到修改密码/修改个人信息/设计金额的操作等。
数据校验
- 参数值校验
是否存在表示身份信息、金额、数量或支付方式等参数值篡改漏洞,如异常提升额度,修改支付金额、盗刷积分等
参数校验
对数据包的数据字段进行篡改,检查是否存在数据校验
重放攻击
- 交易接口重放攻击
关键业务操作未做token或者唯一识别码,导致攻击者可以重复多次请求,导致恶意操作。如重复交易等问题。
高并发
- 批量提交
接口未使用验证码等未做token或者唯一标识码,导致攻击者可以重复多次请求,导致恶意操作。如重复交易等问题。
- 条件竞争
多个线程同时访问同一个共享代码、变量、文件等进行锁操作或者同步操作。如异常领取优惠券、代金券、异常获取多张抽奖券、异常注册等。
限制绕过
- 前端限制绕过(文件上传、查询条件)
客户端雅正是在我们输入发送到服务器之前进行的验证,它通过JavaScript,VBScript或者HTML5在浏览器上进行验证。
权限设置
授权绕过
- 未授权访问
需要认证才能访问的接口可以不经过认证也能访问调用;
权限提升
- 水平越权
修改接口中的认证参数看结果是否符合要求。权限类型不变,权限ID改变;
如:同是普通用户,其中一个用户可查看其他用户的信息。常见的就是通过修改一个ID参数来查看其他用户的信息,比如你查看自己的信息时,发现URL链接中,或者HTTP请求头中有一个UserID的参数,然后你修改这个参数就可以查看那个人的信息了。
- 垂直越权
修改接口中的认证参数查看结果是否符合要求。权限ID不变,权限类型改变;如普通用户可以使用管理员的权限进行操作。如你登录时,发现cookie中有一个roleID的角色参数,那么可以通过修改ID为1或者0,根据具体情况来定,就可以使用管理员权限了。
文件操作测试
路径遍历
应用程序如果有操作文件的功能,限制不严格会导致可以访问到WEB目录以外的文件。
文件下载
查看是否对下载功能进行了权限控制,限制不严格会导致可以访问到WEB目录以外的文件。
文件上传
1、确认上传文件名是否进行白名单限制;
2、确认上传文件类型是否进行了白名单限制;
3、确认上传的非文本文件内容是否进行了文件类型头的校验;
4、确认上传文件是否进行总大小限制;
5、确认上传文件的路径是否进行限制;
6、确认包含了敏感信息的文件,是否进行了文件最小权限控制;
7、确认上传的压缩包在解压时,是否进行了以上校验;文件包含
本地文件包含就是通过URL将服务器本地的其他文件include进来。远程文件包含就是将远程服务器的文件include进来。包含进来的文件都以当前脚本文件解析。
数据验证测试
XSS
- 存储型XSS
主要出现在让用户输入数据,使其他浏览此页的用户进行查看的地方,包括留言,评论,博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此页面就可能受到攻击。常见的一些GET/POST请求中,和一些保存类型操作中。插入恶意的脚本代码(如Javascript脚本)进行测试。
- 反射性XSS
主要是将脚本加入URL地址的程序参数里,参数进入程序后在页面直接输入脚本内容,用户点击类似的恶意链接很可能受到攻击。绝大部分是输入在哪里输出就在哪里。输入大部分位于地址栏或者来自DOM的某些属性,也会偶尔有数据请求中(如POST请求类型)。插入恶意的脚本代码(如javascript脚本)进行测试。
- DOM型XSS
它和反射型以及存储型XSS的区别在于,DOM XSS的代码并不需要服务器解析响应的直接参与,触发XSS靠的是浏览器的DOM解析,可以认为完全是客户端的事情。
SQL注入
用户提交的数据带入数据库中执行。通过web漏洞扫描工具进行对网站爬虫后得到的所有连接进行检测,或者手工判断是否存在注入点,一旦确认存在漏洞,可以利用自动化工具sqlmap去尝试注入。
SSRF
服务器端请求伪造,是一种由攻击者构造形成由服务器发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
成因:大都是由于服务器端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤和限制。比如从指定的URL地址获取网页文本内容,加载指定的地址的图片,下载等。命令行注入
web应用程序底层去调用系统操作命令,如果此处没有过滤好用户输入的数据,就很有可能形成系统命令执行漏洞。
XXE
XXE就是XML外部实体注入,当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取,系统命令执行,内网端口探测,攻击内网网站等危害。通过手工篡改网站中XML实体中的头部,加入相关的读取文件或者是链接,或者是命令执行等,篡改以后,如果可读取file文件或者达到植入命令的效果,则说明存在此漏洞。
URL重定向
URL跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法性校验,导致用户浏览器跳转到钓鱼页面的一种漏洞。
1、查找有重定向的接口,如登录页面:
.html?redirectUrl=.jsp
2、在URL后的参数更改为:redirectUrl=
3、如果成功跳转,则存在URL重定向漏洞反序列化漏洞
使用扫描器扫描或者人工检测,常见的中间件,如JBOSS,Weblogic,Websphere,jeckins等存在Java反序列化的漏洞,可利用工具进行测试。
组件安全测试
使用包含高危漏洞的组件的版本
1、咨询开发,引进了哪些第三方组件;
2、开发是否对引入的第三方组件进行安全审查与检测;
3、检查第三方组件的版本是否是安全版本,内网IP地址等信息
信息泄露
服务器后台管理地址泄露、内网IP、内部邮箱
页面或者HTML源码页面中泄露敏感地址,内网IP地址等信息。
返回不必要的敏感信息
返回请求的验证码、用户密码或者后台相关的执行代码等;
服务器错误信息返回到前端
错误提示信息中包含服务器中间件版本号、错误的代码等;
个人敏感信息是否掩码处理
个人敏感信息是否有解密、脱敏后传输,如登录口令、身份证号,银行卡号、手机等;
绕过前端限制操作大量敏感数据(查询、到处)
通过抓包方式绕过一个月,三个月等时间限制,大量查询,到处数据
通信安全
使用http传输敏感信息
检查系统是否使用http协议进行传输数据
GET方式传输敏感信息
检查系统是否使用GET方式进行传输敏感数据
配置管理测试
应用配置管理测试
- 服务器默认管理页面测试
1、检查是否存在web服务器控制台;
2、如果存在控制台,使用默认账号、口令或者其他弱口令登录,检查是否可以成功登录,如果可以则存在漏洞;
- robots敏感接口
1、尝试访问.txt
2、观察返回的接口,是否存在敏感文件和目录,如果存在,则存在问题;
- 目录浏览功能是否开启
在默认情况下,考虑到网站的安全性,应该禁用目录浏览器的,不过还需根据业务需要,合理设置允许用户启用或禁用目录浏览。
过时的,用于备份的以及未被引用的文件
- 是否存在备份文件、测试环境文件等
检查目录中是否存在数据备份文件或者包含测试数据账号的文件;
HTTP方法测试
- 是否开启不必要的http方法
不安全的http方法有:put,move,delete,copy,trace等
更多推荐
渗透测试案例指引
发布评论