内容简介:跳转XSS实际上并不是一种新类型的攻击方式,主要形成原因是 以前网站外部跳转时是直接接受参数然后跳转,导致了URL重定向漏洞.而现在网站喜欢加个跳转页,不会直接跳转,而是接受参数然后用js跳转. 这就有一个问题 如果未验证参数, js跳转时是可以接受JavaScript伪协议执行js代码的.以拉勾网为例,作者打开页面都会先看看js里有什么信息.很快发现js里有这段代码
XSS实战: 跳转XSS
跳转XSS实际上并不是一种新类型的攻击方式,
主要形成原因是 以前网站外部跳转时是直接接受参数然后跳转,导致了URL重定向漏洞.而现在网站喜欢加个跳转页,不会直接跳转,而是接受参数然后用js跳转. 这就有一个问题 如果未验证参数, js跳转时是可以接受JavaScript伪协议执行js代码的.
漏洞代码示例
<?php echo "<script>window.location.href = $_GET['url']</script>"; ?>
实战例子
以拉勾网为例,作者打开页面都会先看看js里有什么信息.很快发现js里有这段代码
显然只有有参数的才能引起兴趣.作者快速尝试了 https://sec.lagou.com/verify.html?e=test1&f=test2
发现url参数直接进入了页面,当然与本次主题有关的是参数 f
.虽然另一个更直接. 它在页面的位置是
function submit1(data){ var host = "test2"; $.ajax({ url: 'parseSession', type: "post", dataType: "json", data: { challenge: data.challenge, errcode:1 }, success: function (result) { window.location.href = host; } }) //$.getJSON('/user/sendCode.json', {t: new Date().getTime(), type: $('#contactSelect').val()}, function (data) }
尝试引入双引号.被转义了.所以这个参数就没问题了么?并不是.下面的代码使用了这个参数进行跳转.
可以使用 https://sec.lagou.com/verify.html?e=1&f=JavaScript:alert(1)
弹框.
首先拉勾网是没有src的,别想了. 另外现在这个问题似乎已经修复了?访问 https://sec.lagou.com/parseSession会302. .
e参数没修.e出现的代码为
$('#submit').click(function() { var code = document.getElementById('code').value; if (!code) { showError('请填写验证码'); return; } else{ console.log("111111") console.log(test1) $.ajax({ url: 'checkcode', type: "post", dataType: "json", data: { t: new Date().getTime(), code: code, errcode :test1; }, success:function (data) { console.log(data) if (data.state == 1) { goToUrl(getUrlParam("f")) } else { showError("验证码错误,请重新输入!") } } }) } });
双引号和单引号均被转义,有兴趣的读者可以作为对自己的挑战.还有过滤的waf
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 「Flask实战」鱼书项目实战一
- 「Flask实战」鱼书项目实战三
- 「Flask实战」鱼书项目实战四
- 「Flask实战」鱼书项目实战六
- RocketMQ实战系列从理论到实战
- 「Flask实战」flask鱼书项目实战二
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++ Primer Plus
Stephen Prata / 张海龙、袁国忠 / 人民邮电出版社 / 2012-6-19 / 99.00元
C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的。通过大量短小精悍的程序详细而全面地阐述了C++的基本概念和技术。全书分为18章和10个附录,分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类......一起来看看 《C++ Primer Plus》 这本书的介绍吧!