跨站脚本攻击基础

本文内容来自蚁景网安课程。

认识跨站脚本攻击

跨站脚本攻击概念

跨站脚本(Cross-site scripting,XSS)指恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web页面的JavaScript代码会被执行,从而达到恶意攻击用户的目的。

特点

由于动态网页的Web应用对用户提交请求参数没有充分检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是><),并且未加编码地输出到用户的浏览器,这些攻击者恶意提交的代码会被受害用户的浏览器解释执行。

Payload概念

Payload意为有效载荷,在XSS中指代攻击代码或攻击语句。

常见Payload

1
2
3
4
5
6
<!-- 正常弹窗 -->
<script>alert(1)<script>
<img src=0 onerror=alert(1)>
<!-- 弹出网站Cookie -->
<script>alert(document.cookie)</script>
<img src=0 onerror=alert(document.cookie)>

漏洞危害

获取用户信息:如浏览器信息、IP地址、Cookie信息等。

钓鱼:利用XSS漏洞构造出一个登录框,骗取用户账户密码,提示登录过期,模拟一个网站的登录框,将用户名、密码发送到攻击者服务器。

注入木马或广告链接:有些在主站注入非法网站的链接,对公司的声誉有一定影响。

后台增删改网站数据等操作:配合CSRF漏洞,骗取用户点击,利用js模拟浏览器发包。

XSS蠕虫:微博蠕虫(看过某人的微博就会自动关注某人)、贴吧蠕虫(看过某个帖子就会自动回复)。

XSS常出现的地方

GET、POST、Cookies

反馈与浏览

富文本编辑器

各类标签插入和自定义

用户资料

关键词、标签、说明

文件上传

漏洞类型及场景

常见分类

反射型:Payload经过后端,不经过数据库。

存储型:Payload经过后端,经过数据库。

DOM:Payload不经过后端。

反射型

也叫非持久型XSS。攻击者将恶意脚本附加到url参数中,发送给受害者,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。

特点:只执行一次。

常见漏洞场景:搜索处。

反射型触发流程

攻击者在url构造恶意代码,再将恶意代码的url发送给受害者,受害者点击url后就会被攻击。

存储型

也叫持久型XSS。攻击者在数据中嵌入代码,这样当其他用户请求后,服务器从数据库中查询数据并发送给用户,用户浏览此类页面时就可能受到攻击。

常见漏洞场景:多见于评论留言,个人信息等处。

存储型触发流程

1.攻击者发送恶意脚本请求。

2.恶意脚本被保存在数据库中。

3.用户正常浏览页面。

4.从数据库读取恶意脚本。

5.将恶意脚本返回用户,构造页面。

6.浏览器解析,执行恶意脚本,发起攻击。

Self XSS

顾名思义,自己输入XSS脚本,输出仅自己看到,仅XSS到自己。

1
'><img src=# onerror=alert(/xss2/)/><'
v