如何编写越权漏洞的扫描软件?



      写这个软件已经半年多了。希望以自己的方式记录为沉淀。当业内有人再次提到“越权扫描

器”时,从前端到后端,从代理到消费,从设计到使用,都会有一个感性的参照。
 
为什么要做这个软件?
 
因为我个人认为IAST和DAST方向的安全产品主要解决OWASPTop10中的传统安全漏洞,比如

sql注入、xss、rce等。;但越权漏洞本质上可以归结为“逻辑”漏洞,从技术原理上讲,传统扫

描器很难捕捉到逻辑漏洞。例如,从提出需求、回顾到R&D、测试和上线,每个人对一个功能

都有不同的理解。如果你在R&D会议后三天不看这段代码,你会忘记这个函数具体做了什么。

更不可能指望一个没有“聪明”大脑的扫描仪去理解它,去发现漏洞。甚至这个产品功能本身就

是逻辑错误(类似伪需求)。

 
在成熟的互联网企业中,统一的公共服务、标准的R&D规范、成熟的汽车生产线,以及逐渐

进入内生安全的代码框架,这些都使得传统的Web应用安全漏洞越来越不可见。但是,越权

漏洞可能会造成很大的危害,因为R&D忘记了检查某个参数的逻辑或属性,并且漏洞的限制

非常低。
 
 
一般来说,自动化很难检测,容易发生,危害性很大,但我们可以尽量自动化一些横向或纵

向越权的漏洞。说到自动化,数据源的自动获取是必不可少的。更常见的形式是代理充当日

志生产者。市场上有这么多类型的代理,我们应该选择哪一种来满足高性能和https请求以及

所有响应者?生产者流量可用,留下核心越权扫描引擎。想法很简单,就是换cookie,也

就是替换请求凭证,可能是cookie中的动态口令字段值,也可能是表头的BA认证字段值,情

况因公司而异。我们公司叫token,你们公司可能叫session或者sid等等。,甚至可能没有统

一的认证机制,所以我们替换的是整个cookie值。这相当于根据“更改Cookie请求后的不同

回应来判断是否存在越权。比如原请求的响应是“phone=
1360581”,替换成别人的cookie后

的响应仍然是phone=1360581,很可能是越权漏洞,这也是大家测试越权漏洞常用的方法

(或者通过遍历orderid等参数)。
分享: