渗透测试--xss

作者:

锦凡歆在 ‘来疯’ 直播唱歌最好听

 

 

跨站脚本攻击

XSS 漏洞概述

- 简介

XSS 作为OWASP TOP 10 之一,

XSS 被称为跨站脚本攻击(Cross-site scripting),本来应该缩写为CSS,但是由于和CSS(Cascading Style Sheets,层叠样式脚本)重名,所以更名为XSS。XSS(跨站脚本攻击)主要基于javascript(JS)完成恶意的攻击行为。JS 可以非常灵活的操作html、css和浏览器,这使得XSS 攻击的“想象”空间特别大。

XSS 通过将精心构造的代码(JS)代码注入到网页中,并由浏览器解释运行这段JS 代码,以达到恶意攻击的效果。当用户访问被XSS 脚本注入的网页,XSS脚本就会被提取出来。用户浏览器就会解析这段XSS 代码,也就是说用户被攻击了。用户最简单的动作就是使用浏览器上网,并且浏览器中有javascript 解释器,可以解析javascript,然而浏览器不会判断代码是否恶意。也就是说,XSS 的对象是用户和浏览器。

XSS 涉及到三方

@ 用户浏览器

@ 服务器

@ 攻击者

微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入XSS 代码,都存在遭受XSS 的风险,只要没有对用户的输入进行严格过滤,就会被XSS 。

- XSS 危害

XSS 利用JS 代码实现攻击,有很多中攻击方法,一下简单列出几种

@ 盗取各种用户账号 例如:弹出一个对话框,让用输入账号和密码。某游戏公司出现过xss漏洞,当输入账号和密码时,账号密码就会被盗。

@ 窃取用户Cookie资料,冒充用户身份进入网站

@ 劫持用户会话,执行任意操作

@ 刷流量,执行弹窗广告 例如:js也可以发送HTML5请求。

@ 传播蠕虫病毒

等等

- XSS 漏洞的验证

我们可以用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做PoC(Proof of Concept)。验证XSS 漏洞存在的PoC 如下

-----------------------------------------------------------

常用

-----------------------------------------------------------

我们可以在测试页面中提交这样的代码

点击提交按钮,就能看到弹窗操作。

我们发现,提交的代码[],被当作字符串输出在HTML 页面中,浏览器会根据[],点击搜索,即可触发反射型XSS。

 

注意到,我们提交的poc 会出现在search.php 页面的keywords 参数中。

 

 

作者:

锦凡歆在 ‘来疯’ 直播唱歌最好听

 

 

 

- 存储型XSS

存储型XSS 是持久性跨站脚本。持久性体现在XSS 代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。

存储型XSS 通常发生在留言板等地方。我们在留言板位置留言,将恶意代码写进数据库中。

 

此时,我们只完成了第一步,将恶意代码写入数据库。因为XSS 使用的JS 代码,JS 代码的运行环境是浏览器,所以需要浏览器从服务器载入恶意的XSS 代码,才能真正触发XSS。此时,需要我们模拟网站后台管理员的身份,查看留言。

- DOM XSS

DOM XSS 比较特殊。owasp 关于DOM 型号XSS 的定义是基于DOM 的XSS 是一种XSS 攻击,其中攻击的payload由于修改受害者浏览器页面的DOM 树而执行的。其特殊的地方就是payload 在浏览器本地修改DOM 树而执行, 并不会传到服务器上,这也就使得DOM XSS 比较难以检测。如下面的例子

 

我们以锚点的方式提交PoC。PoC 并不会发送的服务器,但是已经触发了XSS。查看当前页面的源代码如下

 

查看提交参数后的HTML 页面(DOM 树),会形成鲜明的对比,如下。

-----------------------------------

XSS 的构造和变形非常丰富

XSS 利用JS 代码实现攻击,JS 运行环境是浏览器,也属于前端安全。

一句JS 代码的效果受到浏览器款式和版本的限制比较多。

-----------------------------------

 

 

 

XSS 的构造

- 利用[<>]构造HTML/JS

可以利用[<>] 构造HTML 标签和