神刀安全网

门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析

门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析

作为我个人“ 友情检测开源软件安全 ”的项目之一,我准备玩玩 Apache Jetspeed 2 (v2.30)。

Jetspeed 这东西, 用作者的话来讲,那就是:

“一个开放门户平台和企业信息门户,完全由基于开放标准的、在 Apache 许可 下的 Java XML进行 开源撰写。所有经过门户的行为都有严格安全的管理策略进行控制。在 Jetspeed 门户中,单个的组件可以通过页面聚合起来。每个组件都是单独的应用,而 Jetspeed 充当了中央集成分发的角色,让多种来源的信息统一起来,易于管理使用访问。

虽然我不知道有多少人在使用 Jetspeed ,但它的官方主页确实列出了许多公司和组织,以及可以 快速搜索更多案例 的选项。并且,像这类东西很可能在内网会安装不少,所有 Jetspeed 似乎是有相当多的用户的。

然而在审计它的代码期间,遇到了一些严重的漏洞。这里写下的是其中两个漏洞的 write-up ,它们会导致“预身份验证远程代码执行”。我本不打算在这段时间发布相关内容,但是 apache 发布了 相关公告 ,我估摸着官方差不多把底儿给透了。 Jetspeed v2.3.1 本月晚些时候将要 发布 ,所以您如果是 Jetspeed v2 的的用户,请留意安装最新版。

Apache Jetspeed 用户管理 REST API未授权访问漏洞

影响版本:Jetspeed 2.3.0和未知更早的版本。

我在验证用户管理的某个SQL注入 ( CVE-2016-0710 ) 的时候发现了这个问题,它允许黑客不经过授权就进行漏洞利用。虽然这个漏洞并没有CVE,但是CVE-2016-0710的描述中很明确地提到了它的存在。

“这里也存在一个身份认证漏洞,那些Jetspeed里的URL链接不经过授权即可访问。”

这个问题可能是我发现的最严重的问题之一,因为它允许未验证身份的黑客获取门户里的所有信息。这个漏洞源自Jetspeed REST API的用户管理服务没有进行强制身份认证。所以未经认证的黑客可以添加、编辑、删除门户里的用户。同时,它也可以授予用户管理权限,重置已有用户的密码。

示例

创建用户:

POST/jetspeed/services/usermanager/users/?_type=json HTTP/1.1 Host: 192.168.2.5:8080 […] Content-Length: 130 Connection: close name=foobar&password=password&password_confirm=password&user_name_given=foo&user_name_family=bar&user_email=foo%40bar.net&newrule=

这个请求会返回500错误,但用户确实创建成功了。

将foobar授予admin权限:

POST/jetspeed/services/usermanager/users/foobar/?_type=json HTTP/1.1 Host: 192.168.2.5:8080 […] Content-Length: 123 Connection: close name=&password=&password_confirm=&user_name_given=&user_name_family=&user_email=&user_enabled=&roles=admin&rule=

这个请求会简单的返回“true”,权限已经加上。

ZIP文件路径穿越[CVE-2016-0709]

影响版本:Jetspeed 2.2.0 to 2.2.2,Jetspeed 2.3.0。

已经不再更新的Jetspeed 2.1.x,可能也会它被影响。

这是一个典型的文件上传/路径穿越漏洞,在门户网站管理处通过Import/Export上传普通文件时,系统会检查文件名。它们不会包含路径字符如“../”之类的,所以不会导致路径穿越。然而,这个检查机制并没有涉及ZIP包,所有我们可以上传一个包含名为“../../webapps/x.jsp”的ZIP包,这个文件就会在系统里自解压时,写入web根目录,访问Java应用服务器后会执行脚本。

下面的代码展示了对文件名检查的不周:

门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析

当门户网站管理( Portal Site Manager )在没有管理权限无法访问的时候,如先前所述,黑客利用漏洞可以不经过认证,加上一个管理用户。所以综合这两个漏洞,黑客可以实现预认证远程代码执行,演示视频如下:(需翻墙观看)

Remote Code Execution in Apache Jetspeed 2.2.0 – 2.3.0 from Andreas on Vimeo .

视频里的exp我不会放出,防止伸手党作乱。其实这个文章发出来,对于那些有点技术的人,已经足够依样画葫芦了。

结语

这些实验结果,可能不是特别先进或者新奇,这些只是为了修复Jetspeed 2并加强它的安全。正如我在文章里所写,开源免费软件通常需要审计,审计人员和被审计方都会从中获益良多。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮