xss跨站达到原理,危害和特点
他和语言没有太大关系,它大部分都是属于一个前端的漏洞,搭建一个简易的php网站存在xss跨站漏洞
访问这个网站,x=1,就输出1,
如果我们把x=<script>alert(1)</script> ,这是javascript代码,这个可以被浏览器识别和执行。
出现一个弹窗,弹窗的内容是1,而上传那一串是代码,浏览器会把那个代码执行,执行结果alert就是弹窗,1是控制弹窗的值,所以这里看到的就是弹窗一个效果,这就是一个简易的跨站漏洞。
原理就非常简单了就是一个可以控制一个变量,和可以输出出来的环境,就是代码或文件对数据进行显示或者调试出现的安全问题,我们在访问网站的时候会显示出来内容,如果这个内容收你控制的话,就可以让他显示其他内容,其他内容如果是javascript 所控制的,这个页面中给就会执行javascript的代码,javascript就是js代码,js代码是可以做一些常规的,比如用js去获取一些浏览器的信息,所访问网站的信息。
本质就是产生在前端,js代码上的漏洞,他这里执行的通常都是javascript代码,就是就是代码,js代码能干吗,他就能干嘛。一般常见的输出型函数会和他有关系,凡是输出的函数,他输出一个变量或者你能控制的值,这个地方就是产生跨站的漏洞的地方。危害就会收到javascript的代码语句影响,也就是说这个代码想实现什么攻击,通过js代码实现。浏览器内核版本也会决定这个漏洞的情况,刚刚火狐可以执行,
但是切换到ie浏览器就不可以了。
这就是跨站漏洞鸡肋的地方,跨漏洞有很多前提条件,最简单就是浏览器版本是否符合,会决定是否能执行,js代码是脚本,有一些浏览器本身有安全策略,会阻止一些js脚本执行,如果对方浏览器有检测的话,即使有漏洞也没办法执行。
他的原理就是一些输出类型函数,刚好有我们可以更改的变量,我们修改为js代码,如浏览器去执行一些命案操作。
xss跨站漏分类,反射(非储存)性,储存(持续)性,dom性
打开pikachu的靶场,演示一些反射性
在那个白框里面输出什么就会返回一个值,我们在白框里面输入js代码,就会被浏览器所识别和执行,
他这里有长度限制,打不了了,可以在
我输出地址发现,上面的网址会发生相应的变化,我们就可以把js代码输入到网址上来,
把这里的长度限制改成210,也可以。输入代码<script>alert(1)</script>,点执行,就显示出来了。
这种类型称之为反射性。
我们再看一些储存性
我们在里面属于1和2,就会出现在留言列表里面,<script>alert(1)</script>
输入这个代码执行,就会出现弹窗属于一的值,然后就会出现一种情况,刷新一下网址
两个的区别就是一个一直在攻击,一个没有,储存性我们为什么叫储存或者就是持续,就是这个攻击会一直下去,
造成持续的原因,因为他那个是留言板这个东西,我们在之后去访问可以看到之前的留言,我们把跨站语句写成留言,下一个访问的也会看到留言,也会执行,这种情况就称之为储存性,因为这个留言相当于写到了数据库里,攻击就一直持续到数据被删除结束。反射性是这里有漏洞,不去鼓噪就无法触发这个漏洞,会正常的访问,我们可以复制之前攻击的网址,在去访问也会直接攻击。两者的第一个区别就是攻击数据不会储存到对方的数据库里面去,储存性危害大一点,他会一直攻击。
dom性
打开测试靶场演示一下
查看一下网址有没有变化,
点一下出来的语句,是从dom树取出来的,查看网页源码,
带你那个有哪些费尽心思,就会触发onclick,然后domxxs,就回到上面来dom形式上上了,执行这个javascript代码。