XSS的学习笔记

xss的原理

        跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

xss的分类

反射性xss

        反射型XSS 是非持久性、参数型的跨站脚本。反射型XSS JS 代码在Web 应用的参数(变量)中,如搜索框的反射型XSS。在搜索框中,提交PoC[scriptalert(/xss/)/script],点击搜索,即可触发反射型XSS。注意到,我们提交的poc 会出现在search.php 页面的keywords 参数中。

例题1

很明显输入的值被传到h标签里了

例题2

input表单的value得到值提交给h标签

可以看到<>在input中是正常的,到h标签中就被转义了,所以我们只能从input中想办法

写">闭合input,再写恶意代码,就OK了

例题3

 aaa传值给了submit

发现input也转义<>,

例题4

将<>直接转换成空格

还可以用on事件,

例题5

不可以用on事件

看源代码,确实过滤了,但是input却没有转义<>

构建一个a标签

例题6

替换了href

 

用大写的HREF就绕过了

用属性大写onfocus也是可以绕过的

例题7

替换很多变成空格

通过过滤关键字中间插入关键字的方式成功绕过

例题8

限制条件更加多,将"也过滤了

input value的值传给a标签,所以只要进行html实体编码就可以绕过input的限制,传给a标签的href属性,href在解析前html实体编码刚好解码

将javascript:alert(1)进行html实体编码

例题9

在8的基础上加上必须有http://的字段,所以在最末尾加上//http://就OK了

例题10

给了个值keyword,但是用函数过滤了<>,所以找input,只有t_sort有接受值,但是它hidden,所以我写了type覆盖了后面的。

 

存储型xss

        存储型XSS 是持久性跨站脚本。持久性体现在XSS 代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS 通常发生在留言板等地方。我们在留言板位置留言,将恶意代码写进数据库中。此时,我们只完成了第一步,将恶意代码写入数据库。因为XSS 使用的JS 代码,JS 代码的运行环境是浏览器,所以需要浏览器从服务器载入恶意的XSS 代码,才能真正触发XSS。此时,需要我们模拟网站后台管理员的身份,查看留言。

例题1

首先,该提交能入库

尝试在评论区评论

发现实体编码转义,标签变成普通字符

输入两次评论后发现,

这里我们可以看到并没有完成闭合,但是评论回显是倒序出现的,同时中间夹着我们本机的IP地址,这个IP我们是否可以进行利用,从而配合我们的评论完成XSS注入。其实是可以的,这里我们需要用到X-FORWARDED-FOR来进行HTTP请求端真实IP伪造,通过这个字段将IP地址进行伪造为我们使用的payload。 思路确定了,我们使用多次注入的方式,同测试一样完成我们的闭合,即:

正常payload:

<script>alert(11111)</script>

达成的效果(将中间的代码注释掉):

<script>/**/alert(11111)/**/</script>

多次注入:
<script>/*
    */alert(11111)/*
        */</script>

将payload多次拆分,使用两条留言完成注入:

第一次:
内容:*/alert(11111)
IP伪造为:X-FORWARDED-FOR: */</script>
第二次:
内容:随意都行
IP伪造为:X-FORWARDED-FOR: <script>/*

然后使用Burp进行抓包改包(伪造IP):

第一次

第二次

闭环形成,就等管理员审核

用xss hunter获取信息

http://172.16.100.1:3000/hook.js换成hunter提供的网址

DOM型XSS

DOM XSS 比较特殊。owasp 关于DOM 型号XSS 的定义是基于DOM XSS 是一种XSS 攻击,其中攻击
payload由于修改受害者浏览器页面的DOM 树而执行的。其特殊的地方就是payload 在浏览器本地修
DOM 树而执行, 并不会传到服务器上,这也就使得DOM XSS 比较难以检测。

例题1

查看源代码,发现js源代码
点进去
发现可以利用dom破坏的点
可以利用二层集合的关系覆盖window.defaultAvatar的原始数据
当再次输入新的没有头像的评论时就开始触发我们的xss
第二次随意评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值