网站首页 > 基础教程 正文
什么是URL重定向?
我们点击一个网页内的外链时, 网页访问另一个网站
如上图, 这是一个简书网站, 跳转到另一个网站的URL重定向
URL漏洞呢?
进一步利用, 如果我们把上图简书访问的URL改为一个恶意网站, 那么就可以实现一次类似于反射型xss的攻击
举几个应用的例子,
- 把url改为和某大网站一模一样的钓鱼网站, 用户输入账号密码后就会被盗号
- 把URL改为一个内嵌csrf的攻击脚本, 就可以实现csrf攻击
感觉本质就是, 伪装恶意链接, 让目标用户访问
在哪里可以发现它?
黑盒测试
- 用户登录、统一身份认证处,认证完后会跳转
这是我学校的一个登陆网站, 其中service=url, 就有可能存在URL重定向漏洞
- 用户分享、收藏内容过后,会跳转
- 跨站点认证、授权后,会跳转
- 站内点击其它网址链接时,会跳转
白盒测试
这里就举一个php的例子, 其他的语言小伙伴们可以自己百度
常见的参数
这个黑盒白盒都可以用于快速定位, 发现可能的漏洞 redirect redirect_to redirect_url url jump jump_to target to link linkto domain
激动人心的攻防战
攻1:直接利用
下方虚构一个链接来举例子: http://Baidu.com?url=http://hack.com hack.com就是攻击性网站, Baidu代表正常网址 肉鸡点这个网站后, 自以为点的是baidu的站点, 结果跳转的黑客的网站
防1:协议一致性
作用不大, 如果baidu用https协议, hack.com也要用https协议
防2: 域名字符串检测
就是检测 url= 后面的链接, 是否是自己的网站, 比如:
- <?php
- $redirect_url = $_GET['url'];
- if(strstr($redirect_url,"www.baidu.com") !== false){
- header("Location: " . $redirect_url);}
- else{
- die("Forbidden");}
- ?>
上方代码可以实现, 如果你给的链接里面没有www.baidu.com 这个字符串, 那么就禁止访问
攻2
修改链接为: http://baidu.com?url=www.baidu.com.hack.com 相当于组合域名
防3: 检测跳转URL末尾是否匹配
原理同防2, 改为检测末尾的域名
攻3:
有2个方法绕 防3
- 把域名改为: http://baidu.com?url=hack.com/baidu.com 就是把白名单域名当做目录位置放到链接里面
- 直接买一个奇怪的域名: www.hack-baidu.com, 要是能买到类似的, 也是醉了….
攻&防4: 无限各种奇葩的正则匹配, 就是不让你加入恶意域名
二次跳板法, 先看代码 http://baidu.com?url=http://baidu.com?url=hack.com 这个先跳转到白名单网站, 再在后面加入一个恶意网站, 也之骚也~~
奇怪的绕过
还有很多奇怪的东西, 直接搬运过来的, 大家欣赏一下吧~
还有其他的绕过思路, 搬到下面了
以上就是URL重定向漏洞的全部内容了,关注我,不迷路~
“黑掌”,一个每天都可以了解到黑客新闻,和掌握更多渗透教学的地方。
- 上一篇: WordPress修改固定链接后301的重定向方法
- 下一篇: PHP8的跳转语句-PHP8知识详解
猜你喜欢
- 2024-11-27 php安全编程?python暴力破解,论python的牛逼性
- 2024-11-27 CVE-2024-4577 PHP CGI 远程代码执行漏洞分析
- 2024-11-27 使用VS Code调试PhpStudy环境里的代码
- 2024-11-27 Web安全之URL跳转漏洞
- 2024-11-27 01.linux上安装宝塔部署PHP项目
- 2024-11-27 教程 | 从零开始开发一个PHP留言板(三)——页面制作
- 2024-11-27 WordPress网站被利用xmlrpc.php攻击解决办法
- 2024-11-27 Nginx 反向代理学习及实例笔记
- 2024-11-27 phpMyAdmin使用教程(图文详解)
- 2024-11-27 CentOS8 安装数据库管理工具之phpMyAdmin5.1.1
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)