本文目录一览:
Xmind XSS导致RCE漏洞复现
公众号原文
仅参考复现,和小幅修改
# 01 Xmind简介:
XMind 是一个 全功能 的思维导图和头脑风暴软件,为激发灵感和创意而生。作为一款有效提升工作和生活效率的生产力工具,受到全球百千万用户的青睐。
# 02 漏洞简介:
Xmind 存在XSS漏洞,攻击者可以借助该漏洞进而实现命令执行,在实际环境中可以借助钓鱼攻击可能造成更严重的危害。
# 03 漏洞影响范围:
最新版本202107130605不受该漏洞影响,次新版本均受该漏洞影响,且需要打开大纲,按任意字符才能触发。
# 04 漏洞复现过程:
测试版本为Xmind2020,安装完成之后,打开软件,随便点击一个思维导图点击创建:
将导图分支修改为poc/exp,然后进入大纲视图查看、测试:
1、首先测试下xss弹窗:
payload:
输入完之后,鼠标移动到payload最后方,敲空格就能触发,或者点击ctrl健也能触发:
2、测试RCE命令执行:
原始payload:
然后将其进行base64编码:
构造最终的payload,替换里面的内容即可:
触发方式也是一样的,成功执行:
3、测试CS上线:
这里使用powershell上线:
和上面命令执行利用方式一样,将执行的命令替换为powershell上线payload:
由于命令在单引号内,而powershell命令中也有单引号,所以需要用\进行转义:
然后base64编码,再进行最终的payload构造即可:
触发方式一样:
可以看到成功上线:
尝试执行命令,成功:
来源于网上
以下内容转于网上
曾经写过的一份WEB渗透工程师面试题,看到别人在网上已经公开了试题和答案、也发在博客上吧,反正已经被公开过了,限于招初级WEB渗透工程师。
1.sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由:
A,demo.jsp?id=2+1 B,demo.jsp?id=2-1
(选B,因为A中的+号需要做URL编码后使用2%2B1)考URL编码
2.以下链接存在sql注入漏洞,对于这个变形注入,你有什么思路?
Demo.Do?DATA=MjAxNg==
(先解码,再拼接,再编码,再注入)考base64编码
3.发现jsp?uid=110注入点,你有哪几种思路获取webshell,那种是优选?
(1.首选,找web路径泄漏,猜解web路径,利用sql注入写入webshell,2.其次找后台密码,破解密码密文,找到后台登陆找利用点3.如果实在难找,找其他漏洞)危害类,看是否有利用漏洞、入侵的经验非单纯的安全测试
4.CSRF和XSS和XXE有什么区别,以及修复方式?
(csrf利用会话sessionid做请求,xxs是盗取cookies里的sessionid,两者不是一个漏洞,XXE是xml实体注入, csrf可以在会话中加token或者限制跨域请求,xxs可以在显示或保存时做转义,xxe可以限制外部xml引用)考会话劫持相关。新增XXE,即xml注入
5.CSRF、SSRF和重放攻击有什么区别?
(csrf是跨站请求伪造,利用会话sessionid发请求,需要外部引发条件。SSRF是服务端请求伪造,利用服务端获取文件参数,任意访问内网文件。重放攻击是指一个会话可以一直请求,一直返回,比如短信验证码),考对漏洞的理解,是否混淆
6.说出至少3种业务逻辑漏洞,并阐明漏洞原理?
(水平越权、垂直越权、任意充值账户密码、1分钱充话费、0元支付、刷积分漏洞、验证码或密码暴力破解等)考对业务涉及缺陷漏洞的经验。
7.圈出下面会话中可能存在问题的项,并标注可能会存在的问题
GET /ecskins/demo.jsp?uid=2016031900keyword=”hello world!” HTTP/1.1
Host: com:82
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/css,/ ;q=0.1
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: ;v=1459663591817
Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d; uniqueuserid=session_0GRMiFiYJhAh5_HZrQoZamJ; st_uid=N90pIYHLZgjXI-NX01vPUf46w952J-0NcX19vgj1L%3DJXrZP9sf0IY-vEI9iNIX150iLXKat1YZLnUf46Z%2C5aec5biM5rCROueDn%2BWPsOeDn%2BiNiTrng5%2Flj7A%3D; status=True
Connection: keep-alive
(标红1:sql注入,标红2:xss,标红3:cookies欺骗,4:会话CSRF或重放风险。)考对HTTP数据包字段敏感度及会话渗透经验。
8.找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案?
//看对常规漏洞的深入程度
9.你常用的渗透工具有那些,最常用的是那个?
// 看渗透方向,和之前工作性质
10.描述一个你深入研究过的CVE或POC。
// 看水平和深度,中级水平,都有资助挖掘MVC、CMS框架的漏洞能力。
11.谈谈你经常关注的安全平台。
// 看安全行业的学习能力
求base64编码译文
大概是这个意思:
中仿科技诚邀您参加SLOPE/W 边坡稳定性分析模型技术研讨会。佐叛塾诟咚俜⒄沟闹泄�彝凉こ探ㄉ璨椒ィ�蟹驴萍加爰幽么驡EO-?SLOPE公司于2008年3月6号在上海同济大学将举办SLOPE/W 边坡稳?定性分析模型技术研讨会。
本次会议将邀请全国各大高校、研爵克�⒖辈焐杓圃旱妊彝凉こ套ㄒ档目蒲小⑸杓迫嗽辈渭樱�蟹驴启技和加拿大GEO-SLOPE公司的资深岩土工程师将为您带来GeoStudi?o系列软件的最新动态及其在岩土工程中的应用信息,与来宾共同?进行边坡稳定性分析模型的技术探讨,与大家共同讨论边坡稳定恤苑治稣庖蝗找嬗跋焐��踩�奈侍狻D�部梢杂肜醋约幽么蟮腖e?onard Lam博士共同交流您所关心的岩土工程问题,同时您可以得?到软件最新的资料以及试用安装CD。
详情参见 ;page=1toread=1
a hre?f=";page=1tore?ad=1;page=1to?read=1/a?
Base64算法原理及实现
Base64算法最开始是被用于解决电子邮件数据传输问题。在早期,由于历史原因问题,电子邮件只允许使用ASCII字符,如果在邮件中出现了非ASCII字符,在通过某些网关进行数据转发的时候,网关会对这些非ASCII字符做出调整,例如,把ASCII码8位二进制码的最高位置为0。此时接收方在收到邮件时就会出现乱码。基于这个原因,产生了Base64算法。
Base64编码的思路说白了,就是把传输数据的每个字节映射成ASCII码表中的某些字符,这样在传输的过程中,就不会出现乱码的问题了。Base64算法定义了一个映射表,如下所示。
由上表可以看出,之所以称为Base64编码,实际上是把原数据映射成了ASCII码表中的64个字符。但是,64个字符最多能映射的位数是6bit。但是每个数据是8bit的,那怎么转换呢?Base64编码的基本思想: 将原数据每3个字节(24bit)分为一组,然后将这24bit数据按照每6bit一组,重新划分为4组,分组完成之后,再将每每6bit数据为单元进行映射。
Base64编码的基本流程如下:
例如,将字符串"ABC"进行Base64编码流程如下。
所以,字符串"ABC"经过Base64编码后的数据是"QUJD"。
从Base64编码的原理可以看到,Base64实际上就是把原来数据中的每3个字节一组进行Base64编码转换,编码之后变成4个Base64字符。但是如果原文数据长度不是3的整数倍的时候该怎么办呢?Base64算法规定,如果待加密数据不是3的整数倍,就在原文数据后面补0,直到长度凑够3的整数倍为止,然后再进行Base64编码转换。待编码转换完成之后,在结果末尾补充相同个数的"="。
例如,将字符串"ABCD"进行Base64编码流程如下。
所以,字符串"ABC"经过Base64编码后的字符串是"QUJDRA=="。
其实这里有个规律,当原文的数据长度除以3余数为0时,编码之后后面没有"=";当余数为1时,后面有两个"=",当余数是2时,后面有一个"=","="的个数也就是补充的字节数。
通过Base64的原理可以看到,Base64编码实际上是把原数据的3个字节映射成了4个字节,所以相比于原数据长度,编码后的长度会增加1/3。这也会降低传输效率。
Get方式和Post方式是Http请求常用的两种方式,某些情况下会要求使用Get方式来传递二进制数据。这时,可以先通过Base64编码来将二进制数据转换成字符串数据。由于符号"+"和符号"/"是不允许出现在Url中的,所以,产生了Url安全的Base64算法,所谓的Url安全的Base64算法,其实主要包含两个方面。
目前,在Java中,我们可以通过以下方式来是使用Base64算法。
在java8之前,JDK官方库中都没有内置Base64算法,其实Base64实现很简单,这个不知道为什么。但是Java8内置了Base64编码器和解码器。
在Java8中,Base64工具类提供了三种BASE64编解码器:
1.基本Base64编码
也就是完全按照标准Base64的映射规则来编解码,不添加任何行标。
2.Url Base64编码
JDK标准类库中的Url Base64编码是用"-"和"_"取代了"+"和"/"
3.MIME Base64编码
Java类库中还提供了一种格式更友好的Base64编码,这种编码输出每行不超过76字符,并且使用'\r'并跟随'\n'作为分割。
4.去除填充符的Base64
在Java标准类库中,还提供了一种方式来去除编码末尾的"=",就是在构建Encoder 对象后调用withoutPadding()方法,例如:
Commons Codec是Apache为Java开发者提供的一个开源软件类库,该类库中主要是一些常用的编码工具类包,例如DES、SHA1、MD5、Base64,URL等。在使用该类库之前需要首先在Eclipse中添加依赖。Commons Codec提供了以下Base64编码方式。
1.基本Base64编码
Commons Codec和Java标准类库提供给的Base64编码方式是一样的。
2.Url Base64编码
Url Base64编码和Java类库也是一样的,把"+"和"/"替换成了"-"和"_",有一个不同的地方是Commons Codec中的Url Base64默认去掉了后面的"=",相当于Java类库中调用了withouPadding方法,例如:
3.类MIME格式输出
Commons Codec中也提供了类似于Java类库中的MIME的格式化输出,在Commons Codec中有一个方法:
这里的isChunked置为true,就表示是按照MIME格式输出编码结果。
h
Base64 编码知识,一文打尽!
现在网站为了提升用户的浏览体验越来越多的使用了图片,而这些图片通常以 Base64 的形式存储和加载。因此各位开发工程师肯定对 Base64 毫不陌生了,那么你知道 Base64 究竟是什么,为什么要使用 Base64,以及 Base64 的优缺点吗?
Base64 是网络中存储和传输的二进制数据的普遍用法。Base64 一个字节只能表示 64 种情况,且编码格式每个字节的前两位都只能是 0,使用剩下的 6 位表示内容。
看到这里相信大家也能够意识到,这种编码格式无法充分利用存储资源,效能较低。那为什么还会成为网络中的普遍用法呢?
其实 Base64 最早是应用在邮件传输协议中的。当时邮件传输协议只支持 ASCII 字符传递,使用 ASCII 码来表示所有的英文字符和数字还有一些符号。这里有一个问题,如果邮件中只传输英文数字等,那么 ASCII 可以直接支持。但是如果要在文件中传输图片、视频等资源的话,这些资源转成 ASCII 的时候会出现非英文数字的情况。而且邮件中还存在很多控制字符,这些控制字符又会成为不可见字符。非英文字符和控制字符在传输过程中很容易产生错误,影响邮件的正确传输。为此才有了诞生了一个新的编码规则,把二进制以 3 个字节为一组,再把每组的 3 个字节(24 位)转换成 4 个 6 位,每 6 位根据查表对应一个 ASCII 符号,这就是 Base64。
Base64 将 8 位为一个单元的字节数据,拆分为 6 位为一个单元的二进制片段。每一个 6 位单元对应 Base64 索引表中的一个字符。简单举个例子,下图中 M 的 ASCII 码是 77 , 而转换为二进制后前六位二进制对应值为 19,为 Base64 字典中的 T。
当然这里也会有一个问题,如果要编码的二进制数据不是 3 的倍数,那就会剩下一至二个字节。为此 Base64 使用 000000 字节值在末尾补足,使其字节数能够被 3 整除,补位用 = 表示,= 的个数可表示补了多少字节,并在解码时自动去除。总体来看相比编码前,Base64 编码后的字符增加了约 33%。
前面我们也提到了 Base64 编码是现在网站小图片的主要加载方式,那 Base64 到底是如何处理图片的呢?
我们都知道图片在网页中的使用方法通常是使用 img 标签的形式,而 img 标签的 src 属性会指定一个远程服务器上的资源。在网页加载到浏览器中时,浏览器会针对每个外部资源都向服务器发送一次拉取资源请求。但是这是非常占用网络资源的,而且因为大多数浏览器都有并发请求数的限制,如果你的网页中嵌入了过多外部请求,就很容易出现页面加载速度过慢的情况。
而 Base64 编码可以通过 Data URL 技术让图片以字符串的格式直接嵌入页面,与 HTML 成为一体。这样在加载时就可以避开对外部资源的请求
为什么选择 Data URL
至于为什么选择 Data URL 技术,是因为跟传统的外部资源引用方式相比,它拥有以下优点:
通过这种方式 Base64 编码可以更为快捷方便得对前端的各种图片资源进行优化。我们看一个具体的例子:
可以明显看到 Base64 编码将一幅图片数据编码成一串字符串,并使用该字符串代替图像地址。尽管乍一眼看上去没有任何图片相关的内容,但它最终渲染出的毫无疑问是一张完整的图片效果。
当然使用 Data URL 来进行 Base64 图片编码并不是完美的,它有着两个不容忽视的缺点:
无法被浏览器缓存也就意味着每次访问都需要重新请求资源,这对于服务器压力是比较大的。那有没有办法,能将这些数据也放入浏览器缓存中呢?
加快加载小技巧
其实大部分网站的背景图构成,是一个宽高只有几个像素的小图片,通过将它平铺成为背景图。通常我们将小图片保存成 GIF 或 PNG 格式,然后在 CSS 的 background-image 属性中引用图片地址。但是浏览器本身并不在意 URL里写的是什么,只是需要通过它获取需要的数据。
所以我们完全可以使用 CSS 样式文件,让 Data URL 形式的图片存储在 CSS 样式表中。这样浏览器就会缓存 CSS 文件,也就会缓存图片,能够进一步提高页面加载效率。
上图就是一个简单的使用案例,通过这种方式既避免了让背景图片独自产生一次 HTTP 请求的情况,还让背景图片和 CSS 文件一起被浏览器缓存起来,避免了每次打开网页都加载一次背景图片的情况,让改善用户的浏览体验更为快速流畅。
通过 Date URL 技术与 Base64 编码的结合有效减少 HTTP 请求,让用户访问体验更好,这其实是我们一个开发过程中的小技巧,希望看完后能够带给大家一些帮助。