DVWA_XSS

前言

XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS

摘自https://www.incapsula.com/web-application-security/reflected-xss-attacks.html
反射型XSS

  • 当恶意脚本从Web应用程序反射到受害者的浏览器时,就会发生反射的XSS攻击,也称为非持久性攻击
  • 该脚本通过链接激活,该链接向具有漏洞的网站发送请求,该漏洞允许执行恶意脚本。该漏洞通常是传入请求未被充分清理的结果,这允许操纵Web应用程序的功能和激活恶意脚本。
  • 为了分发恶意链接,犯罪者通常将其嵌入到电子邮件或第三方网站中(例如,在评论部分或社交媒体中)。该链接嵌入在锚文本中,该文本激发用户点击它,从而向被利用的网站发起XSS请求,将攻击反映给用户

存储型XSS

  • 为了成功执行存储的XSS攻击,犯罪者必须在Web应用程序中找到漏洞,然后将恶意脚本注入其服务器(例如,通过注释字段)。
  • 最常见的目标之一是允许用户共享内容的网站,包括博客,社交网络,视频共享平台和留言板。每次查看受感染的页面时,恶意脚本都会传输到受害者的浏览器。

XSS (Reflected)

Low

在输入框写入<script>alert</script>有弹窗,表名有XSS注入
代码未对name进行过滤,且name插入html标签中,可以植入js恶意代码。

Medium

源码对<script>标签过滤,采用双写绕过

1)双写绕过
<sc<script>ript>alert(/xss/)</script>

2)大小写混写绕过

High

script标签正则过滤。双写,大小写混写绕过行不通。

通过imgbody等标签的事件或者iframe等标签的src注入恶意的js代码

<img src=1 onerror=alert(/xss/)>

Impossible

htmlspecialchars函数把预定义的字符&、”、 ’、<、>转换为HTML实体,防止浏览器将其作为HTML元素。且启用anti-CSRF

XSS (Stored)

Low

对源码分析,PHP脚本只对sql注入做了一定的防御。但是确存在stored xss
message 构建 payload

<script>alert(/name/)</script>


2)前端对name长度做了限制,使用F12 修改MAXlangth

Medium

源代码对message做了xss防御,但却name却没有做任何防护,可以抓包对name进行js恶意代码插入(双写绕过,大小写混写)。

High

massage无法构造恶意payload
name对<script>标签正则过滤,我们可以采用其他标签的事件来构造恶意payload

imgiframe等其它危险的标签,并抓包改写。

htmlspecialchars如果没有使用正确,可以通过编码的方式绕过

手工检测XSS

最重要是考虑哪里有输入,输入的数据在什么地方输出

  • 可得知输出位置
    输入一些敏感字符,如"<、>"、'、()",提交后查看HTML源代码,观察输入的字符是否被转义

如果做了过滤,添上字符传AAAA 查询字符比较方便

  • 无法得知输出位置
    采用输入""/>XSS Test"测试

修复XSS跨站漏洞

对输入与输出严格过滤

  • 转义html特殊字符
    <、>、“、‘、&
    htmlspecialchars(),htmlentities()函数把预定义字符转换为HTML实体

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!