Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

米斯特白帽培训讲义(v2)漏洞篇 XSS 米斯特 白帽培训 漏洞解析 XSS 跨站脚本攻击

0
0
米斯特白帽培训讲义 漏洞篇 XSS

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS 。恶意攻击者往 Web 页面里插入恶意 javascript 代码,当用户浏览器该页之时,嵌入 Web 页面里的代码会被执行,从而达到恶意攻击用户的目的。


米斯特白帽培训讲义(v2)漏洞篇 XSS 米斯特 白帽培训 漏洞解析 XSS 跨站脚本攻击

Payload

Payload 的中文含义是有效载荷,在 XSS 中指代攻击代码或攻击语句。

常见的 Payload 有:

正常弹窗
<script>alert(1)</script>
<img src=0 onerror=alert(1)>
弹出网站 Cookie 分类
<script>alert(document.cookie)</script>
<img src=0 onerror=alert(document.cookie)>

总共有三种

反射型:Payload 经过后端,不经过数据库

存储型:Payload 经过后端,经过数据库

DOM:Payload 不经过后端

原理:反射型

非持久化,需要欺骗用户点击链接才能触发 XSS 代码(数据库中没有这样的页面和内容)。Payload 一般存在于 URL 或者 HTTP 正文中,需要构造页面,或者构造 URL。

将这段代码保存为 xss.php

<?php
header('X-XSS-Protection: 0');
?>
<p>反射型 XSS 演示</p>
<form action="" method="get">
<input type="text" name="xss"/>
<input type="submit" value="test"/>
</form>
<?php
$xss = @$_GET['xss'];
if($xss!==null){
echo $xss;
}

我们看到,这段代码中首先包含一个表单,用于向页面自己发送 GET 请求,带一个名为 xss的参数。 然后 PHP 会读取该参数,如果不为空,则直接打印出来,我们看到这里不存在任何过滤。也就是说,如果 xss 中存在 HTML 结构性的内容,打印之后会直接解释为 HTML 元素。

我们部署好这个文件,访问 http://localhost/xss.php ,如图:


米斯特白帽培训讲义(v2)漏洞篇 XSS 米斯特 白帽培训 漏洞解析 XSS 跨站脚本攻击

我们直接输入一个 HTML 代码,比如 ,之后点击 test :


米斯特白帽培训讲义(v2)漏洞篇 XSS 米斯特 白帽培训 漏洞解析 XSS 跨站脚本攻击

我们可以看到弹窗,也就是我们输入的 HTML 代码被执行了。

之后我们查看元素,这表明,我们输出的内容直接插入到了页面中,解释为 注入到反射型 XSS 的演示页面中。


米斯特白帽培训讲义(v2)漏洞篇 XSS 米斯特 白帽培训 漏洞解析 XSS 跨站脚本攻击

提交之后页面没什么动静,但是我们查看利用平台,可以发现新增了一条数据:


米斯特白帽培训讲义(v2)漏洞篇 XSS 米斯特 白帽培训 漏洞解析 XSS 跨站脚本攻击

Viewing all articles
Browse latest Browse all 12749