Swagger未鉴权

极客

哎哟喂!Swagger未鉴权这坑,我帮你踩过了,血泪教训啊!

兄弟姐妹们,今天咱们得来聊聊一个让我又爱又恨的东西——Swagger未鉴权,说起这个,我真是气不打一处来!前两天公司那个测试环境,也不知道哪个大兄弟手一抖,把Swagger文档整个裸奔在公网上了,好家伙,那接口文档详细得跟产品说明书似的,连数据库表结构都快被挖出来了!我当时就急了,这哪是文档啊,这分明是把自家保险柜钥匙挂大门口嘛!

你们知道吗?Swagger这东西本身就相当于是接口的“操作手册”,正常情况下给开发同学看看、联调一下,那是真方便,可一旦未鉴权暴露在公网上,那就纯属“引狼入室”了,我就亲眼见过,有个黑客小哥通过swagger页面找到个上传接口,直接往服务器上传了个webshell,那场景,简直是翻版的“特洛伊木马”啊!

咱得说句实话,未鉴权的Swagger其实是个很常见的疏漏,为啥?因为很多开发同学觉得“哎呀,我就是本地测测,不碍事”,或者“我放在内网,外网访问不到”,可现实呢?现在的网络环境,内网穿透、端口转发、跳板机,什么花样玩不出来?等你反应过来,数据可能已经被人拖走了。

唉,说到这儿,我得吐槽一下我自己,以前我也犯过这种低级错误,觉得Swagger只是开发期用用,上线就关了,结果有次项目上线后忘了关,过了好几天才被安全扫描的同事发现,还好当时访问量不大,没造成什么实质损失,不然我怕是得吃不了兜着走,吓出我一身冷汗啊!

那怎么应对这个问题呢? 我个人觉得,首先得给Swagger加个“门禁”,比如用Spring Security或者Shiro搞个简单认证,哪怕就设个账号密码呢!再或者,干脆把Swagger只在特定的环境启用,生产环境直接禁用,还有一个秘诀,就是通过网关统一拦截路径,只要是swaggerapi-docs这些敏感路径,一律要求token校验。

不过话说回来,咱们也得理解,Swagger未鉴权的风险往往是被低估的,可能很多朋友觉得,不就是个接口文档嘛,能咋地?哎哟,如果你真这么想,那就天真了!通过Swagger暴露的接口信息,攻击者可以轻松找到未授权访问的接口、测试API的越权漏洞,甚至会SQL注入的入口——这简直是把攻击思路给你铺好了。

咱们不妨换个角度,把Swagger当成你家访客登记簿,要是门口保安随便什么人都放进来,那这本登记簿就等于是给贼画了一张“房屋布局图”,你说,这个类比是不是贼形象?所以我建议大家,没事就检查检查自己的项目,看看Swagger是不是还在裸奔,如果实在需要对外展示,也要用安全的身份认证机制。

写到这里,我真是越想越气,越想越觉得后怕,总之呢,Swagger是工具,不是敌人,但未鉴权的Swagger绝对是自爆弱点,咱们搞开发的,学点网络安全知识不吃亏,真的!最后友情提示一句,有空多看看自己的接口文档,看看权限配置是不是都做好了,别等出了事再抱头痛哭呀!

Swagger未鉴权

如果你对网络安全感兴趣,想学习更多实用的攻防技巧,可以加QQ:374267102,大家一起交流进步!

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

目录[+]

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