XSS漏洞总结之小试牛刀
一:XSS漏洞总结
1>:简介
XSS是跨站脚本攻击,属于被动式的攻击。XSS指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。
2>: 分类及危害
XSS分类:
- 反射型:
非持久性XSS攻击
,当用户访问已被插入攻击代码的链接时,攻击代码执行,完成该次攻击。 - 存储型:
持久型XSS攻击
,攻击者把攻击代码永久存储在目标服务器上中,例如数据库,消息论坛,留言板,访问者日志等。当用户进入页面,代码就会被执行。 - DOM 型:DOM型与前两者的差别是,只在客户端进行解析,不需要服务器的解析响应
XSS危害:
-
盗用cookie,获取敏感信息。(最常见)
在网页浏览中我们常常涉及到用户登录,登录完毕之后服务端会返回一个cookie值存储到客户端(浏览器)
。这个cookie值相当于一个令牌,拿着这张令牌就等同于证明了你是某个用户。
如果你的cookie值被窃取,那么攻击者很可能能够直接利用你的这张令牌不用密码就登录你的账户。 - 劫持流量实现恶意跳转——利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
- 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
现在很多Web页面和浏览器都有过滤功能防止跨站脚本攻击,但百密一疏,还是有存在XSS漏洞的网站,如何绕过常见的过滤呢?下面以渗透测试平台Web For Pentester 演示
二:小试牛刀
1>:无过滤
- 直接在参数后面跟JS代码,浏览器解析执行
2>:过滤掉了<script>
标签
- 通过查看元素,发现 <script>
标签被过滤了
- 绕过方法:将标签<script>
大写,“1”成功弹出。
3>:将<script>
标签大小写都过滤了
绕过方法:在<script>
标签外面在嵌套一个<script>
标签,大小写混用
查看元素发现,外围的<script>
标签成功被过滤,里面的<script>
标签被留了下来,“0”成功弹出。
4>:<script>
标签被完全过滤
绕过方法:用其他标签尝试。例如<imag>
标签<a>
标签等
例:<a href="javascrip:alert(document.cookie)">
标签里的onerror是一个事件,当加载文档或图像时发生某个错误时,执行后面的“=”对应的代码
类似的还有
事件 | 解释 |
---|---|
onmouseover | 鼠标被移到某元素之上 |
onclick | 鼠标点击某个对象 |
onmousemove | 鼠标被移动 |
onmouseup | 某个鼠标按键被松开 |
onload | 某个页面或图像被完成加载 |
onfocus | 元素获得焦点 |
5>:关键字(如alert)被过滤
绕过方法:将关键字进行编码,再用eval()解析
6>:查看代码发现参数储存在变量中
查看代码发现参数储存在变量中,<script>
标签已经存在,这时,只需将储存参数的引号闭合,在<script>
标签里再加入要执行的攻击代码就直接可以运行了。
7>:同6>,只不过这次需要闭合的是单引号
8>:存储型XSS, 持久性的,会把用户输入的数据存储到数据库中
这里输入<script>alert(0)</script>
尝试
可以看到<script>
标签未被执行 ,而<from>
元素定义HTML表单,表单处理程序在表单的 action 属性中指定!这里action属性是URL,而这个URL可以构造,故采用以下做法:
(关于HTML表单及from元素的详细用法见——[http://www.w3school.com.cn/html/html_forms.asp])
* 在onmouseover前加 ” (箭头所指)是为了与原来action的前 ” (三角形所指)闭合,而后在alert前面加 ” (箭头所指)是为了与原来action的后 ” (三角形所指)闭合,从而使代码整个包含在from标签里并解析。
三:XSS的利用
(1):反射型XSS的利用
构建包含恶意脚本文件的URL,发送给被测试者,倘若被测试者是管理员,一旦点了这个链接,可能会引起严重的信息泄露。例如在管理员登录界面的URL后跟上测试成功的恶意脚本代码,发送给管理员,倘若管理员大意点了这个链接,就有可能实现预期的攻击。当然了,要想不容易被发觉,做好代码的隐藏是很重要的,对于URL后面接入链接,可通过压缩链接的方法,还可以对代码采用特殊编码,浏览器能解析然而普通人却看不出来。
具体实现步骤:
①:构建URL加入恶意代码
②:当被测试者点击后,利用XSS平台查看项目内容 这里获取到了cookie
③:打开登陆页面,抓包,将cookie替换,即可以受害者的身份登陆
(2):存储型XSS的利用
在类似能够提交数据的地方插入构建好的playload,可以先构建playload简单的弹窗,在能够成功弹窗后,将XSS平台的代码融入能够成功弹窗的playload的当中,查看项目内容,展开后可获取代码实现的功能。例如cookie等有用信息。
当然了,代码的功能取决于自己的需求,你甚至可以上传木马,而且因为恶意代码上传至服务器,服务器可能存储到数据库,因此无论管理员还是普通用户只要访问了这个页面的访客,都有可能会执行这段恶意脚本。(请注意一切测试需在法律允许的范围内!
)
喜欢记得点赞呦