Web安全之跨站脚本攻击漏洞

  • 跨站脚本(XSS)漏洞
    跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS 。恶意攻击者往 Web ⻚⾯⾥插⼊恶意 JavaScript代码,当⽤户浏览该⻚之时,嵌⼊ Web ⻚⾯⾥的代码会被执⾏,从⽽达到恶意攻击⽤户的⽬的。
    Web安全之跨站脚本攻击漏洞_第1张图片

  • 常见类型
    反射性XSS:payload经过后端,不经过数据库
    存储型XSS:payload经过后端,经过数据库
    DOM型XSS:payload不经过后端

XSS漏洞

  • 1.原理
    • 1.1.成因
    • 1.2.反射型XSS
    • 1.3.存储型XSS
    • 1.4.DOM型XSS
    • 1.5.Self XSS
  • 2.利用
    • 2.1.Payload
    • 2.2.获取用户信息
    • 2.3.钓鱼网站
    • 2.4.流量劫持
  • 3.危害
  • 4.防御

1.原理

1.1.成因

漏洞成因
由于动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺HTML代码(最主要的是“>”、“<”),然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交代码(payload)会被受害用户的浏览器解释执行。

1.2.反射型XSS

概念
⾮持久化,需要欺骗⽤户点击链接才能触发 XSS 代码(数据库中没有这样的⻚⾯和内容)。Payload ⼀般存在于 URL 或者 HTTP 正⽂中,需要构造⻚⾯,或者构造 URL。
数据流向:浏览器——>后端——>浏览器

1.3.存储型XSS

概念
持久化,代码储存在数据库中。如在个⼈信息或发表⽂章等地⽅,假如代码没有过滤或过滤不严,那么这些代码将储存到数据库中,⽤户访问该⻚⾯的时候出发代码执⾏。这种 XSS ⽐较危险,容易造成蠕⾍,盗窃 Cookie 等。
数据流向:浏览器——>后端——>数据库——>后端——>浏览器

1.4.DOM型XSS

概念
DOM XSS的XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器端的DOM解析可以认为完全是客户端的事情。
可以触发dom型xss的属性
document.referer属性
window.name属性
location属性
innerHTML属性
documen.write属性

1.5.Self XSS

概念
⾃⼰输⼊xss脚本,输出仅⾃⼰看到,仅xss到⾃⼰。
危害小

2.利用

2.1.Payload

Payload 的中⽂含义是有效载荷,在 XSS 中指代攻击代码或攻击语句。
常⻅的 Payload 有:
正常弹窗



弹出⽹站 Cookie



除了以上的paylaod,有很多标签,事件,属性都是可以拿来执⾏js的。
可以执⾏js的标签


2.4.流量劫持

攻击payload


3.危害

获取⽤户信息:如浏览器信息、ip 地址、cookie 信息等
钓⻥:利⽤ xss 漏洞构造出⼀个登录框,骗取⽤户账户密码,提示登录过期,模拟⼀个⽹站的登录框,将⽤户名、密码发送到攻击者服务器。
注⼊⽊⻢或⼴告链接:有些在主站注⼊⾮法⽹站的链接,对公司的声誉有⼀定的影响。
后台⽹站数据操作:配合 CSRF 漏洞,骗取⽤户点击,利⽤ js 模拟浏览器发包。
xss 蠕⾍:微博蠕⾍只要看过某⼈的微博就是⾃动关注某⼈;贴吧蠕⾍:看过某个帖⼦就⾃动回复。

4.防御

输入过滤
对⽤户提交的数据进⾏有效性验证,仅接受指定⻓度范围内并符合我们期望格式的的内容提交,阻⽌或者忽略除此外的其他任何数据。
输出转义
在变量输出到 HTML ⻚⾯时,可以使⽤编码或转义的⽅式来防御 XSS 攻击
例如:htmlspecialchars()把预定义的字符转换为 HTML 实体
http only
HttpOnly是加在cookies上的⼀个标识,⽤于告诉浏览器不要向客户端脚本(document.cookie或其他)暴露cookie。当你在cookie上设置HttpOnly标识后,浏览器就会知会到这是特殊的cookie,只能由服务器检索到,所有来⾃客户端脚本的访问都会被禁⽌。
Httponly:禁⽌javascript读取,如果cookie中的⼀个参数带有httponly,则这个参数将不能被javascript获取;httponly可以防⽌xss会话劫持攻击。
配合CSP
CSP(Content Security Policy)指的是内容安全策略,为了缓解很⼤⼀部分潜在的跨站脚本问题,浏览器的扩展程序系统引⼊了内容安全策略(CSP)的⼀般概念。
CSP 本质上是建⽴⽩名单,规定了浏览器只能够执⾏特定来源的代码;即使发⽣了xss攻击,也不会加载来源不明的第三⽅脚本。

你可能感兴趣的:(web安全,web,安全漏洞,xss)