随着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漏洞挖掘的重点部分,同时也提醒我们甲方此类安全测试的重要性。
作者:盐风
侵权请私聊公众号删文
热文推荐
欢迎关注LemonSec
觉得不错点个“赞”、“在看”