声明:
由于笔者能力有限,难免出现各种错误和漏洞。全文仅作为个人笔记,仅供参考。
笔记内容来源于各类网课。
环境:
XSS Challenges Stage #8:http://xss-quiz.int21h.jp/ , Firefox浏览器,BurpSuite
一、概述
javascript伪协议触发漏洞。
二、javascript伪协议和a标签
将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。
javascript:var now = new Date(); "<h1>The time is:</h1>" + now;
javascript URL还可以含有只执行动作,但不返回值的javascript语句。
javascript:alert("hello world!")
<a>标签定义超链接,用于页面间跳转或页面内跳转。
<a>元素最重要的属性是href属性,它指定链接的目标。在所有浏览器中,链接的默认外观如下:
- 未被访问的链接带有下划线而且是蓝色的
- 已被访问的链接带有下划线而且是紫色的
- 活动链接带有下划线而且是红色的
三、XSS探测过程
1. 正常的数据提交
提交数据123abc,数据出现在a标签内容和a标签的href属性。
2. 代码审查
通过审计代码,我们首先尝试闭合标签。
"> <script>alert(1);</script>
发现,由于提交的数据同时出现在href和文本中,很难构造合适的Payload。
我们使用javascript伪协议进行XSS。
javascript:alert(1);
点击a标签,由于使用javascript伪协议,会使用javascript解释器执行href内的代码。
3. 构造Payload
javascript:alert(document.domain);
成功执行JS,触发XSS。