随着技术的发展和安全技术的普及,大多数互联网企业的网页安全漏洞可能出现在业务逻辑漏洞中,尤其是越权问题。黑盒测试会带来很多脏数据。同时,白盒扫描不可接受的误报率和代码审计的低效率是挖掘越权漏洞的大山。所以,我一直在思考,是否有更好的方法来解决这些问题。
随着R&D测试流程的改进,测试部门的大多数学生将在新代码部署到测试环境后进行功能测试。在进行功能测试时,安全专业的学生可以根据捕获流量然后回放流量来检测一部分漏洞。例如,我们经常对get-type请求进行sql注入测试,还可以根据替换身份信息来执行普通的未授权和未授权检测。根据以上我们应该也发现了一部分问题,所以实际生产中有大量的场景需要与数据库交互,比如修改个人信息、修改收货地址、添加收货地址、删除收获地址等。对于这些类型的越权检测,大部分安全生可能会先申请两个账号再进行测试,然后根据对比返回的结果来判断是否存在越权。以上也可以实现自动检测。无非是替换认证字段重放请求,但是上边的检测方法存在一部分问题,比如带来了大量的脏数据,进而对qa测试产生一定的影响。想想之前post类型的注入是否加入了or1=1,那么有什么办法解决这些问题吗?下面是我的一部分想法。
如何判断是否有越权漏洞。首先,想想我们每天挖坑的时候是怎么判断一个界面是否有安全问题的。让我们以后置型sql注入为例,如果有一个场景你修改自己的地址,updateuserrsestaddress="China+Beijing"其中systemname="Sara"和"1",很明显这将拼接成一个可执行的sql语句。然后将它提交给数据库执行。根据上边的深入分析,我们事实上可以看到,只要得到执行的sql语句,就基本可以判断是否有注入,而不会让sql继续提交给数据库引擎执行。我们在做安全评估时经常遇到的问题之一就是担心脏数据。例如,如果开发学生筛选用户名,假设只有或“1”可以提交审批,那么当我们进行测试时,就存在更改所有其他人的信息的风险。我相信我们身边的人都有过根据增加or1=1来改变表中所有信息的辉煌历史。如果我们能得到提交请求的详细信息,以及这些请求带来了什么数据交互,也就是执行了什么sql语句,我们就能做更多的事情。