接触xss和sql很久了,当初看了一遍原理,随便练一个dvwa就觉得自行了,实际上自己离熟练掌握还有很长的距离,这篇帖子会一直更,介绍完原理后会放些相关知识点,CTF题目或者是些实操(仅作学习用)-----
会一(要)直(收)更(藏)的(哦)
XSS介绍
XSS又叫CSS(Cross Site Scripting),中文名叫跨站脚本攻击,在Owasp top 漏洞排名中,常年位居前列。是一种在Web应用中常见的安全漏洞,它允许将恶意代码植入Web页面,当其他用户访问此页面时,植入的恶意代码就会在其他用户的客户端中执行。(说人话就是能攻击者能修改web网页的内容及功能,当受害者点击这个网页时,就能通过修改内容和功能达到攻击者的目的。
发动XSS工具一般要具备2个条件
- 攻击者能把恶意代码脚本植入Web页面
- 用户点击了该Web界面的链接。
XSS原理及类型
XSS攻击是在网页中嵌入客户端恶意脚本代码,这些恶意代码一般是使用JavaScript语言编写的。所以如果想要深入研究XSS,必须要精通JavaScript,JavaScript能做到什么效果,XSS的威力就有多大。(当然没学过不妨碍我们看下去)
反射型XSS
反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性。也是最容易出现的一种XSS漏洞。一般我们把XSS代码加在正常的url后,(等于说是修改了网页),把修改后的链接发给受害者,受害者点击后(满足了第二个条件),这样受害者就遭受到了攻击。
如下(简单的拿了个ctf的题目):
这里注意这个网址是能传参的,这就满足了我们可能存在插入的条件,
我们在name后加上一个<script>alert(1)</script>
http://challenge-6a3e2ced2b255022.sandbox.ctfhub.com:10800/?name=<script>alert(1)</script>
(本题是在CTFhub上的XSS题目上实验的,另外最好用火狐浏览器,qq浏览器和谷歌可能会过滤这种简单的XSS导致无法访问)
至此,我们就完成了一次最简单的XSS攻击,虽然仅仅是制造一个没用有什么用的弹窗,但还是回到我们之前说的一句话:
JavaScript能做到什么效果,XSS的威力就有多大
如果插入的这段代码是获取你的Cookie,那么攻击者获取到你的Cookie后,甚至就可以不需要密码登陆你的账号。更有甚者,利用xss还可以获取服务器的权限,这样都取决于攻击者的水平。
存储型XSS
存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。
存储型XSS可以出现的地方更多,在任何一个允许用户存储的Web应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当攻击者再次访问访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击,这就是存储型XSS。
存储型XSS与反射型XSS,和下面要介绍的DOM XSS 相比,具有更高的隐蔽性,危害性也更大。它们之间最大的区别在与反射型XSS与DOM型XSS执行都必须依靠用户手动去触发,而存储型XSS却不需要。
(说人话就是存储型能直接修改服务器中的web界面,导致所有人访问的都被攻击; 而反射性XSS不同,它只是在URL做了手脚,你不点别人发过来的链接啥事没有)
接下来正好有个例子,我自己搭建的论坛系统(XSS攻击高发区),存储型XSS
我以一个用户TOM1发了一个这样的贴子
发表完后是这样的
<script>alert(/hacker by hacker/)</script>
这断XSS代码被插入进去了,所以标题只是显示个 ) (其实可以换个震惊点的标题,吸引人点)
然后我用一个另外用户TOM1点入这个网站
遭到攻击。
如果这个论坛用户很多的话,一旦这个帖子上了热门的话,后果就非常严重,(当然不指的是我写的弹窗xss代码了,自己交的课设网站没Cooike。。。。。以后会逐步介绍更深入的攻击例子的)
所有点击这个页面的用户,都会遭到攻击!!!!!(攻击者肯定不会名目张胆的给你跳出弹窗,读是在你不知情的情况获取达到他的不法目的。)
DOM型XSS
DOM 的全称为Document Object Model,即文档对象模型,DOM通常用于代表在HTML,XHTML和XML中的对象。使用DOM可以允许程序和脚本动态地访问和更新文档地内容。
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一中漏洞。
(这里建议先自行了解一下文档对象模型 和 浏览器渲染,以后碰到这种会专门放出来细讲,实际上这种反射型漏洞一般不是主流,危害一般远没有存储型XSS大)
就不继续啰嗦web前端的知识了,想继续深入的自行查资料。
这里我们可以通过一个直观比较能更理解深刻DOMxss及之前两者一点。
- 反射xss (直接执行XSS代码)服务器解析我们修改后的URL,把我们添加的xss代码执行,代码未进入服务器
- 存储型xss (XSS代码插入到后端)xss代码插入到了服务器后端,所有访问正常的URL的用户都将受到攻击
- Dom型xss (XSS代码插入到前端再执行)xss代码同样未进入后端,服务器解析我们修改后的URL后,将其xss代码植入到用户当前的界面,只有当前用户会受到影响。
通过这样,我们就简单的了解了三种XSS的攻击过程,及其原理了。