WEB攻防-XSS跨站注入(一)
XSS跨站漏洞,这个漏洞的原理就是通过可控制的某些函数,植入payload然后用户通过访问到这个被攻击的地方触发了漏洞,然后就执行了一次攻击,听起来好像就没啥,这个漏洞确实也没啥,因为他大部分都是在前端触发的,并不是主动漏洞,但是还是有点危害的哈,还是可以有很多攻击方式的,这就来看看
首先就是最基础的反射型
<?php $cece=$_GET['cece'] ?? ''; //反射型XSS echo "<h2>反射型XSS</h2>" . "<br>"; echo $cece . "<hr>"; ?>
当你在参数里输入一个值,他能直接返回到前端页面上直接执行,这就是反射型,所以说这里如果是一个js代码的话,那不也就直接执行了吗
可以看到他就直接执行了,查看源代码就是这个样子,我们还可以利用这个远程访问一下网站
直接也是小伙立正了,这种攻击是非持续性的,不使用的话就不会触发,这个攻击是我们构造的,必须要有一个受害人哈
但是还有一个持续性的也就是存储型的XSS,比如果留言板,当你写入一个攻击语句被网站保存了,那么只要没被删除他就会每次访问都会被触发
可以看到我在url中没有任何提交,但是他还是触发了,这就是存储型的XSS,也就是持续性攻击,只要存在就会一直触发。而这个存储型漏洞就危险一点,至于反射型的还是太鸡肋了
看起来这个XSS好像很鸡肋哈,不过还是要学滴,基本上这个漏洞会出现在那些交互性比较强的网站里,这种xss漏洞的话就会影响到他的正常业务,所以说有的src平台还是会收这个漏洞的哈,而且不止网站,很多app也会有这个漏洞哈,只需要发送然后坐等收鱼哈
然后还有一个就是dom型的xss,这个前面我们在js开发里也说过,通过构造语句修改前端的代码,然后就会触发这个漏洞
<a href=''>'><img src=''onerror='alert(1)'/>'>what do you see?</a>
首先正常的访问是这样的,然后通过上面的payload首先闭合前面的这个语句然后用报错来触发js代码
可以看到代码就被执行了,并且在源代码中可以看到触发代码后被修改之后的样子,他和前面最大的区别是他获取的是页面标签里的值,而不是我们手动输入的paylod,我们前面这个js代码只是修改了这个id为dom的标签值,把值写到这个标签里触发的,这样听着可能有点绕,反正会用就行,不用太过于理解,具体去看dom原理
而这个xss注入是要根据对应的代码来执行的,比如说前面的反射型,首先是直接输出了这个js语句,要是他换一种方式来执行呢
echo "<img src= '$cece'>";
比如说现在我要让他显示图片
如果这时候你还直接输入一个js语句,会怎么样呢
你会发现你所有的输入都变成一个字符串了,不知道啊,我还以为是图片路径呢,你跟浏览器说去吧(不是)
所以说,这个时候我们是需要闭合掉这个前面的标签,然后通过图片报错来进行xss注入
通过引号闭合掉前面的标签后由于图片没有正常显示,然后就通过oneroor参数触发报错,然后就触发了xss漏洞
这里我们来看看别的某网站案例哈
Http User-Agent Checker - 打开管理工具
这是一个查看你ua信息的一个网站
然后上面有一个ua头编辑,这个就很好理解了,有输入,有输出,典型的反射型xss漏洞哈,所以说直接注入看看
然后就成功了,所以说,反射型的xss是很简单就可以利用,但是也是非常鸡肋的漏洞,基本上就算有,也懒的修复了,如果不能执行,那么就直接检查看是否被包含或者过滤了,没啥好说的
而存储型由于没找到什么好例子,所以说还是直接理解我上面做的实验吧,反正意思就这样,把语句存进网站,然后每次访问都会触发
然后看一下dom型注入
这里有一个跳转的网站,然后通过右边返回的源代码可以看到他是接受url值的,要是这时候我们注入一个攻击语句会发生什么呢
你会发现他直接执行了,但是说实话也没啥作用,虽然说可以用这种去钓鱼一下偷偷盗取一下cookie啥的,虽然好像也没演示一个啥,dom类型还是要具体了解一下dom树的原理才好理解这个漏洞,那么这期到这里也差不多了,基础的xss已经知道原理了哈,知道他的原理和触发条件了哈
(感觉这期有点水哈)
最后再总结一下这个xss容易出现的地方
首先就是交互:
比如说网站的评论区,文本编辑区,标签啊之类的,差不多有个输入框你都可以试试
然后就是输出的地方了
这种东西就太多了,通过你上面交互提交的信息,评论区,或者什么留言板,只要能显示你输入的地方,都有可能会产生这个xss注入
未完待续~~~·