OOB注入
定义:OOB注入是指利用带外信道Out-Of-Band 携带信息的一种方式。普通的sql都是从服务器获取信息,然而oob注入是利用dns解析这个侧信道进行从中获取信息。
带外通道技术(OOB)让攻击者能够通过另一种方式来确认和利用没有直接回显的漏洞。
这一类漏洞中,攻击者无法通过恶意请求直接在响应包中看到漏洞的输出结果。
带外通道技术通常需要脆弱的实体来生成带外的TCP/UDP/ICMP请求,然后,攻击者可以通过这个请求来提取数据。
OOB注入与其他注入的区别:
利用条件
1.脆弱的系统(mysql的OOB注入需要的secure_file_priv的值为空)
查看值:show variables like '%secure%';
2.使用的是Windows的服务器
相关知识
- Windows上的UNC路径——可以用于共享文件夹
UNC( Universal Naming Convention)/通用命名规则
Windows主机默认存在, Linux主机默认不存在。格式
\servernamesharename,其中 servername是服务器名。 sharename是共享资源的名称。
我们平时使用的打印机、网络共享文件夹时,都会用到UNC填写地址。并且当我们在使用UNC路径时,会对域名进行DNS查询。
- 泛域名解析:可以使用通配符的方式将次级域名都解析到同一个域名,如*.example.com这样的通配符可以解析 xxx.example.com。
- mysql中的load_file()函数,该函数可以读取服务器上的文件。
- dns服务器,可以解析发来的请求。
- 利用上述的知识点,当我们读取服务器上的一个文件时候,我们需要写一个绝对的地址,然后就会用到UNC,把mysql查询的信息拼接到三级域名中,然后一旦执行看load_file这个函数,那么便会发生dns请求,使用dns服务器捕获该请求便可以获取到想要的信息。
环境搭建及准备
- 搭建好一台dns服务器,或者使用开放的dns平台ceye平台
- 在一台Windows服务器上布置好mySQL服务,并测试好unc路径是否能正常解析使用
测试UNC路径
- 测试127.0.0.1是否解析正确
- 测试域名形式localhost是否解析正确
- 测试ip形式是否解析正确
布置mysql服务
- 使用命令
show variables like '%secure%';
查看是否有任意位置文件读取权限 - 如果显示NULL,则表示不被允许,则到my.ini中的mysqld中添加
secure_file_priv=
。并且需要重启mysql服务,在win环境下不能重启,只能停止后在启动 - 可以配置mysql远程登录,这样比较方便在电脑本机测试
步骤
- 选择mysql库
- grant all privileges on . to root@'%' identified by 'password';
- flush privileges; //为了刷新缓存
- 远程登录命令 mysql -h ip地址 -uroot -p
OOB注入复现
使用load_file和concat拼凑出SQL语句,将要获取的数据库名称通过泛解析带出来
版权声明:本文为原创文章,版权归 Bill's Blog 所有,转载请注明出处!如相关链接出现404,可以在文章下面评论留言。