雷石|yonyouNC命令执行Bypass测试分享

雷石安全实验室

共 4342字,需浏览 9分钟

 ·

2023-07-09 18:33

61c1abb8ab631a64ef22edd37a03bd0b.webp

前言


41d9130895a47958dbf1155b7ee72a66.webp在渗透和攻防中,多次遇到用友NC系统。一直以来都是用别人的工具,自己从来没分析研究过用友的源码和利用,遇到一些场景或需要利用漏洞执行命令时踩了很多坑。最近便通过灰盒测试简单分析了下NC6的命令执行,并尝试bypass。 测试环境: win server+NC6.3,win server+NC6.5



01.

NC6.3


首先是用友NC6.3,无论是bsh.servlet.BshServlet命令执行还是反序列化执行系统命令,都会遇到dir、echo命令执行失败。通过监控进程,发现未调用cmd,猜测是被过滤。

f3ed51f5e8152f31e07dea71bd5743e1.webp


当命令执行成功时,会调用系统cmd执行。

4894807102a25a5cc86e640304ec664e.webp


通过测试,发现加上cmd/c能够成功调用cmd并执行

245017406f25df195c8d53ddf06095d0.webp


08994ce6f501d259f2d7e40d6c868811.webp


尝试echo命令写入文件,也没有问题,完全正常写入exec("cmd /c echo ccc > nc63.txt");

d77df3a361282a02c8936a5cb1129128.webp


NC6.5

02.


在NC6.5中,发现在NC6.3中的方法已不再适用。增加了转义,特殊符号全部失效。例如通过echo写入需要用到的“>” ,会被双引号转义成字符串而非命令。 被转义:可以看到 cmd和特殊字符都被添加了双引号包裹

25e621d1f93982e9e05ec14d4042380e.webp


失败尝试:

a1e65c0b3f8344cfc3fa105772ec54d3.webp


尝试Bypass: 首先是执行无参数的命令,观察发现上面使用cmd /c 时,cmd被加了双引号,但还是成功调用cmd命令。 1.在cmd下测试命令加上双引号还是会正常执行。 2.NC6.5中会以空格分界,对含有特殊字符的字符串添加引号。 通过测试,发现上面两个特写。用如下方式,将执行结果通过尖括号输出到文本。

da2252216569602285b25e714fe78dd2.webp


成功执行方式:

f161b68b390733a20b42ec75760ea97d.webp


命令执行带参数: 如果出现命令需要有参数的场景怎么办? win中的系统命令大多都是用斜线“/” 来声明参数名。经过尝试,发现可以直接省去空格连写:

336690866539cd6a1e9da7cca60c3027.webp


b1a3a12e8c1f38c6d01ab6f71a0c8112.webp


写文件: 但在实战中还是要写入webshell的,就要用到echo 和">"符号。 这一步确实让我折腾了一番,后来想到用闭合双引号方式来干扰转义。

b4b431bae56d8e2db3fdc2eaab896ed9.webp


经过测试,用如下方式写入的缺点是会多出空格和引号:

ea23882415330ea30e42fe7dda8bccb7.webp


afa878d39da2f119d2306d19e283d434.webp


小结


41d9130895a47958dbf1155b7ee72a66.webp

会用利用脚本是一回事,复现了漏洞是一回事,能否在攻防中利用漏洞并拿到权限又是另一回事。

看似有了exp复现漏洞就是掌握了,但在实战中总会遇到不同环境、不同场景,也会出现不同状况,还是要掌握漏洞原理才能逐个攻破。


推荐阅读


41d9130895a47958dbf1155b7ee72a66.webp ·白加黑免杀制作(详细)

·文章预览

16b46cfda43d1bc4ba4f6626479d76c4.webp


往期回顾


01

Electron应用调试技巧分享

02

Python安全工具开发思路分享

03

一个好用的RPC框架

雷石安全实验室


商务咨询:

0571-87031601

商务邮箱:

mtn@motanni.com

浏览 171
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报