记一次原生JS实现XSS攻击案例
栏目: JavaScript · 发布时间: 6年前
内容简介:为了加深自己对XSS攻击的理解,特意尝试了一下,并把整个过程记录下来。攻击过程:
XSS:跨站脚本(Cross-site scripting)
攻击手段和目的: 攻击者使被攻击者在浏览器中执行脚本后,如果需要收集来自被攻击者的数据(如cookie或其他敏感信息),可以自行架设一个网站,让被攻击者通过JavaScript等方式把收集好的数据作为参数提交,随后以数据库等形式记录在攻击者自己的服务器上。
为了加深自己对XSS攻击的理解,特意尝试了一下,并把整个过程记录下来。
攻击过程:
①、客户端收集用户数据(如留言、发布文章功能)
②、攻击者将留言内容写入了可执行的JavaScript代码
③、将上面的数据未经处理直接存入数据库
④、其他用户查看该网站,看了上面包含了可执行的JavaScript代码的文章和评论
⑤、其他用户就会在浏览器客户端执行攻击者注入的JavaScript代码
本次试验用到如下技术:
①、(客户端)原生Ajax请求
②、(服务端)thinkphp,为了试验方便,不使用数据库,直接返回数据
③、 Cors跨域
原生Ajax请求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>XSS测试</title>
</head>
<body>
<div id="Text"></div>
<input type="button" value="XSS测试" onclick="ajax();"/>
<script type="text/javascript">
function ajax() {
//先声明一个异步请求对象
let xmlHttpReg = null;
if (window.ActiveXObject) { //如果是IE
xmlHttpReg = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttpReg = new XMLHttpRequest(); //实例化一个xmlHttpReg
}
//如果实例化成功,就调用open()方法,就开始准备向服务器发送请求
if (xmlHttpReg !== null) {
xmlHttpReg.open("get", "http://vueapp.com", true);
xmlHttpReg.send(null);
xmlHttpReg.onreadystatechange = doResult; //设置回调函数
}
//设定函数doResult()
function doResult() {
if (xmlHttpReg.readyState == 4) {//4代表执行完成
if (xmlHttpReg.status == 200) {//200代表执行成功
document.getElementById("Text").innerHTML = xmlHttpReg.responseText;
}
}
}
}
</script>
</body>
</html>
在这里我使用的是get请求
其中请求地址 http://vueapp.com 是我自定义的地址,使用Apache配置
由于这里涉及到跨域问题(出于浏览器安全的同源策略,协议、域名、端口号任一不同都属于跨域)
Failed to load http://vueapp.com/ : No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
我的解决方法是CORS
在后端的接口中添加这么一行代码
header('Access-Control-Allow-Origin:*'); // 允许所有访问源
返回的数据是:
$this->ajaxReturn(array('status' => 0,'info' => "<img src='11.png' onerror='alert(11)'/>"));
这里我们利用img标签的onerrer属性来执行JS代码,所以src属性填一个访问不了就可以触发onerrer了
开始测试
点击 XSS测试 按钮,结果如图(谷歌浏览器):
这就是一个最最最简单的XSS攻击案例
这次我们去一个网站盗用cookie
可以看到所有的cookie信息都在这里了
*发现的问题
为什么我不直接用script标签,而用img的onerror属性。
因为script标签有问题,在后台返回来的script标签在dom是存在的,但是并没有执行
还请各位大佬多多指正
以上所述就是小编给大家介绍的《记一次原生JS实现XSS攻击案例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 零信任原生安全:超越云原生安全
- 畅谈云原生(下):云原生的飞轮理论
- 【云原生丨主题周】云原生为何物?为何重要?
- Micronaut 2.0.0 发布,原生云原生微服务框架
- 2018云原生技术实践峰会(CNBPS) 重新定义云原生
- 云原生生态周报 Vol. 8 | Gartner 发布云原生趋势
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
年入10万,17岁草根少年的网赚实战
陶秋丰 / 重庆出版集团 / 2009-3 / 28.00元
《年入10万:17岁草根少年的网赚实战》以一个17岁的在校大学生的真实故事为大家讲述草根少年的网络赚钱之旅。随着网络的普及以及网上应用的日益增多,要在网络上谋生并不难,比如网上写稿、网上兼职、威客赚钱、网上开店等,然而要利用互联网赚大钱,并成就一番事业,那么创建并运营一个独立的网站就是一个绝佳的选择。本书的作者正是经历了“网上写稿一网上各类兼职一策划并创建网站一网站推广与运营一年入10万”这一过程......一起来看看 《年入10万,17岁草根少年的网赚实战》 这本书的介绍吧!