pikachu(皮卡丘)--Cross-Site Scripting

目录

XSS(跨站脚本攻击漏洞)概述

​编辑

一.反射型xss

1.1 反射型xss(get)

1.2 反射性xss(post)

总结

二. 存储型xss

三. DOM型xss

​编辑

四. xss之盲打

四. xss之过滤

五. xss之htmlspecialchars

六. xss之href输出

七. xss之js输出


XSS(跨站脚本攻击漏洞)概述

一.反射型xss

反射型XSS将用户输入的内容作为代码让浏览器执行达到攻击目的,一般需要让用户访问攻击者构造的URL。这种类型的攻击只发生在客户端上,并且需要从带有恶意脚本参数的特定URL进入,所以也称为非持久型XSS。

交互的数据一般不会被存在在数据库里面,一次性,所见即所得,一般出现在查询类页面等。

1.1 反射型xss(get)

构造payload:

<script>alert(111)</script>

发现对长度进行了限制

修改源代码将原本的20修改为2000

输入构造好的payload,成功

因为是反射性,一次性的,刷新页面之后弹窗消失。这个xss实际上是以get的方式提交的。

1.2 反射性xss(post)

登录一下admin 123456

同样操作构造payload:<script>alert(111)</script>

总结

1.GET和POST典型区别:GET是以url方式提交数据;POST是以表单方式在请求体里面提交。通过get提交的数据是可以直接在url中看到的,所以GET方式的XSS漏洞更加容易被利用

2.(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post发送的数据更大(get有url长度限制)

(3)post能发送更多的数据类型(get只能发送ASCII字符)

(4)post比get慢

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作

3.反射型xss,这种攻击的特点是非持久化。

二. 存储型xss

存储型XSS漏洞跟反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害,因此存储型XSS也称“永久型”XSS。

先随便输一点发现留言被存储,输入特殊字符也能被直接输出

所以直接构造payload:<script>alert(111)</script>,出现弹窗

道理与反射性差不多,唯一区别就是永久和一次性。

三. DOM型xss

什么是DOM?
简单来说DOM文档就是一份XML文档,当有了DOM标准之后,DOM便将前端html代码化为一个树状结构,方便程序和脚本能够轻松的动态访问和更新这个树状结构的内容、结构以及样式,且不需要经过服务端,所以DOM型xss在js前端自己就可以完成数据的输入输出,不与服务器产生交互,这样来说DOM型xss也可以理解为反射性xss。

下面看一个DOM将html转换为树状结构体,深入的理解DOM结构标准:

图片来源关于DOM型XSS的深入解析(收藏)_告白热的博客-CSDN博客

通过JavaScript,可以重构整个HTML文档。可以添加、移除、改变或重排页面上的项目。
要改变页面的某个东西,JavaScript 就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元索进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的( DOM) 。
所以,你可以把DOM理解为一个一个访问HTML的标准编程接口。

显示结果是what do you see?,看起来应该是A标签,打开页面源代码

观察代码可以发现输入的字符串被拼接到了a标签当中。其中输入就是input也就是输入框,蓝框框选的就是我们的输入。

<a href='"+str+"'>what do you see?</a>

把这条语句拿出来分析,利用输入构造一个闭合

还是输入一个弹窗,在input输入  ' οnclick="alert('111')">
构成a标签闭合,且嵌入一个弹窗。<a href=' οnclick="alert('xss')"> '>what do you see?</a>

DOM型xss-x

和上面操作一样,出现弹窗

四. xss之盲打

“xss盲打”是指在攻击者对数据提交后展现的后台未知的情况下,网站采用了攻击者插入了带真实攻击功能的xss攻击代码(通常是使用script标签引入远程的js)的数据。当未知后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的“真实攻击功能”。
也就是只有从后台才能看到前端输入的内容,从前端无法判断是否存在xss

以上内容摘自xss之盲打、过滤、htmlspecialchars、herf输出、js输出_xss之htmlspecialchars_要努力。。的博客-CSDN博客

xss盲打指的是一种攻击场景

打开xss之盲打,随便输入看看是什么效果

输入的内容并不会在前端输出,看起来应该是存到了后台,也就是说可能只有管理员可以看。输入<script>alert('xni')</script>,设置一个弹窗,看看管理员在后台登陆上,是否会被x到。如果被x到这种场景就叫做盲打。
输入之后提交,点击提示,模拟后台管理员,登录后台进行查看(右上角有登录地址)

登录网址

输入用户密码后点击登录

触发了xss

四. xss之过滤

可以通过大小写混合绕过

<SCRIpt>alert(111)</SCRIpt>

也可以通过img标签绕过

img是html标签,用于展示图片的,src属性指定图片及其位置,onerror是事件,当图片加载不出来、加载出问题时触发onerror事件,显示onerror指定的图片,将onerror的值设为alert注入,如果网站没有进行过滤时,会运行这个代码弹窗

<img src=x onerror="alert('img标签')" />

五. xss之htmlspecialchars

htmlspecialchars()函数把预定义的字符转换为HTML实体

&(和号)成为&amp
"(双引号)成为&quot
'(单引号)成为&#039
<(小于)成为&lt
‘>’(大于)成为&gt

现在输入框输入一些特殊字符 

查看源码,发现没有对单引号进行过滤

可以输入' οnclick='alert(111)',第一个单引号是对前面进行闭合

六. xss之href输出

href这里有一个输出漏洞:输出在a标签的href属性里面,可以使用javascript协议来执行js,在输入时候只允许是http,https协议,只有这两种协议才可以进行输出,如果不是的话就不允许输入。之后再进行htmlspecialchars函数过滤。

先来看看后端的代码

查看源码发现,虽然对htmlspecialchars()函数做了额外的处理,但是,它把输出放在了a标签的href属性里

输入payload,点击”阁下自己输入的url还请自己点一下吧“,然后发现出现弹窗

javascript:alert(111)

七. xss之js输出

先随便输入

查看源码,发现输入点是ms

输入'</script><script>alert('xss')</script>,先将前面的script闭合再插入我们自己的语句,出现弹窗

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值