• 逻辑漏洞(基本概念、爆破)


    文章目录

    目录

    前言

    1.什么是逻辑漏洞

    2.漏洞根源

    2.1 sql注入为例

    2.2 逻辑漏洞分类

    2.2.1 软件(系统)设计之初便存在的漏洞

    2.2.2使用者未能安全使用软件所产生的

    3.身份验证漏洞

    0x00暴力破解漏洞

    1 未限制爆破

    2.限制 IP 爆破

    3.限制密码错误次数来爆破

    4.多字段爆破

    1.设置单线程

     2.选择Token的规则

    3.在此处添加

    5.限制登录频率爆破

     6.Authorization

    总结



    前言


    1.什么是逻辑漏洞

    逻辑漏洞就是基于开发人员设计程序的时候,逻辑不严密,导致攻击者可以修改、绕过或者中断整个程序,让程序按照开发人员的预料之外去执行。


    比如某一网页的登录验证逻辑如下:


    输入用户名验证﹣﹣验证成功后输入密码﹣﹣输入验证码﹣﹣数据包前端传到后端处理﹣﹣数据库匹配﹣﹣匹配成功回包由于整体网站可能采用前端验证,黑客可以直接篡改或者绕过某些流程,如下:


     BP 抓取用户名,密码、验证码特定格式﹣﹣发送给后端匹配


    由于网站采用前端验证,导致攻击者可以直接抓取数据包,从而绕过用户名验证的过程,直接爆破,简单来讲,只要你能修改、绕过、中断整个开发者运行软件的整体逻辑,这个便是逻辑漏洞,只是绝大部分逻辑漏洞的危害性并不高,比如开:发人员需要你先输入账号,在输入密码;但是你改变了这个逻辑,可以先输入密码,在输入账号,其实这个也是逻辑漏洞,这个漏洞没有任何危害;但是也有可能在某些特定情况下可以结合其他的漏洞可能产生新的风险

    2.漏洞根源

    2.1 sql注入为例

    • 程序的开发者也没有想过你可以拼接他的语言产生他预料之外的危害,他不过是按照程序逻辑完成了整个查询的动作。
    • 那么为什么会产生逻辑漏洞就很容易理解了:研发只负责满足客户的需求,大部分的研发并不懂安全,所以并不会带着黑客的思维考虑这个软件的安全
    • 程序的本质就是按照研发设计的逻辑运行,这个过程中出现的所有漏洞,皆可以为逻辑漏洞

    2.2 逻辑漏洞分类

    2.2.1 软件(系统)设计之初便存在的漏洞

    这一点很好理解,比如永恒之蓝, sql 注入漏洞、文件上传等等,均为设计的时候未能按照安全设计的方法进行,所产生的,攻击者只需要找到特定的点,执行特性的代码即可产生研发预料之外的现象


    2.2.2使用者未能安全使用软件所产生的

    关键在于使用者,比如弱口令,比如匿名用户;程序开发者会设计很多便捷的功能,但是由于使用者使用不当,产生了新的问题

    3.身份验证漏洞

    0x00暴力破解漏洞

            渗透测试中最简单也最有效的攻击方式就是弱口令攻击, web服务中最好用的爆破神器就是 burpsuite 的 intruder 的模块,如果有验证码的话,如果验证码相对简单,就可以就用 pkav 工具来试下,如果 bp 解决不了的话,就需要自己写脚本来爆破.

            字典方面,可以参考自行到 github 上去收集常见的密码本,最好可以形成自己的密码库
            当然,遇见复杂的但是又需要的爆破的需要自己根据实际的网站,进行脚本的编写,更好的达到爆破的目的:验证码识别可以参照 kuls 大佬的文章:

    验证码识别100%?我飘了...

    1 未限制爆破

            未限制爆破,即对于用户登录的地方没有做什么限制爆破的策略,因此对于这个地方可以直接使用 bp 来抓包放进 intruder 模块爆破,参考 dvwa low 关卡或者 pikachu 《基于表单的暴力破解》

    2.限制 IP 爆破


            某些具有安全意识的开发人员或运维人员针对账户爆破问题就会使用限制攻击者 IP 的方式,当在短时间内有大量来自该 IP 的尝试登录现象时就会封锁该 IP ,导致该 IP 无法使用,针对这种情况,建议自己写脚本,调用 git 开源的代理 API 来爆破,当然也可以直接用别人的轮子


    自建轮子的方法:首先需要新建一个代理池:现在好用的一般是收费版本

    3.限制密码错误次数来爆破

            有些网站管理员会限制某个账号的登录次数,如果超过限制次数,账号就会被锁定,除非管理员解锁或者设定一段时间过后自动解锁
            由于他限制了一个账号,比如只允许输入5次,但是不限制你换个账号又可以输错5次,对于这种情况,通常可以采用弱密码反过来爆破账户的方式,即设置任意的不超过爆破次数的弱密码数量来反过来爆破用户名

             eg:

    4.多字段爆破

            多字段爆破即需要爆破多个字段大于等于2,比如说:需要同时爆破:账号密码验证码,当我们爆破一个网站时返回信息是用户名或密码错误时,大多数时候仍然使用 burpsuite 的 Intruder 模块,只是与单个字段爆破选择的模式不同,但是当某几个字段相同的情况下,例如在不仅在 post 内容中确定
            还要在 cookie 或者 session 或者 token 中确定的时候,也可以自己写脚本解决问题,这里以pikachu靶场为例

    1.设置单线程

     2.选择Token的规则

    3.在此处添加

    5.限制登录频率爆破

            限制登录频率爆破即限制在一定的时间内爆破的次数,比如10分钟内只允许爆破10次,对于这种方式
            可以采用延时爆破的方式,但是可能需要时间比较久,但总比手工爆破舒服,在 bp 上如下文设置,该时间以 ms 为单位(1000ms=1S)

     6.Authorization

    Authorization 爆破,狭义上单纯指basicbase64爆破,比如 tomcat 的密码在传输的时候,是采用base64编码的,而广义上可以泛指经过编码过后的用户名与密码 (后续具体展开)


    总结

            想要真正理解原理,还是需要多练习靶场和CTF上面的题目,现在只能了解到怎么使用

    ,最后用我一张图片结尾

  • 相关阅读:
    深度学习--CNN应用--VGG16网络和ResNet18网络
    Unity Rain Ai 插件的使用入门
    鉴源实验室丨TARA分析方法论
    矿区井下智慧用电安全监测解决方案
    “我有一个大胆的想法”?Meta AI 新技术让你的思维图像一览无余!
    IPWorks 2022 核心网络组件 最新版 Crack
    学习笔记|回顾(1-12节课)|应用模块化的编程|添加函数头|静态变量static|STC32G单片机视频开发教程(冲哥)|阶段小结:应用模块化的编程(上)
    大数据基础
    jquery列表顺序倒转排序效果
    MinIO 分布式文件(对象)存储
  • 原文地址:https://blog.csdn.net/m0_61506558/article/details/126303215