1、定义
url跳转是指的攻击者可以构造payload,使受害者用户在访问目标网站的时候,跳转到攻击者控制的站点,从而进行钓鱼活动。
2、发生场景
(1)攻击者提前将payload保存到服务端的数据库,或者上传包含某跳转的页面,或者篡改已知页面包含跳转。
这些情况有可能,但是一般意义不大。
(2)请求的url直接参数包含待跳转的url参数,响应后直接跳转。(利用的是用户对目标域名的信任,所以必须是url直接参数,而排除体部包含参数)
- 3xx,location字段包含跳转url
- 响应页面基于js自动跳转,比如location.href=
- 非自动跳转,比如form的action,a的href被设置为跳转url,需要交互才跳转
(3)待跳转的url参数在地址栏hash等处,等待响应页面的js脚本读取后跳转
3、利用过程
测试发现url跳转漏洞,利用社交使受害者用户访问包含payload的url,受害者用户点击后跳转到攻击者控制的站点,进行钓鱼
4、测试步骤
(1)发现
- 请求url中包含的参数值为url数据,一般参数名为return、return_url、back、url、back_url等
- 响应状态码为3xx,响应包含location字段
- 响应体部中包含location等可以发生跳转的js代码
(2)对url参数进行测试,篡改域名为目标站外的域名,假设目标站点为www.abc.com
- 直接篡改为非关联域名,比如www.xxx.com
- 域名中包含目标域名作为子域名部分,www.abc.com.xxx.com,www.abcxxx.com、www.xxxabc.com
- 篡改目标域名的一级域名,www.abc.top
- 在用户名中,或者参数中包含目标域名,[email protected]/?url=http://www.xxx.com
5、防护
对重定向和跳转参数,服务端进行严格的检查,一般将url进行拆分,对域名部分进行白名单匹配,或者至少严格检查一二级域名
6、补充
和url跳转类似的,如果响应中form的action地址,script的src,iframe的src,以及ajax的地址可以被攻击者控制,
那么可能会发生用户将自身的数据提交到攻击者所控制的站点,与一般url转到的钓鱼有所区别。
但测试流程和防护是一样的。
标签:www,url,漏洞,域名,跳转,攻击者,com From: https://www.cnblogs.com/wd404/p/17322709.html