DVWA系列之XSS

前期准备:linux下搭建dvwa需要lamp环境,其php版本不能太高,php7.0无法使用,php5.6可以;

XSS定义

CSS(Cross Site Script)又叫XSS,中文意思:跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行。XSS的攻击目标是为了盗取客户端的cookie或者其他网站用于识别客户端身份的敏感信息。获取到合法用户的信息后,攻击者甚至可以假冒最终用户与网站进行交互。

XSS的原理

也就是往HTML中注入脚本,HTML指定了脚本标记.在没有过滤字符的情况下,只需要保持完整无错的脚本标记即可触发XSS,假如我们在某个资料表单提交内容,表单提交内容就是某个标记属性所赋的值,我们可以构造如下值来闭和标记来构造完整无错的脚本标记,"><"

反射型XSS

等级Low

源代码

Hello ' . $_GET[ 'name' ] . '
'; } ?>

这里随便输入Word试一下:
word ;

DVWA系列之XSS_第1张图片
基本的xss

观察到调用函数输出了Xss弹窗,后面为Word,其实可以完成许多功能。

等级Medium

源代码:

', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "
Hello ${name}
"; } ?>

观察发现使用str_replace进行了黑名单过滤,绕过这个不成问题,使用

双写绕过

pt>alert(/test/);

大小写混写绕过


DVWA系列之XSS_第2张图片
xss

等级High
Hello ${name}
"; } ?>

使用正则进行匹配,过滤了大小写混合写入已经双写,但是可以使用img、body等标签的事件以及iframe标签的src注入恶意的js代码进行漏洞利用

DVWA系列之XSS_第3张图片
xss

等级Impossible

源代码:

Hello ${name}
"; } // Generate Anti-CSRF token generateSessionToken(); ?>

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。以防止浏览器将其作为HTML元素。这样会将用户输入的内容都不作为标签以提高安全性。
预定义的字符是:

& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >

一些常用的xss语句

    最普通的xss代码
    获取cookie
    img链接地址xss
    注释方法防止过滤
    加载图像失败执行