xss 漏洞小结

XSS全称跨站脚本(Cross Site Scripting),为避免与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,所以缩写为XSS。

攻击者利用浏览器的动态展示数据功能,在HTML页面里嵌入恶意代码当用户浏览改页时,这些潜入在HTML中的恶意代码会被执行,用户浏览器被攻击者控制,从而达到攻击者的特殊目的,如 cookie窃取、盗取密码等。

XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:

通常被分为三类:反射型xss、存储型xss、dom型xss

其中存储型xss的危害是持续的

dom型、反射型:

此处我们以pikachu靶场为例子:

 输入恶意代码一次就进行执行一次。

dom型与反射型其实并没有太大差别,只是反射型的话参数是有流到后端的,但是dom型是直接使用页面中的JS代码进行回显。

下图为pikachu靶场的dom型xss漏洞网页源码,可以看到显示操作是由JS做的。

 

存储型

存储型和上述的两种类型其实是比较大的,他的payload是长期存在的,因此危害也比较大。

如某个网页的留言板

我们提交一串攻击代码

 接着每次浏览这个留言板都会执行一次上面JS代码

这不就是钓鱼的一种方法吗....

大概的原理

如下图的php代码

 这个代码接收用户发来的参数,然后直接输出。

那么客户端就可以构造恶意代码对其xss进行攻击。反射型xss还好,但是如果是存储型xss,因为他会长期存在,每个浏览到存在恶意代码攻击页面的人都会有危险。

练习: xss-labs其实更注重的是如何去绕过后端可能存在的过滤

xss-labs 1-7

level-1

发现页面可以显示url中name的值,所以可以直接将name后面的值改为payload

payload:<script>alert(1)</script>即可通关

level-2

发现页面中含有与输入相同的值,但是输入payload却不行,所以需要查看一下页面代码

发现输入的值传回后端程序并且被做了处理,变成了如下模样

但是可以通过闭合前面value的值,和input表单来执行JS代码

payload:"><script>alert(1)<script>

htmlspecialchars()函数对keyword参数的值进行了处理

level3

输入前两关的payload发现都不行,查看源码发现后端程序对两处输出参数都进行了处理

那么在这关就需要使用到input标签的一些出发事件的属性了

payload:?keyword='  οnfοcus=javascript:alert(111)_    

 

注意:最后还要有个空格(我用下划线代替)

如果没有空格alert无法执行

level4

第四关与第三关一样,只是闭合方式不一样,首先查看网页源码

payload:?keyword="  οnfοcus=javascript:alert(111)_    

把单引号改为双引号就好了

level-5:

在这个关卡使用前几个关卡的payload发现他将h2标签符号换成 了html实体

而且还对on和script这个,关键字进行了过滤处理:

但是却没有对input表单的value值中的符号进行过滤,

无法使用前面的关卡的payload了

那么此时可以使用a标签构造payload

payload:" >  <a href:javascript:alert(1)>xss</a>

点击一下连接

成功

level-6

这个关卡在level-5的基础上将href 这个关键字也进行了过滤

所以此时可以尝试使用大小写混用来进行绕过

payload:①" Onfocus=javascript:alert(1)

②" >  <a Href:javascript:alert(1)>xss</a>

当然之前一些被过滤的关键词的payload此时也可以都拿出来试试,大小写混用即可

level-7:

这关我打算一步一步试探

我在输入框里面输入了一个script关键词,然后查看源码

发现表单中的value是空的,所以大概可以判定这关可以使用双写绕过

但是尖括号还是会被过滤掉,所以不能使用script进行判断

只能使用出发事件或者链接了

使用onfocus属性发现on被过滤,所以payload是这个样的:

payload:" onοnfοcus=javascrscriptipt('xss')_

要注意后面的空格(我用下划线标出来)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值