目录
一、XSSSSSSS简介
跨站脚本攻击(Cross Site Scripting) ,为不与层叠样式表(Cascading Style Sheets——CSS)混淆,故改为XSS;攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,导致管理员/用户访问时触发,达到攻击者的目的。
二、XSS分类
根据注入方式的不同将XSS分为:反射型XSS、存储型XSS、DOM型XSS
1、反射型XSS(非持久型)
- 攻击者散播带有XSS攻击脚本链接给客户(正常服务器存在注入点的连接,带有我们注入的内容)
- 用户点击恶意链接,访问了正常的服务器
- 服务器将XSS和页面信息返回客户端
- 客户端进行解析后向恶意服务器发起请求,从而获取用户信息
2、存储型(持久型)
- 在正常的服务器中注入XSS代码,且数据库将其储存
- 用户在登录的状态下,访问了其服务器,且浏览了存在恶意脚本的页面
- 服务器将页面信息和XSS脚本一同返回
- 客户端将页面信息和XSS脚本一同解析,届时代码会被执行,并向攻击者的恶意服务器发出请求
- 攻击者在自己的恶意服务器中拂去用户数据
3、DOM型(非持久型)
DOM 型的 XSS 注入与反射型原理类似,只不过 DOM 型的 XSS 注入不需要经过后端代码处理,而是在前端 JavaScript 调用 DOM 元素时可能产生的漏洞。产生DOM型XSS的代码:
document.referer 返回跳转或打开到当前页面的页面的URL
window.name 可设置或返回存放窗口的名称的一个字符串
location 可以设置窗口跳转或者返回当前窗口的地址
innerHTML 内嵌HTML代码
documen.write 页面内写入字符
4、总结
综上存储型的 XSS 危害最大。由于存储在服务器端的特性,不需要攻击者和被攻击者 有任何接触,只要被攻击者访问了页面就会遭受攻击。反观反射型和 DOM 型的 XSS 则需要攻击者去诱使用户点击其构造的恶意的URL,和用户有直接或者间接的接触
三、XSS注入
但凡能出现XSS的地方都有一个共同的特点,就是:存在用户输入,且未对用户输入进行过滤或检查机制不够完备,致使产生XSS注入。
标签注入:
<script>alert('123')</script>
DVWA(LOW):
(Medium):
不难看出在上传的时候,将标签<script></script>给过滤掉了
这里我们选择用大小写,当然也可以用双写等其他方法
<ScRipT>alert("123")</ScRipT>
查看源码发现添加了大小写的判断,并将我们的<script>标签过滤掉了
但是有一些Javascript事件后仍能执行Javascript代码,用其构造PayLoad
<img src=# onerror=alert("123")>
XSS危害:
1、邮件钓鱼
2、获取Cookie、Session等
3、访问未公开信息
4、Csrf(客户端请求伪造)、Ssrf(服务端请求伪造)攻击