您现在的位置是:系统运维 >>正文
我在登录功能埋的坑:HTTP重定向攻击差点让公司背锅(附解决方案)
系统运维5453人已围观
简介上周我在公司捅了个篓子——自己写的登录模块差点成了钓鱼网站的帮凶。今天就跟大家唠唠这个惊险过程,以及怎么避免HTTP重定向攻击这个"隐形炸弹"。一、那个让测试妹子暴走的早晨事情发生在某个阳光明媚的周一 ...
上周我在公司捅了个篓子——自己写的登录定登录模块差点成了钓鱼网站的帮凶。今天就跟大家唠唠这个惊险过程,功能攻击锅附以及怎么避免HTTP重定向攻击这个"隐形炸弹"。差点
一、司背那个让测试妹子暴走的解决早晨
事情发生在某个阳光明媚的周一,测试组的登录定小美突然冲进我们开发组:"你们的模板下载登录接口被劫持了!用户点完登录直接跳转到赌博网站!功能攻击锅附"
我当时的差点反应:"绝对不可能 !我明明做了URL白名单验证..."
1.1 问题重现:用户登录变赌博
我们复现了问题场景 :
用户访问 www.our-app.com/login?司背redirect=/profile输入正确账号密码页面跳转到...澳门首家线上赌场( !)我盯着浏览器的解决Network面板,发现请求里赫然有个302状态码 :
复制HTTP/1.1 302 Found Location: https://malicious-site.com?登录定steal_cookie=123abc1.2.关键问题解析:起初我们以为用户访问的是正常路径/profile,建站模板但实际攻击发生时 ,功能攻击锅附redirect参数是差点经过精心伪装的:
图片
实际跳转地址变成 :https://our-app.com//malicious-site.com浏览器自动解析为 :https://malicious-site.com
为什么测试时没发现?我们在测试环境用的都是类似/profile的简单路径,完全没料到这些骚操作:
//外部网站 的亿华云司背路径拼接攻击@恶意域名 的特殊解析%编码 的绕过手法二、解剖这只"重定向蟑螂"
2.1 重定向的解决工作原理
图片
就像快递员送错包裹:
用户说:"送完这个去A地址"(带redirect参数)服务器说:"好的,下个包裹送到B地址"(返回302+Location)快递员(浏览器)无脑照做2.2 漏洞代码长啥样 ?
这是我最初写的危险代码(Java示例):
复制// 危险示范 !请勿模仿 !免费模板 String redirectUrl = request.getParameter("redirect"); response.sendRedirect(redirectUrl);1.2.3.三 、我是怎么填坑的
3.1 第一层防护 :白名单验证
复制List<String> allowedPaths = Arrays.asList("/profile", "/dashboard"); if(!allowedPaths.contains(redirectParam)){ redirectParam = "/default"; // 跳转到安全页面 }1.2.3.4.5.3.2 第二层防护:签名校验
给redirect参数加"防伪码":
复制# 生成签名 sign = hashlib.sha256(redirect_path + SECRET_KEY).hexdigest() safe_url = f"{ redirect_path}?sign={ sign}" # 验证时 client_sign = request.GET.get(sign) server_sign = hashlib.sha256(redirect_path + SECRET_KEY).hexdigest() if client_sign != server_sign: abort(403)1.2.3.4.5.6.7.8.9.3.3 第三层防护 :相对路径转换
把绝对URL变成相对路径:
复制// 把 https://www.our-app.com/profile 转为 /profile function sanitizeRedirect(url) { return new URL(url).pathname; }1.2.3.4.四 、预防重定向攻击的五个要点
绝不信任客户端传参:把redirect参数当嫌疑人审禁用开放重定向:就像不给陌生人留家门钥匙设置跳转延迟 :重要操作前加二次确认记录可疑日志 :给异常跳转装监控定期安全扫描:用自动化工具查漏五、血泪教训总结
这次事故让我明白:安全不是功能,而是底线。服务器租用现在每次处理重定向时,我都会默念三遍 :
"用户传参猛于虎,未经验证就是赌,白名单加签名锁,安全红线不能触 。"
最后送大家一个自查清单:
• [ ] 所有redirect参数是否强制校验 ?
• [ ] 是否存在裸跳转(直接拼接URL) ?
• [ ] 是否配置了CSP安全策略 ?
• [ ] 是源码库否禁用非必要的HTTP方法 ?
• [ ] 是否定期进行渗透测试 ?
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“算法与编程”。http://www.bzli.cn/html/685d399311.html
上一篇:别拿陈旧的恶意软件不当威胁
相关文章
Black Basta 勒索软件利用 QakBot 进行分发
系统运维自 2022 年 4 月投入运营以来,Black Basta 对全球近 50 家组织发起了攻击。攻击者使用了“双重勒索”策略,如果受害者不交付赎金就会被公开数据。勒索团伙会不断改进攻击方式,最近研究人 ...
【系统运维】
阅读更多以65康佳电视怎么样?(探究65康佳电视的功能和性能,解析其用户评价)
系统运维随着科技的不断发展,电视作为家庭娱乐的重要组成部分,不断更新换代。65康佳电视作为一款备受瞩目的产品,备受消费者关注。本文将从65康佳电视的功能和性能入手,解析其用户评价。外观设计别具一格65康佳电视 ...
【系统运维】
阅读更多蓝影笔记本(高性能、出色品质、无限可能)
系统运维在如今数字化的时代,笔记本电脑成为了人们生活中不可或缺的工具之一。而蓝影笔记本以其出色的性能和品质,在市场上受到了广泛的认可和喜爱。本文将以蓝影笔记本为主题,从各个方面详细介绍它的优势和特点。一:性的 ...
【系统运维】
阅读更多
热门文章
最新文章
友情链接
- 多款热门 Chrome 扩展程序存在明文传输风险,用户隐私安全受威胁
- 数据中心在冷却、成本和二氧化碳减排方面均未达到目标
- API成为新一代安全焦点?瑞数信息发布最新《API安全趋势报告》
- 神舟战神笔记本电脑质量如何?(探索神舟战神笔记本电脑的品质与性能)
- 戴尔科技PowerScale在IDC行业追踪报告中年年保持销量冠军
- 戴尔笔记本F2刷机教程(戴尔笔记本F2刷机方法详解,助你发挥最大潜力)
- 戴尔易安信加固过的机箱,保证在远程和恶劣环境下工作的可靠性,满足边缘工作负载不断增长的需求
- 运维工程师来活了,Linux 又报了两个超级漏洞(附解决方案)
- 从零开始学会制作Excel表格(一步步教你制作Excel表格,轻松应对工作中的数据处理)
- 福布斯:如何确保客户的数据安全 亿华云云服务器网站建设源码库香港物理机b2b信息平台企业服务器