跨站脚本漏洞(一)
简介
攻击者可以将恶意代码植入到web页面,其他用户浏览web页面时会受到攻击。
危害:盗取用户客户端的信息,cookie信息,会话信息,通过XSS蠕虫进行信息传播,在客户端植入木马,结合其他漏洞攻击服务器,在服务器中植入木马
分类
1.反射型XSS
恶意代码不会存储到服务器端,一般容易出现在搜索页面,需要构造植入恶意代码的web页面或者恶意连接,诱骗受害者进行点击,才能触发
2.存储型XSS
恶意代码存储在服务器,可以进行持久广泛的攻击,一般出现在留言板吗,个人信息,文章发表,评论区,或者注册页面,每个访问到这种页面的用户都会受到攻击
3.DOM型XSS
基于DOM的一种XSS漏洞
反射型XSS--pikachu练习
反射性XSS又叫非持久型XSS
典型攻击方式:攻击者通过电子邮件将包含xss的恶意链接发送给受害者。受害者访问连接,服务器接收受害者请求,然后将有xss的数据发送给目标用户,浏览器解析这段代码,触发攻击
1.找到输入点,查询接口,留言板;输入 特殊字符+唯一识别字符,提交,看返回页面
2.查看页面,搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造
3.修改攻击语句,提交脚本代码
剔除长度限制
输入<script>alert('xss'></script>
URL:http://192.168.31.34/pikachu-master/vul/xss/xss_reflected_get.php?message=<script>alert('xss')<%2Fscript>&submit=submi
这里只是对xss的验证,攻击者可以通过更为复杂的JS语句实现更多的功能,实现页面跳转,盗取信息等功能,对URL进行编码,起到迷惑作用,所以大家不要点击来路不明的连接
存储型XSS
之前测试过,所以一打开页面就出现了弹窗
提交,这个弹窗会一个个弹出,可能是机器的原因,是真的慢
DOM型XSS
.dom型xss实际是一种特殊的反射型XSS。
.HTML所有标签都是节点,他们构成节点树,他们可以被修改,创建,删除
.浏览器会为页面创建文档对象,每一个元素对应一个文档对象
.用JS可以对文档对象进行编辑,修改页面
.修改在客户端进行,不再与服务器进行交互
攻击方式:用户请求一个专门设计的URL,它由攻击者提交,其中包含XSS代码,服务器端的响应不会以任何形式包含攻击者的脚本,当用户浏览器处理时,dom就会处理XSS,导致XSS漏洞
检查页面,发现我们创建了一个图片img
点击提交按钮的前后URL相同,可以看出,处理发生在客户端
http://192.168.31.34/pikachu-master/vul/xss/xss_dom.php
http://192.168.31.34/pikachu-master/vul/xss/xss_dom.php
这段就是本地的处理函数
DOMXSS-X
function domxss(){
var str = window.location.search;
var txss = decodeURIComponent(str.split("text=")[1]);
var xss = txss.replace(/\+/g,' ');
// alert(xss);
document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
}
//试试:'><img src="#" onmouseover="alert('xss')">
//试试:' onclick="alert('xss')">,闭合掉就行
这里也有个JS代码,它定义了一个domxss函数。它利用 window.location.search 获取浏览器中url的内容,然后赋值给 str,经过URL解码和字符串分隔,取出URL中的参数内容,再把 “+” 替换为 “ ”(空格),赋值给 xss,最后把 xss 拼接到 a 标签中,然后写到 Id 为 dom 的 div 标签中。
跟前面的DOM不同的是,它的输入是从浏览器的URL中获取的,很像反射型XSS(get),构造的Payload跟刚才是一样的
XSS盲打后台
登录后台