| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> xss漏洞挖掘经验分享 -> 正文阅读 |
|
[Java知识库]xss漏洞挖掘经验分享 |
一、简述
XSS
攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指
令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程
序通常是
JavaScript
,但实际上也可以包括
Java
,
VBScript
,
ActiveX
,
Flash
或者
甚至是普通的
HTML
。
攻击成功后,攻击者可能得到更高的权限(如执行一些操
作)、私密网页内容、会话和 cookie 等各种内容。
二、常用的 XSS 攻击手段和目的
三、分类反射型
反射型跨站脚本(
Reflected Cross-Site Scripting
)是最常见,也是使用最广的一种,可将恶
意脚本附加到
URL
地址的参数中。反射型
XSS
的利用一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代
码的
URL
,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执
行。此类
XSS
通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端
Cookies
或进
行钓鱼欺骗。
存储型
持久型跨站脚本(
Persistent Cross-Site Scripting
)也等同于存储型跨站脚本(
Stored
Cross-Site Scripting
)。此类
XSS
不需要用户单击特定
URL
就能执行跨站脚本,攻击者事先将恶意代码上传或储存到漏洞
服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。持久型
XSS
一般出现在网
站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。
DOM 型
传统的
XSS
漏洞一般出现在服务器端代码中,而
DOM-Based XSS
是基于
DOM
文档对象模型的一种漏洞,所以,受客户端浏览器的脚本代码所影响。客户端
JavaScript
可以访问浏览器的
DOM
文本对象模型,因此能够决定用于加载当前页面的
URL
。换句话说,客户端的脚本程序可以通过
DOM
动态地检查和修改页面内容,它不依赖于服务器端的数据,而从客户端获得
DOM
中的数据
(如从
URL
中提取数据)并在本地执行。另一方面,浏览器用户可以操纵
DOM
中的一些对象,例如
URL
、
location
等。用户在客户端输入的数据如果包含了恶意
JavaScript
脚本,而这些脚
本没有经过适当的过滤和消毒,那么应用程序就可能受到基于
DOM
的
XSS
攻击。
无任何过滤情况下一些常见标签
<scirpt>
<img>
<input>
点击事件
竞争焦点,从而触发 onblur 事件
通过 autofocus 属性执行本身的 focus 事件,这个向量是使焦点自动跳到输入元素上,触发焦点事
件,无需用户去触发
<details>
使用 open 属性触发 ontoggle 事件,无需用户去触发
<svg>
<select>
通过 autofocus 属性执行本身的 focus 事件,这个向量是使焦点自动跳到输入元素上,触发焦点事
件,无需用户去触发
<iframe>
<video>
<audio>
<body>
利用换行符以及 autofocus,自动去触发 onscroll 事件,无需用户去触发
<textarea>
<keygen>
<marquee>
<isindex>
利用 link 远程包含 js 文件——在无 CSP 的情况下才可以
javascript 伪协议
其它
有过滤的情况下
过滤空格——用
/
代替空格
过滤关键字
大小写绕过
双写关键字
有些
waf
可能会只替换一次且是替换为空,这种情况下我们可以考虑双写关键字
字符拼接
利用
eval
其它字符混淆
有的
waf
可能是用正则表达式去检测是否有
xss
攻击,如果我们能
fuzz
出正则的
规则,则我们就可以使用其它字符去混淆我们注入的代码了
下面举几个简单的例子
可利用注释、标签的优先级等
编码绕过
Unicode
编码绕过
url
编码绕过
Ascii
码绕过
hex
绕过
八进制
base64
绕过
过滤双引号,单引号
过滤括号
过滤
url
地址——使用
url
编码
使用
IP
1.
十进制
IP
2.
八进制
IP
4.html
标签中用
//
可以代替
http://
5.
使用中文逗号代替英文逗号
如果你在你在域名中输入中文句号浏览器会自动转化成英文的逗号
三、如何防止 xss(一)过滤一些危险字符,以及转义& < > " ' /等危险字符 。(二)HTTP-only Cookie: 禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。(三)设置 CSP(Content Security Policy)(四)输入内容长度限制 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:28:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |