一次小破站JS代码审计出XSS漏洞思路学习

  • 今天看了小破站一个大佬的分析,感觉思路很有意思,感兴趣的xdm可以到大佬视频下提供的链接进行测试(传送门)这类社交平台的XSS漏洞利用起来其实危害是特别大的,利用XSS能在社交平台上呈现蠕虫式的扩散,大部分资产其实很容易存在这样的问题,也是一种挖高危的好思路。
  • 由于up主视频分析比较概括,自己吧源码拉下来再研究和复现一遍,加深印象。
  • 最后,JS看来还是得再学一下,学的东西都还给老师了qaq,代码还是理解得不透彻,不过暂且记录下来,有什么问题欢迎各路大佬来指正。

一、私信功能JS的部分代码:

<script>
function test(){var any_url = 'https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)|bilibili://[\\w!@#$&\\*=\\./?~_%\\-]*';var white_list = JSON.parse('["^https?://[-A-Za-z0-9.]*(bilibili.com|biligame.com|acg.tv|b23.tv|(bili2233|bili23|bili33|bili22).cn|dl.hdslb.com)(/[A-Za-z0-9!@#$&\\\\*=\\\\./?~_%\\\\-]*)*$","^bilibili://[\\\\w!@#$&\\\\*=\\\\./?~_%\\\\-]*"]');var msgRegex = {any_url:any_url,white_list:white_list,black_list:[]}var g = null;var p = document.getElementById("in").value;//sort((function(t, e){})是比值函数结合sort()函数以字符长度大到小排序,具体解释:https://blog.51cto.com/u_15076212/4265209var m, f, h = new RegExp(any_url,"g"), g = (p.match(h) || []).sort((function(t, e) {return e.length - t.length})), v = null === (m = msgRegex) || void 0 === m ? void 0 : m.white_list.filter((function(t) {return -1 === t.indexOf("bilibili://")})), b = new RegExp(v.join("|")), y = new RegExp(null === (f = msgRegex) || void 0 === f ? void 0 : f.black_list.join("|"));g.forEach((function(e, n) {var i, s;console.log(e);!b.test(e) || null !== (i = msgRegex) && void 0 !== i && null !== (s = i.black_list) && void 0 !== s && s.length && y.test(e) || (p = p.split(e).join("bilibili-msg-link-placeholder-".concat(n)))})),(function(){//url是bilibili://开头的提示移动端打开p = p.replace(/(?:bilibili:\/\/)(?:[/.$*?~=#!%@&\-\w]*)?/g,function(t){return '\n              <span data-href="'.concat(t, '">\n                【请在移动端上打开链接】\n              </span>\n            ')})})(),//p = u(d, p).join(""),g.forEach((function(t, e) {//造成漏洞的关键部分:满足条件的字符串拼接bilibili-msg-link-placeholder-(序号)p = p.split("bilibili-msg-link-placeholder-".concat(e)).join('\n              <a href="'.concat(t, '" target="_blank" class="dynamic-link">\n                <i class="bp-icon-font icon-link"></i> 网页链接\n              </a>\n            '))})),document.getElementById("output_html").value = p;console.log(document.getElementById("output"));document.getElementById("output").contentWindow.document.documentElement.innerHTML=p;console.log(p);
};
</script>

chatgpt对这一部分代码解释:

在这里插入图片描述

二、分析原理

  1. 首先要理解的是js代码里面的”bilibili-msg-link-placeholder-".concat(e)部分,这部分称为占位符,也可以理解为一个便于后面进行输出的数组变量,代码中看出只要符合url格式的字符串都会被归入占位符数组中,concat(e)可以简单理解为当存在多个符合条件的url的时候按短到长的顺序生成序号1,2,3…,

最后再满足white_list正则的占位符进行拼接并输出
显示效果就是这样
在这里插入图片描述

  1. 当攻击者故意在URL里面插入”bilibili-msg-link-placeholder-".concat(e)这样的字符串时就有可能导致XSS的发生。

比如发送两条符合条件的url:
https://www.bilibili.com/bilibili-msg-link-placeholder-1
https://www.baidu.com/οnmοuseοver=console.log(99)//

此时占位符的排序是由url长到短排序的,所以
bilibili-msg-link-placeholder-1的值是https://www.baidu.com/οnmοuseοver=console.log(99)//,但是由于格式不符合white_list,最后不会进行超链接的拼接
bilibili-msg-link-placeholder-0的值是https://www.bilibili.com/bilibili-msg-link-placeholder-1,格式符合white_list,最后会进行超链接的拼接

bilibili-msg-link-placeholder-0拼接的结果为

  <a href="https://www.bilibili.com/<a href="https://www.baidu.com/onmouseover=console.log(99)//" target="_blank" class="dynamic-link"><i class="bp-icon-font icon-link"></i> 网页链接</a>
" target="_blank" class="dynamic-link"><i class="bp-icon-font icon-link"></i> 网页链接</a>

最后效果:
可以看到控制台console.log(99)显示出来了。
在这里插入图片描述

三、一些疑问

最后的结果到html为什么拼接部分的斜线会转成等号导致漏洞最终生效的?
不太理解。。。滚回去补JS了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17673.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化代码审计工具-ChatGPT-codeReview

今天体验了一下自动化审计工具-ChatGPT-CodeReview。https://github.com/anc95/ChatGPT-CodeReview/blob/main/README.zh-CN.md 首先说一下体验感&#xff0c;不太行。只能作为一个编程基本代码补充工具&#xff0c;在安全这块的功能不太突出。 缺点&#xff1a; 它是一个文件…

ChatGPT爆火的时代,教育的路怎么选?

最近热门的一个话题就是ChatGPT&#xff0c;那么你知道ChatGPT是什么吗&#xff1f;它有多强大&#xff1f;对教育带来了多大的影响呢&#xff1f; ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型。它的强大不止于搜索引擎&#xff0c;可以搜索…

在教育领域中使用ChatGPT有哪些优点?

人工智能在教育领域的应用正在迅速增加。OpenAI于2022年11月开发的聊天机器人ChatGPT在全球范围内广受欢迎。 由于其受欢迎程度以及生成类似人类问题的回答的能力&#xff0c;ChatGPT正在成为许多学习者和教育工作者值得信赖的伴侣。然而&#xff0c;与任何新兴技术一样&#x…

二月券商金工精选

✦研报目录✦ ✦简述✦ 按发布时间排序 中信期货 组合优化专题&#xff08;一&#xff09;&#xff1a;截面回归与因子正交的二重奏——【中信期货金融工程】 发布日期&#xff1a;2023-02-01 关键词&#xff1a;期货、截面回归、因子正交 主要内容&#xff1a;本报告处理“…

LCHub:网易数帆汪源:低代码仍然被“误会”,市场明年会迎拐点

LCHub:2023年四月底,在北京见到网易副总裁、网易杭州研究院执行院长、网易数帆总经理汪源,他展现出对于低代码、生成式AI技术非常开放的分享状态。汪源是网易杭州研究院执行院长,他负责的研究院在2006年已经成立,早期的网易数帆就是研究院的技术团队,支撑网易公司的数个主…

msn邮箱在哪里登录?

MSN是微软公司旗下的门户网站&#xff0c;涵盖了我们生活的方方面面&#xff0c;沟通、社交、出行、娱乐等等。下面&#xff0c;我就给大家介绍一下MSN邮箱的登陆方法。如果你也想知道&#xff0c;就一起来详细了解下吧。 1、网页搜索MSN官网将其打开&#xff0c;如果你有账号&…

outlook邮箱收件服务器密码,微软邮箱(hotmail+outlook):应用密码获取+STARTTLS加密...

本文针对hotmail/outlook邮箱的登录进行详细说明 微软邮箱官网(HOTMAIL/OUTLOOK)&#xff1a;http://outlook.com # 一、畅邮设置 # 1.1、输入邮箱 # 1.2、输入密码 部分账户开启了 两步验证 &#xff0c;请使用 应用密码 登陆 # 1.2.1、应用密码 创建新应用密码 创建其他应用密…

微软邮箱(hotmail/outlook):应用密码获取+STARTTLS加密

本文针对hotmail/outlook邮箱的登录进行详细说明 微软邮箱官网&#xff08;HOTMAIL/OUTLOOK&#xff09;&#xff1a;http://outlook.com 一、畅邮设置 1.1、输入邮箱 1.2、输入密码 请先开启 双重验证 &#xff0c;请使用 应用密码 登陆 。 1.2.1、双重验证 开启入口&…

hotmail接收邮件服务器(pop),Microsoft微软邮箱 outlook、hotmail 打开pop和imap的方法

分享个微软邮箱 outlook、hotmail 打开pop和imap的方法 只有打开了pop或者imap &#xff0c; foxmail一类的邮件管理客户端才能正常收邮件&#xff1b;打开了smtp才能正常发邮件。 设置方法如图&#xff1a; 1.登录进去账户以后&#xff0c;点击右上角的设置&#xff0c;齿轮图…

ChatGPT爆火 Meta有哪些新举动?

2023年初&#xff0c;人工智能聊天程序ChatGPT爆火&#xff0c;随后国内外众多科技行业巨头都开始纷纷入局人工智能赛道&#xff0c;这其中也包括Meta。近日&#xff0c;Meta创始人扎克伯格宣称正在整合团队力量&#xff0c;致力于构建生成式人工智能。Mete究竟在人工智能领域有…

“目前水平最高”!Meta 挑战 ChatGPT

来源&#xff1a;数据观综合 编辑&#xff1a;蒲蒲 Meta发布全新大型语言模型LLaMA&#xff0c;加入硅谷AI竞赛。 继微软、谷歌之后&#xff0c;Facebook母公司Meta也宣布加入AI军备竞赛。 Meta 推出全新大语言模型 北京时间2月25日&#xff0c;脸书母公司 Meta CEO 扎克伯格在…

《流浪地球》让人细思极恐的是什么?

问&#xff1a;《流浪地球》让人细思极恐的一句话是什么&#xff1f; 答&#xff1a;交通第三交通委提醒您&#xff1a;道路千万条&#xff0c;安全第一条。行车不规范&#xff0c;亲人两行泪。 问&#xff1a;【闪拍生活】APP让人细思极恐的一句话是什么&#xff1f; 答&…

假期观影|《流浪地球》观后感

早上带着儿子一起去看了这场电影&#xff0c;电影里面描述的是不幸的事情&#xff0c;但现在的孩子是幸福的&#xff0c;想想自己这个年龄的时候只有《地道战》《地雷战》《上甘岭战役》还有《铁道游击队》等等爱国教育片。现在他们都是这类科幻大片。科幻题材的电影我看过《后…

北大教授雷奕安质疑《流浪地球》的69个不合理之处

数据猿导读 说不得&#xff0c;摸不得&#xff0c;更打不得&#xff01;似乎所有人都在小心翼翼地活着、看着&#xff0c;被裹挟着、被引领着、被正确着、被... 来源&#xff1a;科学网博客丨作者&#xff1a;雷奕安 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜…

从ChatGPT到MOSS,《流浪地球2》是否会照进现实?

要说热点的话&#xff0c;那么2023年开年至今&#xff0c;从流浪地球的MOSS引发的巨大讨论与争议&#xff0c;到ChatGPT的爆火引发的全民跟风热潮&#xff0c;至微软推出的新必应在测试中出现的“暴雷”&#xff0c;一切的舆论&#xff0c;一切的争议&#xff0c;都终归出于“人…

现有大语言模型(ChatGPT)的上下文理解能力还是假象吗?

人工智能的一个重要方面是人机交互智能&#xff0c;人机交互智能的核心在于机器对自然语言的理解&#xff0c;而机器翻译是衡量这种理解的有效方式。 按照目前LLM的技术路线&#xff0c;仅仅靠计算语言形式的概率能否产生人类式理解还是未知&#xff0c;但我们知道人类式理解是…

朋友圈宣传文案 朋友圈产品推广文案模板怎么写?

朋友圈互推&#xff0c;本质是利用异业联盟互换资源的原理&#xff1b; 营销值得学举个在现实生活中常见的例子&#xff0c;大家就能很好的理解&#xff0c;异业联盟互换资源的原理。使用得当&#xff0c;效果便是11>2! 我们院子有个买鸡蛋的大姐&#xff0c;为人实在乐于…

chatgpt赋能python:使用Numpy在Python中进行科学计算

使用Numpy在Python中进行科学计算 对于需要进行科学计算和数据分析的程序员&#xff0c;Python是一个非常有用的编程语言。而Numpy&#xff08;Numerical Python&#xff09;则是Python生态系统中最受欢迎和广泛使用的科学计算库之一。该库提供了高效的数组操作&#xff0c;线…

开源的全文搜索引擎总结,chatbot和chatgpt项目必备资源

全文搜索引擎就是通过从互联网上提取的各个网站的信息&#xff08;以网页文字为主&#xff09;而建立的数据库中&#xff0c;检索与用户查询条件匹配的相关记录&#xff0c;然后按一定的排列顺序将结果返回给用户。 1、Apache Lucene Java 全文搜索框架 许可证&#xff1a;Apa…