XSS 漏洞
漏洞原理
XSS(Cross Site Scripting):跨站脚本攻击,为了不和层叠样式表(Cascading StyleSheets)的缩写CSS混合,所以改名为XSS
XSS原理:攻击者在网页中嵌入客户端脚本(通常是JavaScript的恶意脚本),当用户使用浏览器加载被嵌入恶意代码的网页时,恶意脚本代码就会在用户的浏览器执行,造成跨站脚本的攻击
常见场景
重灾区:评论区、留言区、个人信息、订单信息等
针对型:站内信、网页即时通讯、私信、意见反馈
存在风险:搜索框、当前目录、图片属性等
发现和利用

漏洞危害

防御方式
对用户的输入进行合理验证,对特殊字符(如
< > ' "等)以及<script> javascript等字符进行过滤根据数据位置设置恰当的输出编码,将数据置于 HTML 上下文中的不同位置(HTML 标签、HTML 属性、JavaScript 脚本、CSS、URL),对所有不可信数据进行恰当的输出编码
设置 HttpOnly 属性避免攻击者利用 XSS 漏洞进行 Cookie 劫持攻击
3种XSS类型
触发过程
1、黑客构造XSS脚本 2、正常用户访问携带XSS脚本的网页
正常用户访问携带XSS脚本的URL
正常用户访问携带XSS脚本的URL
数据存储
服务器
URL
URL
谁来输出
后端Web应用程序
后端Web应用程序
前端JavaScript
输入位置
HTTP响应中
HTTP响应中
用F12查看,不会出现在源代码中
是否持久
是
否
否
反射型XSS
• 反射型XSS 是非持久性、参数型的跨站脚本,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。 • 出现场景:多出现在搜索框或者输入框。

漏洞服务器
vul-page-reflected.php
模拟演示-GET型
攻击者服务器
/xss/cookie-get.php
/xss/hook-get.js
钓鱼页面
xss-get.html
模拟演示-POST型
攻击者服务器
/xss/cookie-post.php
/xss/hook-post.js
钓鱼页面
xss-post.html
存储型XSS
恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性
比较常见的场景是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后,所有访问该博客的用户,都会在他们的浏览器中执行这段恶意js代码

漏洞服务器
vul-page-stored.php
DOM型XSS
DOM,全称 Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式
DOM-XSS简单去理解就是输出点在 DOM,属于特殊的 反射型XSS

常用的DOM方法
getElementById()
返回带有指定 ID 的元素。
getElementsByTagName()
返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
getElementsByClassName()
返回包含带有指定类名的所有元素的节点列表。
appendChild()
把新的子节点添加到指定节点。
removeChild()
删除子节点。
replaceChild()
替换子节点。
insertBefore()
在指定的子节点前面插入新的子节点。
createAttribute()
创建属性节点。
createElement()
创建元素节点。
createTextNode()
创建文本节点。
getAttribute()
返回指定的属性值。
setAttribute()
把指定属性设置或修改为指定的值。
漏洞服务器
vul-page-dom.php
XSS平台
免费邮箱:http://24mail.chacuo.net/
XSSPt平台:https://xss.pt
BeEF工具
BeEF 全称 The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具。用 Ruby 语言开发的,用于实现对 XSS 漏洞的攻击和利用。
BeEF 主要是往网页中插入一段名为 hook.js 的 JS 脚本代码,如果浏览器访问了有 hook.js(钩子) 的页面,就会被 hook(勾住),勾连的浏览器会执行初始代码返回一些信息,接着目标主机会每隔一段时间(默认为1秒)就会向 BeEF 服务器发送一个请求,询问是否有新的代码需要执行
官网: https://beefproject.com
wiki: https://github.com/beefproject/beef/wiki
BeEF平台功能介绍
信息搜集: 可以实现网络发现、主机信息获取、cookie获取、会话劫持、获取键盘记录、获取插件信息等功能
持久化控制:可以实现确认弹框,⼩窗⼝和中间⼈攻击。
社会⼯程学攻击:可以实现点击劫持、弹窗告警、虚假⻚⾯和钓⻥⻚⾯等攻击
渗透攻击:可以实现内⽹渗透、CSRF跨站请求伪造攻击、DDOS攻击,还可以结合Metasploit使⽤
安装BeFF
安装:apt-get install beef-xss
启动:beef-xss(首次启动时需要输入新的密码)
管理界面: http://127.0.0.1:3000/ui/panel
配置文件:/usr/share/beef-xss/config.yaml
XSS变形
常见构造payload标签
script、img、video、audio、svg、body、select、testarea、iframe 等
常见构造payload函数
onclick 当鼠标点击触发 onmousemove 当鼠标移动就触发 onload 当页面加载完成后触发 onerror 当出错时触发
常用payload
更多参考:https://github.com/payloadbox/xss-payload-list/blob/master/Intruder/xss-payload-list.txt
在线靶场
Last updated