越权访问白盒测试

极客

我差点漏掉的那个“水平越权”漏洞,气死我了!

哎,各位看官,今天咱们不聊那些高大上的“渗透测试从入门到放弃”,咱就唠唠我上周在项目里遇到的那个越权访问白盒测试的糟心事,说真的,做完这几天的代码审计,我整个人都快“麻”了,但又不得不承认,这玩意儿确实是Web安全里的“隐形刺客”,比那些SQL注入啥的阴险多了。

先说结论:白盒测试里的越权,简直是“灯下黑”

嘿,您猜怎么着?以前我做黑盒测试,拿个Burp抓包改ID,测出越权那叫一个“爽”,但这次甲方要求做白盒测试,我还得装模作样地看源码,不看不知道,一看吓一跳——原来越权访问的根源,往往藏在那些看似人畜无害的“业务逻辑”里,你光靠扫描器是根本扫不出来的!

举个例子吧,代码里有个查看订单详情的接口,GET /order/detail?id=123,在白盒测试的视角下,我翻遍了Controller层,发现竟然没有校验当前登录用户和订单归属是否一致!我当时心里就“咯噔”一下,这不就是教科书级的水平越权吗?普通用户只要改一下URL里的ID,就能看到隔壁老王的收货地址和手机号,我的天,这要是被坏人利用,隐私泄露的锅谁来背?

为什么我说白盒测试里的越权更“气人”?

说真的,在做越权访问白盒测试的时候,最气人的不是漏洞多难找,而是开发小哥的逻辑漏洞太“幼稚”了,他只在查询列表页做了数据过滤,却在详情页忘了加用户标识判断,这种“只见树木不见森林”的操作,让我在审计的时候血压直接飙升,您说,这要是黑盒测试,得拿多少个账号去撞才能撞出来?而在白盒里,代码就像裸奔一样,一目了然。

而且啊,越权这玩意儿还分水平越权垂直越权,水平的是“平级互看”,垂直的是“低权限干高权限的事”,咱做白盒测试时,得把自己想象成那个最挑剔的“杠精”,看到updatedelete这类操作,脑子里必须拉响警报:这个操作的权限校验,到底是在按钮层面还是后端方法层面? 如果只是前端隐藏了按钮,那恭喜你,又一个越权漏洞到手了,我当时盯着屏幕,心里那个气啊,真想问问开发:“大哥,你前端禁用了删除按钮,后端倒是也拦一下啊!”

别急,我给您支两招(亲测有效)

越权访问白盒测试,咱不能像无头苍蝇一样乱撞,我的经验是,先梳理出所有涉及“用户ID、订单ID、商品ID”的URL参数,然后顺着代码的调用链,去找 getCurrentUser() 或者 Session 的比对逻辑。凡是没拿request.getSession().getAttribute("userId")和参数里的ID做equals判断的,统统标红! 哎呀,这么一说,我突然觉得,这活儿虽然累,但跟破案似的,找到那个“缺失的一环”时,成就感还是挺足的。

有一次,我甚至在一个越权访问白盒测试报告里,看到别人把垂直越权写成了“越权访问管理后台”,我当时就想笑,这分类都搞不清楚,还测个锤子?所以咱自己写报告的时候,一定得把功能级访问控制数据级访问控制分开写,不然甲方看了云里雾里,咱这专业度可就大打折扣了呀。

写在最后:这活儿,真得细心

说实话,写完这份越权访问白盒测试报告,我嗓子都哑了(气的),但这恰恰说明,白盒测试的价值就在于此——它能挖出黑盒测试永远够不到的“业务深渊”,如果您也想跟我一样,练就一双“代码透视眼”,发现更多隐蔽的逻辑漏洞,不妨多琢磨琢磨Java的Spring Security或者PHP的中间件配置。但千万别忘了,测试环境搞破坏,生产环境一时爽,测试环境火葬场,咱可得悠着点!

好了,今天的牢骚就发到这儿,如果您对越权访问白盒测试还有其他心得,欢迎来跟我聊聊,如果您也想入门网络安全,一起研究这些让人又爱又恨的漏洞,随时可以加我的QQ交流,不过说实话,我最近正忙着修复自己代码里的越权漏洞呢,回消息可能有点慢,您可得多担待!

越权访问白盒测试

学习网络安全可以加QQ:3232816103(备注“博客学习”更快通过哦)

文章版权声明:除非注明,否则均为咸鱼-即刻攻防原创文章,转载或复制请以超链接形式并注明出处。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码