引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足;对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以我就想到了通过写博客(课程笔记)的形式去学习它,虽然写博客会让我多花几倍的时间去学习它,但是当我完成一篇博客所获得的成就感和你们对于我的认同感,让我很满足,能够鼓励我一天天的坚持下去,也希望和我一起学习本期视频的"同道"们也能给一直坚持下去。我们大家一起加油。由于作者本身也是网络信息安全小白,大部分知识点都是初次接触,出现对其理解不深入,不完整,甚至也会出现错误有问题的地方,希望大家谅解、留言提出指正,同时也欢迎大家来找我一起交流学习!!!
往期博客:
第一阶段:
[网络安全学习篇1]:windowsxp、windows2003、windows7、windows2008系统部署(千峰网络安全视频笔记)
[网络安全学习篇24]:漏洞与木马(千峰网络安全视频笔记 p117-p118)
第二阶段:
第三阶段:
[网络安全学习篇42]:靶场环境搭建(ubuntu系统安装优化及vulhub安装)
[网络安全学习篇43]:PHP基础+变量 运算符 流程控制语句
第四阶段:
[网络安全学习篇56]:XSS(本篇)
下期博文:
目录
XSS 漏洞
XSS漏洞概述
*简介
XSS 被称为跨站脚本攻击,本来应该缩写为CSS,但是由于和CSS重名,所以更名位XSS。
XSS主要是基于JavaScript完成恶意的攻击行为。JS可以非常灵活的操作html、css和浏览器,这使得XSS 攻击的想象空间特别大。
XSS通过将精心设计构造的代码(JS)注入网页中,并由浏览器解释运行这段JS代码,以达到恶意攻击的效果。当用户访问被XSS脚本注入的网页,XSS脚本就会被提取出来。用户浏览器就会解析这段浏览器代码,也就是用户被攻击了。
用户最简单的动作就是使用浏览器上网,并且浏览器中有JavaScript解释器,可以解析JavaScript,然而浏览器不会判断代码是否恶意。也就是说,XSS的对象是用户和浏览器
什么是XSS呢?
编写如下测试页面
xss_test.php
<?php
$input = $_GET["var"];
echo "<div>".$input."</div>";
?>
在浏览器输入端提交参数
?var=<script>alert(/xss/)</script>
会发现alert(/xss/)已经被执行了
查看页面源代码,会发现用户输入的script代码,已经被写入到页面中,显然,这不是开发人员想要看到的情况
XSS漏洞发生在哪里?
服务器
微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入XSS 代码,都存在遭受XSS 攻击的风险,只要没有对用户的输入进行严格的过滤,就会被XSS 攻击。
*XSS 危害
XSS 利用JS 代码实现攻击,有很多种攻击的方法,以下简单列出几种
@ | 盗取各种用户账户 |
@ | 盗取用户Cookie资料,冒充用户身份进入网站 |
@ | 劫持用户会话,执行任意操作 |
@ | 刷流量、执行弹窗广告 |
@ | 传播蠕虫病毒 |
等等
*XXS 漏洞的验证
我们可以用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做PoC(Proof of Concept).
PoC | 漏洞验证与检测 |
EXP | 漏洞的完整利用工具 |
shellcode | 利用漏洞时,所执行的代码 |
payload | 攻击载荷(在不同的形式下含义不同) sqlmap 攻击代码的模板 msf shellcode 类似,功能是建立与目标的连接 |
验证漏洞存在的Poc 如下:
------
<script>alert(/XSS/)</script>
<script>confirm('XSS')</script>
<script>prompt('XSS')</script>
---------
我们可以在测试页面中提交这样的代码<script>alert(/XSS/)</script>,当我发现提交的代码被当作字符串输出在HTML页面中,浏览器会根据[<script>]标签识别为JS 语句,并会执行它,并执行弹窗操作,即可以执行其他JS代码,因此我们验证了XSS漏洞的存在性。
XSS 的分类
XSS 漏洞大概分为三个类型:反射型XSS、存储性XSS、DOM 型XSS
*反射型XSS
反射型只是简单的将用户输入的数据"反射"给浏览器,其应用场景往往是黑客诱使用户点击一个恶意链接,从而获得用户带cookie信息等,XSS 是非持久性、参数型的跨站脚本。反射型XSS 的JS代码在Web 应用的参数中,如搜索框的反射型XSS。
在搜索框中,提交PoC[<script>alert(/XSS/)</script>],点击搜索,即可触发反射型XSS
注意到,我们提交的poc 会出现在search.php 页面的keywords 参数中
*存储型XSS
存储型XSS 是一个持久性跨站脚本。持久性体现在XSS 代码不是在某个参数中,而是写进数据库或文件等可以永久性保存数据的介质中。
存储型XSS 通常发生在留言板的地方。我们在留言板位置留言,将恶意代码写进数据库中。
此时,所有查看我留言的用户,甚至是管理员,都会在他们的浏览器端执行恶意的javascript代码,黑客把恶意的脚本保存到服务器端,所以这种XSS攻击就叫存储型XSS。
*DOM XSS
DOM XSS 比较特殊。owasp 关于DOM 型号XSS 的定义是基于DOM 的XSS 是一种XSS 攻击,其中XSS 攻击的payload 由于修改受害者浏览器页面的DOM 树而执行的。其特殊地方在于payload 在浏览器本地修改DOM 树而执行,并不会上传到服务器上,这也就使得DOM XSS 比较难以检测,其实其和反射型XSS类似,但是由于历史原因,将其单独作为一个分类。
如下面的例子
[#message=<script>alert(/XSS/)</script>]
我们以描点的方式提交PoC 并不会发送到浏览器,但是已经触发了XSS。
查看提交参数后的HTML 页面(DOM树),会被重新渲染,从而在不通过服务器端的情况下改变DOM 树。
参考文献: