文章目录
XSS
跨站脚本(简称为XSS或跨站脚本或跨站脚本攻击)是针对Web应用程序的安全漏洞攻击,允许用户插入恶意的脚本,从而当用户浏览网页时,插入的脚本就会执行。从而达到攻击的目的。
1.反射型XSS
反射型XSS又叫非持久性XSS,反射型XSS注入的恶意代码不会保存在服务器端,需要欺骗用户去点击恶意链接才能攻击成功。一般通过XSS来窃取用户的cookie。
反射型XSS攻击流程:
2.存储型XSS
存储型XSS又叫持久型XSS,攻击脚本会永久存储在目标服务器中。例如在个人信息或者留言板之类的地方插入恶意脚本,用户访问这些带有恶意脚本的页面时会触发恶意脚本中的代码。
存储型XSS攻击流程:
3.DOM型XSS
DOM型XSS也属于反射型XSS的一种,是通过修改页面的DOM节点形成的XSS。
DOM节点:
能触发DOM型XSS的属性
document.referer
window.name
location
innerHTML
document.write
eval
小结
在三种类型的XSS漏洞中,存储型的XSS危害最大。因为他存储在服务器端,所以不需要我们和被攻击者有任何接触,只要被攻击者访问了该页面就会遭受攻击。而反射型和DOM型的XSS则需要我们去诱使用户点击我们植入了恶意脚本的URL,比如利用社会工程学或者利用在其他网页挂马的方式。
反射型XSS
页面源码:
<div id="xssr_main">
<p class="xssr_title">Which NBA player do you like?</p>
<form method="get">
<input class="xssr_in" type="text" maxlength="20" name="message" />
<input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
<?php echo $html;?>
</div>
</div><!-- /.page-content -->
</div>
</div><!-- /.main-content -->
<?php
include_once $PIKA_ROOT_DIR.'footer.php';
?>
这里有一个用户提交的页面,用户可以在此提交数据,数据提交之后会交给后台处理。但是站点在前端对输入的长度进行了限制,我们须在控制台上修改输入的长度。
之后,我们可以在输入框中提交数据: <script>alert('hello')</script>
,看看有什么反应。
页面直接弹出了hello的页面,可以看到我们插入的语句已经被页面给执行了。
存储型XSS
页面源码:
<div class="main-content">
<div class="main-content-inner">
<div class="breadcrumbs ace-save-state" id