基于业务场景的漏洞挖掘方法
2022-8-2 00:3:7 Author: LemonSec(查看原文) 阅读量:11 收藏

随着WAF产品从传统规则库到智能引擎的转型,通用漏洞类型已基本可以防护。但WAF的局限性也在于只能防御流量层面的攻击,难以防御业务逻辑型的漏洞。而如今大部分企业在Web应用层的防护主要依赖WAF,往往会忽视业务逻辑场景产生的漏洞本文介绍一些基于业务逻辑场景的应用漏洞挖掘方法,希望可以对各企业安全建设和SRC漏洞挖掘有所启发。

信息收集

信息收集是漏洞挖掘的第一步,你拥有的“资产信息”决定了你的产出。下面列举几种常见的信息收集手段:子域名收集

1.  暴力破解

推荐在线子域名扫描工具:YoungxjTools,速度快,内置大量字典且支持自定义字典,本地工具layer也很方便,比YoungxjTools多了端口配置功能

2.  搜索引擎搜索

Google百度、360、bing、搜狗等主流搜索引擎,可以通过搜索语法进行搜索,在发现域名时往往会同时发现一些敏感的页面,但收录有限。

3.  证书查询

常用的证书查询网站有censys.io crtsh等,可以发现暴力破解无法爆破出来的子域,但同样收录有限。

4.  微信公众号、小程序

微信已是如今人们日常生活中用的最多的软件之一,越来越多的公司选择在微信公众号、小程序来拓展业务及影响力,我们可以通过这些渠道来收集更多的域名或ip地址

业务逻辑的切入点

1.登陆注册,修改密码处(验证码绕过)

客户端刷新验证码

在挖掘验证码问题中,一般情况下会先通过抓取数据包验证常见的逻辑错误、暴力破解、短信轰炸等问题。此处讲解下检查源码方式,直接右键检查验证码的html代码,可以看到验证码是客户端通过一个img标签进行请求刷新的,<imgsrc="http://xxxx.xxxx:80//ImageServlet"id="code_img"height="26"/>,此处src地址即为验证码地址。

正常当我们输入错误的验证码时,请求会返回验证码错误信息且刷新一次验证码,当我们将客户端刷新验证码的请求hold住时,验证码处会一直停留在原始的验证码,不会再做刷新,此时我们就可绕过验证码刷新并使用burpsuite进行账户密码的暴力破解了。

2.  支付功能处(更改客户端)

高并发问题

假设用户的账户余额100元,某商品单价100元/件,当用户使用账户余额购买此商品时只能购买一件数量,且购买成功后账户余额归零。但当业务存在高并发漏洞时,扣款的同时数据库未落锁,导致账户余额可能减少至负数,购买到的商品也可大于一件。

如在某小程序中,有一处使用积分抽奖的功能,在使用积分抽奖按钮处使用fiddler抓包并截断数据包请求。

shift+r设置同时高并发50次,可看到抽奖次数已超出积分余额,同时剩余积分变为负数。

3.订单管理处(用户权限,用户未授权)如增删改查、本地验证绕过

水平越权(不安全的直接对象引用IDOR)

越权漏洞是web应用程序常见的漏洞之一,主要分为以下几类:

  • 未授权访问:本来没有账号(即没有某个功能权限),但是通过越权操作,获取了某个功能权限;
  • 水平越权:本来有个账号(即只能操作自己的数据,比如增删改查),但是通过越权操作,能操作其他同等权限账号的数据。
  • 垂直越权:本来有个账号只有小权限,但是通过越权操作,获取了大权限。

在日常安全测试中,大部分发现的都是未授权访问和水平越权,本次讲解下水平越权。水平越权常见于业务系统中,对用户信息或者订单信息进行增删改查操作时,由于用户编号或者订单编号有规律可循(有序递增,订单编号常发现以日期开头后面再接几位有序增长的数字,类似20200520xxxx1,20200520xxxx2),且执行请求时未校验用户对应权限或权限校验不足,就可能存在越权漏洞,此时我们通过burpsuite的 intruder对目标参数进行遍历测试即可。

如下是某厂商业务系统的分销中心,提供分销账单的查询功能:

登陆账户后,任意选择一个分销账单,点击订单明细查询,使用burpsuite进行抓包,可以看到查询的参数只有”billld”一个选项,且参数值为简单的4位数字,返回包中含明文的订单明细信息:

更改一个不在账户权限下billld,发现仍可正常返回,使用intruder对billld参数进行遍历,并对length排序,可得多条有效payload对应的订单明细,理论上遍历的参数值范围够大,可得全站分销账单明细。

4.配置不当

SPF邮件伪造

SPF是 Sender PolicyFramework 的缩写,一种以IP地址认证电子邮件发件人身份的技术。接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。SPF可以防止别人伪造你来发邮件,是为了防范垃圾邮件而提出来的一种DNS记录,它是一种TXT类型的记录。

由于SMTP邮件服务商互相发送邮件是不需要认证的,邮件伪造也是利用这个特性来实现伪造任意发件人。

如何查看邮件服务器是否配置SPF记录:

Windows下进入DOS模式后用以下命令:

nslookup -type=txt 域名

Unix操作系统下用:

dig -t txt host

已配置SPF的情况

可以看到在ANSWER SECTION下存在一条

"v=spf1include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com a mx ptr-all"

简述下此条记录的含义,v=spf1 声明SPF的版本,include:<domain> 表示引入<domain>域名下的 SPF 记录,支持当前域名的a mx ptr记录进行验证,-all表示除此之外拒绝所有。

未配置SPF的情况,可看到声明中无相关spf记录

攻击者可以找一个在线smtp发件服务器,伪造发件地址进行钓鱼,以下是某企业邮箱存在SPF邮件伪造的示意图:

总结

本篇文章只简单介绍了几个业务漏洞挖掘的方向,大家可在此基础上拓展思路,发掘更多姿势。业务问题产生的漏洞很多,一些扫描器、WAF等安全产品也难以覆盖,尤其一些新上线的大型业务系统接口多,功能点的逻辑复杂,容易产生被忽视的漏洞,是SRC漏洞挖掘的重点部分,同时也提醒我们甲方此类安全测试的重要性。

作者:盐风

原文地址:https://www.bilibili.com/read/cv11867575/

侵权请私聊公众号删文

 热文推荐  

欢迎关注LemonSec

觉得不错点个“赞”、“在看”


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyMTA0MjQ4NA==&mid=2247531119&idx=1&sn=a0934201d33763b098b1a3f0fdb94fd2&chksm=f9e31534ce949c22716cd9fc54082a5c29a6d7ae0a1cf1b49b948df712172575186906b470d5#rd
如有侵权请联系:admin#unsafe.sh