漏洞利用
用友ncbeanshell远程代码-新姿势
注明仅供研究,禁止用于非法攻击,如果用于非法攻击于本人无关之类的
简单介绍
2021年06月03日,用友官方
发布了用友BeanShell远程代码执行漏洞
的风险通告,漏洞编号为CNVD-2021-30167
,漏洞等级:严重
,漏洞评分:9.89
这是一个很老的洞了,已经有2年了。网上很多博客的复现都是浅尝而止,执行一个pwd()。在实际攻防演练中,李四如何通过此漏洞getshell呢?理论上是可以getshell的
访问漏洞存在的地址,会有一个框,可以执行命令。
可以执行pwd();dir()等命令,似乎并不能拿到shell。
何为BeanShell?
李四注意到 标题,这是一个beanshell。
Beanshell(BeanShell)是一种轻量级的Java脚本语言,它允许在Java应用程序中动态执行Java代码。Beanshell提供了一种简单的方式来编写和执行Java代码片段,而无需进行繁琐的编译和构建过程。它可以作为一个独立的解释器使用,也可以嵌入到Java应用程序中作为脚本引擎使用。
BeanShell可以几乎可以执行所有的java 命令和语句,李四看到这里,心里灵光一闪:我直接在写入一个jsp文件,不就万事大吉了嘛?
写入JSP
写入一个jsp有两种思路:1.远程加载2.从本地直接写入。
远程加载的poc网上有,有兴趣可以搜一下。如果没有合适的vps,采取从本地写入。
这里会存在一些小bug,直接使用冰蝎等一句话写入,点击执行会触发服务器500异常。需要将冰蝎一句话格式化,展开写入。
格式化可以借助idea
格式化前
格式化后
使用
将其作为字符串写入
在写入过程中还会存在很多问题,写入到哪个路径?写入文件的访问地址在哪里?如何批量化写入?这些都是需要思考的问题
总结
看到漏洞时候,多搜索,更重要的是多思考(某实验室最近关于此漏洞getshell的文章,一直在执着于调用cmd反弹shell),多思考我们也是大佬。最后善用GPT。