“本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。”
问题
———————
网络世界中充满了看不见的危险,而在所有的网络安全问题中,有一种隐蔽而常见的漏洞,它在你毫无察觉的情况下,可能会将你导入一个充满陷阱的恶意网站。这种漏洞,就是被称为URL跳转漏洞。它像一个隐身的导游,有可能在你毫不知情的情况下,把你领向一条误入歧途的道路。
关键点
———————
在本次的文章中,我们书接公众号上面几篇的文章,继续本次的渗透,本次我们讲述的方向为URL跳转漏洞
0x1 为什么存在(功能点)漏洞?
URL跳转漏洞的存在主要是因为一些应用程序没有对用户跳转的URL进行严格的验证和控制。当一个应用程序接受一个请求并将用户重定向到请求中提供的URL时,如果应用程序没有对这个URL进行适当的验证,就可能造成URL跳转漏洞。
这种漏洞经常出现在一些使用重定向功能的场景中,例如:登录页面、支付页面,以及一些需要重定向到其他页面的交互过程中。如果开发人员没有对跳转的URL进行适当的处理和验证,攻击者就有可能将用户重定向到恶意网站,从而利用用户的信任进行钓鱼攻击,或者利用跳转功能实施其他类型的网络攻击。
在实际生活中,往往产业规模越庞大的企业,越是重视这类漏洞,我们往往可以在大企业src平台的安全报告处置规则中看到相关规定
字节src安全报告处置规则:
https://q2a1fk6o03.feishu.cn/docx/XniodxZuOo2jhwx4oeKcatrSnQh
阿里src安全报告处置规则:
https://security.alibaba.com/announcement/announcement?spm=0.0.0.0.AHiv0y&id=219
0x2 通用检测方法(模板)
思路总结
在工具准备好之后,我们对于漏洞测试的整体思路简单粗暴,如果这处功能能将用户重定向到恶意网站,那么他就是url跳转漏洞
绕过方法
既然我们之前说这个漏洞是因为开发人员没有对跳转的URL进行适当的处理和验证,攻击者就有可能将用户重定向到恶意网站,那么当有安全限制时,我们也可以进行一定程度的绕过。
1.使用特定子域名绕过
(payload:www.baidu.com.evil.com)
2.使用@绕过
(payload:http://[email protected]/)
3.参数形式绕过
(payload:?next=baidu.com&next=evil.com)
4.绕过对于.的检测
(payload:/?redir=evil%E3%80%82com)
案例结合
——————————————
0x1 案例
我们修改reqUrl参数跳转的地址,将其修改至百度地址,发现一样能够跳转成功
0x2 绕过案例
我们拦截数据包,发现loginUrl为控制跳转地址的参数,而reqUrl为其跳转后的参数
于是我们仿照上面案例的方法修改loginUrl参数控制跳转地址到dnslog,但是发现响应码为200,并没有跳转
于是我们对跳转地址进行绕过,绕过对于白名单和.符号的限制加上%E3%80%82%40+原网站地址,将地址修改为:
https://sevtex.dnslog.cn%E3%80%82%40xxx.xxx.com
我们查看dnslog平台,发现已经跳转成功,生成了跳转记录
0x3 Last
漏洞修复建议(以下建议并不代表完整的安全措施,您还可以根据具体情况采取其他安全措施来提高系统的安全性):
-
验证URL:在重定向之前,验证并确保提供的URL是预期的、安全的,并且属于应用程序的域。避免接受并使用用户提供的URL,特别是那些没有进行过验证的URL。
-
使用白名单:将合法的跳转目标添加到白名单中,并在跳转前进行检查。如果跳转的URL不在白名单中,那么应阻止跳转。
-
避免使用用户的输入:如果可能的话,尽量避免使用用户的输入来构造URL。例如,可以使用应用程序内部的ID代替完整的URL,或者使用预设的路径和页面代替用户提供的URL。
-
使用相对路径:尽可能使用相对路径而不是绝对路径,这样可以减少被重定向到外部站点的可能性。
-
加密或签名URL:使用安全的方法对URL进行加密或签名,以防止被篡改。
欢迎关注公众号“呼啦啦安全”,原创技术文章第一时间推送。
原文始发于微信公众号(呼啦啦安全):护卫你的第一道防线:登录界面渗透测试(七)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论