DNS Monitor 环境搭建(一)

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

内容简介: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读取日志文件再进行判断,这种手法显得很粗鄙,且消耗性能,一旦日志文件过大,后果可以想象得到。

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


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

查看所有标签

猜你喜欢:

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

Cyberwar

Cyberwar

Kathleen Hall Jamieson / Oxford University Press / 2018-10-3 / USD 16.96

The question of how Donald Trump won the 2016 election looms over his presidency. In particular, were the 78,000 voters who gave him an Electoral College victory affected by the Russian trolls and hac......一起来看看 《Cyberwar》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具