首页 > 其他分享 >DVWA靶场之XSS通关详解

DVWA靶场之XSS通关详解

时间:2023-06-23 10:57:10浏览次数:31  
标签:XSS name 代码 用户 DVWA 源码 靶场 输入

原理

XSS漏洞是攻击者将恶意代码注入到合法网页中,当用户浏览该页面时,恶意代码会被执行,从而获取用户敏感信息或进行其他攻击。

形成原因

网站对用户输入数据的过滤不严格或不完备,攻击者可以根据这个漏洞向网站提交恶意代码,然后再将这些代码传播给其他用户,从而造成危害。

防御措施

  • 输入过滤:在网站接收用户输入数据之前,需要对输入数据进行过滤。例如,可以使用编码标记来过滤HTML、JavaScript和CSS等标记语言。
  • 输出编码:对于显示在页面上的输入内容,需要进行输出编码,以避免JavaScript脚本的注入攻击。例如,可以使用Escape函数或EncodeURIComponent函数来对特殊字符进行编码。
  • cookie安全:通过对Cookie的设置来限制客户端对Cookie的读取和修改。例如,使用HttpOnly标志可以禁止脚本访问Cookie,从而有效降低攻击的风险。
  • 安全编程:开发人员应该牢记安全编程的原则,例如使用白名单验证策略、禁止直接操作DOM等规则,以避免开发过程中出现安全漏洞。

突破方式

  • 利用漏洞:攻击者使用已知的或未公开的漏洞来突破网站的XSS防御措施,从而成功注入恶意脚本。
  • 钓鱼式攻击(Phishing):攻击者通过伪造合法的邮件、网站、电话等方式引诱用户主动点击链接进入钓鱼网站,并注入恶意脚本,从而突破XSS防御系统。
  • 反射型XSS攻击:攻击者向目标网站提交恶意脚本,然后将脚本放在URL中传递给受害用户,当用户访问这个URL时,恶意脚本就会被执行,攻击成功。
  • 存储型XSS攻击:攻击者将恶意脚本存储到目标网站的数据库中,在用户访问受影响的页面时,恶意脚本会从服务器端传递给用户并在用户浏览器上执行。—辗转相除法。(本质上Base64编码是64进制,Base58编码是58进制)

Reflected型-XSS

  • 【Low】级别

查看源码,发现没有任何过滤,就是直接把用户输入的内容反射给浏览器。

这里直接在输入框里面输入代码:<script>alert("GXY")</script>。

  • 【Medium】级别

查看源码如下图所示,下图方框中的代码作用是替换name中的出现的<script>,那就可以通过改变<script>的大小写来绕过。

   

 源码是通过referrer这个字段的参数进行判断的,通常情况下在增加referrer验证时就是网站本省当前页面的ip地址,这里需要抓包看看相关信息。

 这里在输入框里面可以输入代码:<SCRIPT>alert("GXY")</script>(这里的可以将<script>里面的任意字母改为大写即可),此处也可以通过双写(即写两个嵌套的script)来绕过,即在输入框里面输入代码:<s<script>cript> alert("GXY")</script>。

  • 【High】级别

查看源码如下图所以,这里i是正则表达式,表示in-casesensitive,即大小写不敏感。然后代码里面的(.*)看不太懂,去网上查找发现是正则表达式(“.”表示匹配除换行符\n之外的任何单字符,“*”表示零次或多次),“.*”意思就是任意字符出现零次或多次。以表达式a.*b为例,它将匹配最长的以a开始,以b结束的字符串。

这里的输入框就可以不用输入<script>标签,可以换成其他标签输入,这里我输入的<body onl oad=alert’GXY’>。

Sort型-XSS

  • 【Low】级别

这里在name输入框里面随意输入一个代码,然后在message输入框里面输入代码<script>alert("GXY")</script>。

对于name栏,它的长度是有限制的,所以代码不能完整的写进去,解决办法就是把这里的长度改大一些,直接F12,查看源码,在图中位置更改长度。

然后再回到dvwa的界面,在name栏就可以输入完整的代码段,然后message里面的内容可以随意写。

  • 【Medium】级别              

仍然使用刚刚的构造,渗透失败了,但是发现系统把<script>标签过滤掉了。然后查看源码,可以看到,由于对message参数使用了htmlapecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只限制了输入长度,过滤了。

补充:strip_tags()函数:剥去字符串中的HTML、XML以及PHP的标签,但允许使用标签;addslashes()函数:返回再预定义字符(单引号、双引号、反斜杠,NULL)之前添加反斜杠的字符串。

这里由于name长度不能超过10,所以这里通过修改html源码把name的长度改大一些。(这里把长度10改成了10000)。

然后在name栏里面就可以输入完整的代码,但是依然渗透失败,于是参考之前做反射型XSS时的思路,采用大小写混写,居然成功了。

还可以使用工具burpsuit抓包解决,首先抓取到数据包后把代码段(这里依旧是采用大小写混写模式)添加到图中1的位置,然后点击forward。

在浏览器中就可以看到刚刚对数据包操作后,浏览器给出的响应。

  • 【High】级别

使用工具burpsuit抓包解决,首先抓取到数据包后把代码段(这里采用其他标签,我是用的<body>标签)添加到图中1的位置,然后点击forward。

在浏览器中就可以看到刚刚对数据包操作后,浏览器给出的响应。

同样的这里把name栏的长度改大一点,然后采用其他标签的方式进行渗透。

标签:XSS,name,代码,用户,DVWA,源码,靶场,输入
From: https://www.cnblogs.com/yeahh/p/17498824.html

相关文章

  • XSS的攻击和怎么防止XSS的攻击
    XSS:CrossSiteScripting【跨站脚本攻击】一、概念黑客向HTML文件或者DOM中添加恶意脚本从而在用户浏览页面时利用插入的恶意代码,对用户实施攻击二、分类存储型XSS攻击黑客向存在漏洞的服务器插入一段恶意JavaScript代码当用户向服务器请求资源的时候就会请求到该恶意J......
  • DVWA-环境搭建
    前言在学习web安全的过程中,靶场是必不可少的,毕竟在计算机界,任何理论知识都不如实操同时也不可能提供真实企业环境去练习,这个时候靶场就起到极其重要的作用。靶场就是人为提供的带有安全漏洞的服务,每一个学习者都可以在本地快速搭建来实操,回溯漏洞的发生原理以及操作方式。DVWA靶......
  • vulnhub靶场:matrix-breakout-2-morpheus
    这个靶场的链接不小心给关闭了,所以只能自己去搜了,好像这个靶场需要用virtualbox,但是我的好像有问题,所以用VMware了,这是我打开后的样子我的kali的ip:192.168.13.129对靶场进项扫描nmap-sP65535192.168.13.0/24稍微判断下,锁定在147和254然后扫描它,发现147是靶场的ip  ......
  • [纵横网络靶场社区]隐信道数据安全分析
    附件flag-woody.mp3是一首歌,mp3格式,听了一下,Audacity打开看了一下没发现什么异常;mp3隐写试了一下也没什么线索。回到题目名称和描述。信道隐写,某种private的方式将信息传递出去。使用010Editor打开,分析文件结构。可以发现在每个MPEG_FRAMEmf下的4字节MPEG_HEADERmpeg_hdr中的......
  • [纵横网络靶场社区]工控安全取证
    使用file命令查看capture.log,发现是pcap文件,修改后缀为.pcap根据题目描述可以理解为两种意思:一个IP的第四次扫描第四个IP的第一次扫描分析流量包,发现了192.168.0.9、192.168.0.199、192.168.0.1、192.168.0.254共四个,流量包前面大部分都是192.168.0.9在进行SYN扫描192.168.0.99。......
  • [纵横网络靶场社区]奇怪的文件
    part1、part2、part3很明显是zip文件的压缩源文件数据区、压缩源文件目录区、压缩源文件目录结束标志三个文件都补全504B两个字节,然后依次把part2、part3补全到part1文件中;修改part1文件名为part1.zip使用010Editor打开,分析文件结构发现压缩源文件数据区的CRC字段为空、压缩源......
  • XSS-Lab闯关笔记
    XSS-Lablevel1level2level3level4level5level6level7level8level9level10level11level12level13level14level15level16level17level18level19level20level1从源码中可以看到这里并没有对输入的name参数进行任何过滤就直接放入了<h2></h2>标签内$str=$_GET["name"];echo"<h2......
  • [纵横网络靶场社区]Modbus协议
    下载附件进行流量分析,查看Modbus协议,点击长度排序,发现一个长度比较突出的包包末尾写的就是flag的内容flag{TheModbusProtocolIsFunny!}......
  • Kali Linux 下搭建ctfd靶场(报错解决)
    准备环境:获取一台运行Linux的服务器或虚拟机,确保具备足够的计算资源和网络连接。安装所需的软件和依赖项,如Python、pip等。安装CTFd:打开终端并使用以下命令克隆CTFd的GitHub存储库gitclonehttps://github.com/CTFd/CTFd.git进入克隆的CTFd目录:cdCTFd......
  • [网络安全] DVWA之 Command Injection 攻击姿势及解题详析合集
    CommandInjection命令注入(CommandInjection)是一种安全漏洞,发生在应用程序使用用户提供的输入作为系统命令的一部分而未经充分验证和过滤的情况下。当应用程序在构造系统命令时,如果没有对用户输入进行适当的验证和过滤,攻击者可以通过在用户输入中插入恶意命令来执行任意系统命......