⼀、授权和鉴权的区别? 授权:相当于给⼀个通⾏证 鉴权:鉴定是否有权访问(判断有没有通⾏证) 二、为什么要鉴权? 我们如果想要进⼊房⼦之前必须有钥匙,钥匙匹配了我们才能进⼊这个房间,没有鉴权,就好⽐,这房⼦只要有 ⼈知道在哪⾥,就可以随意的访问和进⼊,你愿意这么做吗? 那对于软件⽽⾔,也同样需要鉴权,如果没有这样的鉴权机制,那么我如果知道了你的ip,以及请求URL,那么 我就可以随意的访问你的资源 三、软件是怎么鉴权的? 3.1 浏览器项目 ⼀般浏览器的项⽬(PC使⽤浏览器打开,⼿机端H5打开)因为都有cookie容器,所以鉴权⼀般基于cookie (cookie base) 如:login接⼝中返回的数据⼀般会登录成功之后⽣成⼀串序列码放在responseheader中的set-cookie字段 1 / 43.2 手机APP ⼿机APP(⽐如很多Native开发)都是token base,会将服务器返回的校验信息缓存到设备本地存储(类cookie) 常见的处理⽅式,在处理的过程中也会直接返回在response中。 四、鉴权测试测什么? 鉴权测试其实更多的是测试登录之后⽣成的⽤户的唯⼀性标识,使⽤这样的标识去请求其他业务接⼝能否成功; 不带标识、伪造标识,能否绕过鉴权机制等的测试。 4.1 认证绕过(鉴权缺失) 测试⽬的:绕过认证,⽤户是否可以直接访问到本需要权限认证的资源。 测试前提:明确需要鉴权访问的操作的url 测试步骤: 1、录制burp suite请求 2 / 42、注销⽤户登录 3、请求重放(提取需要认证的请求) (1)直接重放 (2)修改会话标识重放 (3)删除会话标识重放 4、检查以上各种重放是否可以执⾏ 预期结果:不能成功执⾏。 4.2 会话随机测试 测试⽬的:Web应⽤程序使⽤业界主流的web容器(Apache、Tomcat、JBoss、WebLogic、NGINX、Jetty、Resin、 WebSphere、IIS)的会话标识⽣成机制⽣成会话标识。如果产品没有使⽤业界主流的Web容器,⾃⼰⽣成会话标识,必须使 ⽤安全随机数函数。。 测试步骤: 1、开启BurpSuite⼯具 2、访问登录页⾯,输⼊正确的⽤户名和密码,并登录成功。 3、观察整个登录过程找到response set-cookie字段中携带sessionid的报⽂:因为web⽤户认证登录通过后必须更换会 话标识,所以登录过程⼀定会有response set-cookie字段中携带sessionid的报⽂;⼀般在⽤户名密码登录的 post response报⽂中,也可能存在get报⽂的response中,在这两种response报⽂中的set-cookie字段⾥找。 4、将识别出的报⽂右键点击弹出菜单,选择“Send to Sequencer”,这时看到“Sequencer”标签⾼亮,点击 “Sequencer”标签,可看到请求已⾃动带进“Sequencer”,只需在“cookie”这栏选择请求中的会话标识即可, 基于JavaEE架构的会话标识符⼀般都以JSESSIONID命名,最后点击“Start live capture”开始发送⼤量请求获取⾜ 够数量的会话标识符。 5、等待进度条完成后,点击“Analyze now”即可在下⽅看到报告,这时只看红⾊圈部分显⽰“excellent”即可。 预期结果:测试结果显⽰为“excellent” 4.3 纵向越权 测试⽬的:绕过认证授权,低权限⽤户是否可以访问⾼权限才能访问的资源 测试前提:需要明确只有⾼权限⽤户才能访问的接⼝url 测试步骤: 1、 启动BurpSuite测试⼯具。 2、 按照《webservice接⼝清单》H列中识别的只有⾼权限⽤户才能访问的接⼝,⾼权限⽤户登录后进⾏访问,并通过 BurpSuite记录该请求(使⽤repeater功能)。 3、 低权限⽤户登录后,获取低权限⽤户的⽤户标识。 4、 将步骤2中BurpSuite记录的请求,修改为低权限⽤户标识后,进⾏重放(参考AutoRepeater插件,⽤于鉴权的批量 测试) 检查重放的操作是否可以执⾏。 预期结果:不能成功执⾏。 详⻅样例:#231584 3 / 44.4 横向越权 测试⽬的:绕过认证授权,⽤户B是否可以直接访问⽤户A的私有资源。 测试前提:需要明确哪些是⽤户私有数据url 测试步骤: 1、 启动BurpSuite测试⼯具。 2、 按照《webservice接⼝清单》中识别的⽤户私有数据url,⽤户A户登录后访问⽤户A的私有URL数据,并通过 BurpSuite记录该请求(使⽤repeater功能)。 3、 ⽤户B登录后,获取⽤户B的⽤户标识。 4、 将步骤2中BurpSuite记录的请求,修改为⽤户B的⽤户标识后,进⾏重放(参考AutoRepeater插件,⽤于鉴权的批 量测试) 检查重放的操作是否可以正常访问A的URL,如果正常访问,是否可以查看A⽤户的私有信息。 预期结果:不能成功执⾏。 4.5 服务端认证 测试⽬的:⽤户认证是否有在服务端实现 测试步骤: 1、 启动浏览器,打开被测系统的登录⻚⾯。 2、 启动burpsuite⼯具,对⽤户登录的POST请求进⾏拦截。 3、 在步骤1打开的登录界⾯中输⼊正确的认证信息(⽤户名、密码、验证码等),提交登录。 4、 在burpsuite拦截的请求消息中,修改认证信息为错误的内容(如修改为错误的登录密码),点击burpsuite的 “Forward”。 5、检查登录情况。 预期结果:⽤户登录不成功。 4 / 4
标签:登录,标识,基本知识,访问,cookie,测试,鉴权 From: https://www.cnblogs.com/Redamacy/p/18305292