DNS Monitor 环境搭建(一)

栏目: PHP · 发布时间: 7年前

内容简介:DNS Monitor 环境搭建(一)

作者:znn

原文地址:https://secvul.com/topics/979.html

0x00 引子

相信很多人在测试漏洞的时候都遇到过这样一个问题,那就是遇到一个RCE无回显的情况下怎么判断命令是否执行(比如最近的WebLogic漏洞CVE-2017-10271)。当然这个问题很好解决,只需要 python -m SimpleHTTPServer 9999 这样就轻松在9999端口起一个Web服务器,再将漏洞执行代码换成 curl http://ip:9999 即可。这种方法在实际应用中存在几个问题,比如:

  • 无法自动化判断

    批量的情况下不适用

    不利于后续扩展

    阉割版 linux 不存在curl等测试命令

针对以上几个问题,最好的选择是DNS Monitor。其实 ceye.io 这种平台就是为了解决这一问题产生的。但是考虑到渗透测试的隐私性,还是决定自己搭建一套环境。

0x01 配置DNS解析

本来用的是国内某DNS提供商进行解析,发现不支持添加NS记录,于是换到 www.cloudflare.com. 仅为测试用,后续会撤掉,解析条目如下:

Type    Name                   Value
A       ns.bypass.world        119.23.236.88
NS      dns.bypass.world       ns.bypass.world

DNS原理和解析规则这里不再多说。

0x02 搭建DNS服务器

这里选择用Dnsmasq搭建DNS服务器,Ubuntu上安装很简单:

apt-get install dnsmasq

修改配置文件 /etc/dnsmasq.conf :

cat /etc/dnsmasq.conf | grep -v "#" | sort | uniq
addn-hosts=/etc/hosts.dnsmasq
address=/.dns.bypass.world/127.0.0.1
filterwin2k
interface=eth0
log-facility=/var/log/dnsmasq.log
log-queries
no-hosts
no-poll
no-resolv
resolv-file=/etc/resolv.dnsmasq.conf

修改配置文件 /etc/default/dnsmasq :

cat /etc/default/dnsmasq
CONFIG_DIR=/etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new
ENABLED=1

添加配置文件 /etc/resolv.dnsmasq.conf :

cat /etc/resolv.dnsmasq.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

添加配置文件 /etc/hosts.dnsmasq :

cat /etc/hosts.dnsmasq
#127.0.0.1 localhost

注意:以上配置仅为 DNS Monitor 功能服务,其中 no-resolv 关闭了对上游dns递归,防止恶意DNS请求消耗服务器性能,仅添加一条泛解析 address=/.dns.bypass.world/127.0.0.1, 单个域名解析也可以在 /etc/hosts.dnsmasq 中添加。

0x03 运行测试

配置文件修改完成后,重启dnsmasq服务,并监控dnsmasq日志:

service dnsmasq restart
tail -f /var/log/dnsmasq.log

Payload 示例:

nslookup flag.dns.bypass.world
curl flag.dns.bypass.world
ping flag.dns.bypass.world

执行Payload,可以看到DNS日志如下:

Dec 27 14:13:09 dnsmasq[27269]: query[A] 123.dns.bypass.world from *.*.*.*
Dec 27 14:13:09 dnsmasq[27269]: config 123.dns.bypass.world is 127.0.0.1
Dec 27 14:13:15 dnsmasq[27269]: query[A] xxx.dns.bypass.world from *.*.*.*
Dec 27 14:13:15 dnsmasq[27269]: config xxx.dns.bypass.world is 127.0.0.1

0x04 添加Web API

PHP代码如下:

<?php
$flag = $_GET['flag'];
if ($flag) {
 $str1 = $flag.".dns.bypass.world";
 $str2 = file_get_contents("/var/log/dnsmasq.log");
 if(strpos($str2, $str1) !== false) {
 echo "True\n";
 } else {
 echo "False\n";
 }
} else {
echo "not be bad !\n";
 }

本人 PHP 水平一般,代码凑合看看。以上代码原理就是读取DNS日志,确定flag.dns.bypass.world是否在日志中,确定则证明代码执行成功。这样以后验证漏洞就能方便很多了。

如下测试结果:

DNS Monitor 环境搭建(一)

0x05 后续

不难看出,以上环节仍然存在不少问题,最大的几个坑如下:

  • 没有在互联网上找到Dnsmasq的并发性能测试的说明,无法确定其并发数。

    DNS日志文件无法定制修改其内容,Dnsmasq这块也没有详细说明。

    PHP读取日志文件再进行判断,这种手法显得很粗鄙,且消耗性能,一旦日志文件过大,后果可以想象得到。

在下篇文章中将会解决上述问题。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

中国创投简史

中国创投简史

投资界网站 / 人民邮电出版社 / 2017-1-1 / 55

《中国创投简史》系统梳理了自20世纪80年代开始的中国创投产业发展历程,回顾了各个时代中的代表人物、知名投资机构以及他们所创下的一个个投资奇迹。从熊晓鸽、徐新、沈南鹏等风险投资人的成长经历中,从搜狐、腾讯、百度、小米等一代代科技企业巨头的诞生与演变过程中,我们可以看到风险投资的力量、创业者的企业家精神以及科技创造伟大财富的神奇过程。 对于风险投资和私募股权行业的从业者以及有融资需求的创业者来......一起来看看 《中国创投简史》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具