一、XSS漏洞概述
XSS全称跨站脚本,为不和层叠样式表的缩写混淆,故缩写为XSS,比较适合的方式应该叫跨站脚本攻击。
跨站脚本攻击是一种常见的web安全漏洞,它主要是指攻击者可以在页面中插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。
二、XSS漏洞原理
<?php
ini set("display_errors", 0);
$str = $_GET["name"];
echo"<h2 align=center>欢迎用户".$str."</h2>";
?>
本质:主要用户输入的内容填充在web页面中,改变了html代码的语义,从而可执行恶意js代码。
功能:代码功能主要获取name,然后讲name打印出来
正常用户:test
<h2 align=center>欢迎用户test</h2>
攻击者:
test<script>alert(1)</script>
<h2 align=center>欢迎用户test<script>alert(1)</script></h2>
1.XSS常见payload:
<script>alert(1)</script>
"><script>alert(1)</script><"
<img src=#onerror=alert(1)>
<svg onload=alert(1)>
<iframe/src="data:text/html;base64,PGJvZHkgb25sb2FkpWfsZXJ0KEDEppg=='>
事件触发:
- onerror
- onclick
- onmouseover
- onload
- oncut
执行的事件
- alert()
- confirm()
- prompt()
- console.log()
三、XSS漏洞类型
- 反射型
- 存储型
- DOM型
- 其他类型
- MXSS突变型XSS UXSS通用型XSS Flash XSS UTF-7 XSS MHTML XSS CSS XSS VBScript XSS
- 其中UTF-7、MHTML XSS、CSS XSS、VBScript XSS 只在低版本IE中可以生效
1.XSS漏洞类型-反射型XSS
说明:用户提交的数据经过服务器,不经过数据库直接将数据返回到前端页面。
<?php
ini set("display_errors", 0);
$str = $_GET["name"];
echo"<h2 align=center>欢迎用户".$str."</h2>";
?>
在文本框中输入:test<script>alert(1)</script>
2.XSS漏洞类型-存储型XSS
说明:存储型XSS也叫持久型XSS,存储的意思就是Playload是有经过存储的,当一个页面存在存储型XSS的时候,XSS注入成功后,那么每次访问该页面都将触发XSS,如留言板、文章编辑等功能
- 留言内容存储到数据库
- 用户查看时从数据库中提取
- 内容展示在页面
3.XSS漏洞类型-DOM型XSS
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。从效果来说,也是反射型。
反射型或存储型就是服务端将提交的内容反馈到了HTML源码内,导致触发XSS。也就是说返回到HTML源码中可以看到触发XSS的代码
DOM型XSS只与客户端上的JS交互,也就是说提交的恶意代码,被放到JS中执行,然后显示出来。
4.XSS漏洞利用-Cookie盗取
这里使用的是清华网安战队蓝莲花自开发的一个软件,可以直接拿写好的Javascript语言生成playload直接进行XSS攻击,从而获取网站的Cookie
5.XSS漏洞利用-BEEF
Beef(The Browser Exploitation Framework Project)是WEB框架攻击平台。Beef利用简单的XSS漏洞,通过一段编写好的Javascript(hook.js)控制,目标主机的浏览器,通过目标主机浏览器获得该主机的详细信息,并进一步扫描内网,配合metasploit绝对是内网渗透一大杀器