-
-
Notifications
You must be signed in to change notification settings - Fork 10.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
客服端上 EmbedServer 存在安全漏洞 #3328
Comments
怎么破?xxl.job.accessToken=default_token 我现在用的这个配置直接可以绕过发送请求,导致服务器全部都是木马程序。 |
我们先隔离到内网了 端口对对外不在开放,把代码给下载下来改了重写打包替换进去,强制校验吧没有就不让过 |
我是一个华为云和一个阿里云,都隔离不到内网去。如何做强制校验?xxl.job.accessToken=这里任意配置字符串吗? |
|
填空怎么填呢?空串么那第三个值不相等了吧 |
我在本地测试 xxljob 调度中心设置accessToken ,执行器没有设置 accessToken 可以注册和执行任务,但是如果执行器设置了与调度中心不一样的 accessToken 就不会执行 和你说的是一个问题吧 |
不是,我是说的他这个有漏洞,依赖xxx-core的客服端在启动的时候需要启动httpserver,也就是EmbedServer这个类,与管理端进行通信,我的意思是如果别人拿到这个请求路径 /run 后面跟上一个可执行脚本内容,同时accessToken不传也就是null,代码依然会往下执行,导致将脚本注入到机器中,已达到运行的目的,可以看截图那段代码逻辑 |
你就拦截呀,为null的时候直接返回,校验token相同才往后执行呀 |
大佬,你是怎么定位到这行代码的,强 |
这种项目通常不建议放到公网上面执行吧 |
但凡有点安全意识的开发accessToken都不会设置为空 |
这叫漏洞?你自己不设置accessToken怪谁,你这和手机不设置密码被人转走了钱有什么区别 |
漏洞:依赖xxl-job-core 的客服端在启动的HTTP Server (EmbedServer)的代码存在安全漏洞,如果这个httpserver的端口被拿到,然后请求路径如果是 /run ,请求内容是一个脚本代码,同时accessToken 不传递,也就是为null,后面的代码依然也能正常执行,导致恶意的脚本被注入到机器
有问题的代码就在,process 方法对accessToken的校验这里,如果accessToken是空的,后面代码就会被放行,然后发来的数据恰好是一个shell的脚本,那可能就会在本地被执行,也就是调用到
xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java
Line 177 in 72963e4
xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java
Line 178 in 72963e4
xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java
Line 179 in 72963e4
xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java
Line 180 in 72963e4
目前在我们的服务器上有利用这个漏洞来发起大量脚本攻击
也就是下面代码会被执行,导致被攻击了,
TriggerParam triggerParam = GsonTool.fromJson(requestData, TriggerParam.class);
return executorBiz.run(triggerParam);
我们主要是放的服务器开外网和端口了
The text was updated successfully, but these errors were encountered: