• 36:WEB漏洞逻辑越权之验证码与Token及接口


    知识点

    验证码安全
    分类:图片,手机或者邮箱,语音,视频,操作等
    原理:验证生成或验证过程中的逻辑问题
    危害:账户权限泄露,短信轰炸,遍历,任意用户操作等
    漏洞:客户端回显(已讲),验证码复用,验证码爆破(已讲),绕过等
    
    Token安全
    基本上述同理,主要验证中可存在绕过可继续后续测试
    token爆破,token客户端回显等
    
    验证码识别插件工具使用
    captcha-killer,Pkav-Http-Fuzz,reCAPTCHA等
        captcha-killer下载:https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2
        reCAPTCHA下载:https://github.com/bit4woo/reCAPTCHA/releases/tag/v1.0
    
    接口安全问题
    调用,遍历,未授权,篡改等
    
    调用案例:短信轰炸
    遍历案例:UID等遍历
    callback回调:JSONP
    参数篡改:墨者靶场
    
    未授权访问与越权漏洞区别
    
    Jboss、Jenkins、ldap、Radis、elasticsearch、MenCache、
    Mongodb、Rsync、Zookeeper、Docker等未授权访问
    

    本课重点

    • 案例1:验证码识别插件及工具操作演示-实例
    • 案例2:验证码绕过本地及远程验证-本地及实例
    • 案例3:Token客户端回显绕过登录爆破演示-本地
    • 案例4:某URL下载接口ID值调用遍历测试-实例
    • 案例5:Callback自定义返回调用安全-漏洞测试-实例
    • 案例6:上述在实战中如何做到漏洞发现-bp功能点

    案例1:验证码识别插件及工具操作演示-实例

    验证码识别测试网址:https://manage.yyxueche.com//panel/login.php

    <1>Pkav HTTP Fuzzer验证码识别工具

    • 优点:免费,简单,方便
    • 缺点:无法集成到burp等第三方工具上使用,只能在本工具上发包

    <2>captcha-killer burp验证码识别插件

    参考:

    https://www.cnblogs.com/cwkiller/p/12659549.html

    https://www.cnblogs.com/nul1/p/12071115.html

    案例2:验证码绕过本地及远程验证-本地及实例

    演示案例1&2靶场环境:pickachu

    演示案例1:验证码复用

    验证码可以一直使用,不需要更新

    原因是验证码用过后未及时销毁

    演示案例2:验证码绕过

    这里验证码的生成和验证都是在前端进行,绕过方法是直接屏蔽掉前端相关的JS代码即可。

    演示案例3:真实案例

    这里有一个注册功能,给手机号发验证短信时需要输入验证码。

    第一次输入正确的验证码成功后,抓包,将验证码字段值设置为空,可以一直向手机发送短信。

    案例3:Token客户端回显绕过登录爆破演示-本地

    靶场环境:pickachu

    登录请求包有一个隐藏字段token防止重放,这个字段值由前一个请求从后端返回

    绕过方法:可以重放两个请求,从第一个请求响应中取token值,放到第二个请求(登录请求)中,对登录进行暴力破解。、

    参考:https://www.cnblogs.com/zhengna/p/12703113.html

    案例4:某URL下载接口ID值调用遍历测试-实例

    类似枚举遍历

    http://www.grasp.com.cn/DownFiles.aspx?id=591

    遇到以上这类请求接口时,可以尝试配合intruder模块,枚举ID值,看能否获取其他编号对应的用户信息

    造成这类问题的原因是水平越权

    案例5:Callback自定义返回调用安全-漏洞测试-实例

    callback安全

    简要说明:

    • 1.由于浏览器的同源策略(域名,协议,ip端口相同),非同源域名之间传递会存在限制。
    • 2.JSONP(用于解决跨域数据传输的问题,利用了HTML里元素标签的开放策略src引入Js文件,远程调用动态生成JSON文件来实现数据传递,并以任意javascript的形式传递,一般使用 Callback(回调函数返回,由于没有使用白名单的方法进行限制Callback的函数名,导致攻击者可以自定义Callback内容,从而触发XSS等漏洞)由浏览器的javascript引擎负责解释运行。

    原理分析:

    • 1.接口开发时,接收回调函数的参数值在进行拼接前未对恶意数据进行合理化处理,导致攻击者插入恶意的HTML标签并在返回的JSON数据格式原样输出;
    • 2.同时服务端未**正确设置响应头content-type,**导致返回的json数据被浏览器当做Html内容进行解析,就可能造成xss等漏洞。

    测试切入点:

    • 1.一个使用jsonp技术的接口,参数中包含回调函数的名称(jasonp,callback,);
    • 2.服务端返回的json数据时,响应头为 content-type: text/html;
    • 3.服务端未对回调函数参数进行过滤净化。

    测试步骤:

    • 1.设置代理到burpsuite;
    • 2.网站根目录开始爬取,重点关注Ajax异步(一般页面只会局部刷新)处理的网页,关注重点业务;
    • 3.在HTTP history 标签页过滤功能过滤关键词 Callback,jasonp,等请求,找到URL带有Callback参数的链接。勾选Filder by file extension中的Hider,隐藏js、gif等后缀的URL);
    • 4.查看URL对应得HTTP Response的Content-Type类型是否为text/html且内容是否为json形式(带有json数据的函数调用),如果是我们输入的HTML标签才会被浏览器解析;
    • 5.将对应的请求发送到Repeater。在callback参数值的前面加一些类似HTML的标签,如,如callback=Testjsonp1,Go之后发现Response的内容有无影响(HTML有无被转义,没有转义则存在漏洞)。也可将callback参数换为有恶意行为的HTML标签,如callback=<img οnerrοr=alert(document.cookie) src=x />jsonp1

    防御修复方案:

    • 1.定义HTTP响应中content-type为json数据格式,即Content-type:application/json;
    • 2.建立callback白名单,如果传入的callback参数值不在名单内就阻止继续输出,跳转到异常页面;
    • 3.对callback参数进行净化,包括不限于html实体编码,过滤特殊字符< > 等。

    原文链接:https://blog.csdn.net/weixin_42519551/article/details/104578440

    案例6:上述在实战中如何做到漏洞发现-bp功能点

    爬虫整个网站-->搜索特定关键字(比如cheackcode,id,callback等)-->快速精准找到有逻辑漏洞的点-->针对性测试

  • 相关阅读:
    php-基于面向对象的MySQL类
    php-迭代创建级联目录
    php-删除非空目录
    php-递归创建级联目录
    linux 用户管理
    mysql 语法大全
    dos命令下修改mysql密码的方法
    对 linux init.d的理解
    linux 重启服务器命令
    校验软件包
  • 原文地址:https://www.cnblogs.com/zhengna/p/15657016.html
Copyright © 2020-2023  润新知