web渗透手册之XSS漏洞的利用与防止
1.1XSS漏洞简介:
XSS 攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)
的缩写混淆,故将跨站脚本攻击缩写为 XSS,XSS 是一种在 web 应用中的计算
机安全漏洞,它允许恶意 web 用户将代码植入到 web 网站里面,供给其它用户
访问,当用户访问到有恶意代码的网页就会产生 xss 攻击。
1.2XSS漏洞攻击的危害:
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
1.3XSS漏洞的简单防御办法:
XSS 防御的总体思路是:对输入(和 URL 参数)进行过滤,对输出进行编码。
也就是对提交的所有内容进行过滤,对 url 中的参数进行过滤,过滤掉会导致脚
本执行的相关内容;然后对动态输出到页面的内容进行 html 编码,使脚本无法
在浏览器中执行。
PS:以上就是本期XSS系列的大纲。
2.1XSS漏洞的分类:
2.1.1:XSS(反射型):
反射型 XSS,非持久化,需要欺骗用户自己去点击链接才能触发 XSS 代码。
反射型 xss 攻击的方法,攻击者通过发送邮件或诱导等方法,将包含有 xss 恶意
链接发送给目标用户,当目标用户访问该链接时,服务器将接收该用户的请求并
进行处理,然后服务器把带有 xss 恶意脚本发送给目标用户的浏览器,浏览器解
析这段带有 xss 代码的恶意脚本后,就会触发 xss 攻击。
2.1.2: XSS(存储型):
存储型 XSS,持久化,代码是存储在服务器中的数据库里,如在个人信息或发表
文章等地方,可以插入代码,如果插入的数据没有过滤或过滤不严,那么这些恶
意代码没有经过过滤将储存到数据库中,用户访问该页面的时候,没有进行编码
过滤输出到浏览器上,就会触发代码执行,造成 xss 攻击。
3.1具体xss漏洞的分析:
3.1.1 DOM型xss漏洞:
DOM,全称 Document Object Model,是一个平台和语言都中立的接口,可以使
程序和脚本能够动态访问和更新文档的内容、结构以及样式。
DOM 型 XSS 其实是一种特殊类型的反射型 XSS,它是基于 DOM 文档对象模型
的一种漏洞。
在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个
顶级的 Document object 文档对象,接着生成各个子文档对象,每个页面元素对
应一个文档对象,每个文档对象包含属性、方法和事件。可以通过 JS 脚本对文
档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过
DOM 来动态修改页面内容,从客户端获取 DOM 中的数据并在本地执行。基于
这个特性,就可以利用 JS 脚本来实现 XSS 漏洞的利用。
一些经常出现 dom xss 的关键语句
document.referer 属性
window.name 属性
location 属性
innerHTML 属性
documen.write 属性
3.1.2DOM型XSS漏洞的代码分析:
点击按钮时,会调用 domxss()函数,跟踪 domxss 函数
function domxss(){
var str = document.getElementById(“text”).value;
document.getElementById(“dom”).innerHTML = "what do you
see?";
}
获取 id text 文本的值,修改 id 为 dom 的 html 值,输入
’ οnclick=“alert(‘dom xss 漏洞’)”> 闭合前面的单引号,即可。
3.2 XSS测试语句:(!!!!)
与判断有没有注入点一致:采用一些标签的方式< >,提交表单,如果没有过滤则说明,可能存在xss漏洞。
1
1
闭合
“>x<”
‘>">x<’
单行注释
">x//
例如输入
1
9.jpg
没有被过滤。
3.3 XSS攻击语句:
输入检测确定标签没有过滤后,为了显示存在漏洞,需要插入 xss 攻击代码。
常用的语句
<script>alert(1)</script>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
<a href='javascript:alert(1)'>aa</a>