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

来源:互联网 发布:男装高端尾货淘宝店 编辑:程序博客网 时间:2024/06/06 21:39

a044ad345982b2b7b77404ae31adcbef77099bf4.jpg

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

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

“一个开放门户平台和企业信息门户,完全由基于开放标准的、在Apache许可下的JavaXML进行开源撰写。所有经过门户的行为都有严格安全的管理策略进行控制。在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应用服务器后会执行脚本。

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

tumblr_inline_o21fxoz0X11t09cse_1280.png

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

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

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

结语

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

相关阅读

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

Apache Jetspeed 目录穿越漏洞

 *参考来源:haxx,FB小编dawner编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)  

0 0
原创粉丝点击