这篇文章主要借助log4j2的热度,讨论了dns和日志应用的相关内容。通过对dnslog.cn的截图分析,探讨了其原理,并介绍了ceye的功能。文章还延伸讨论了用户出口ip与本地dns递归出口ip的对应关系,以及相关的排障和数据分析场景。
一、场景解释
图一:白帽子测试icloud.com的log4j2
简单解释一下这个图,上半部分是dnslog.cn的界面,生成了一个随机域名5test0s.dnslog.cn,并会在这个页面上显示请求该域名的IP信息。这里的IP Address通常是服务器本身配置的DNS的外网出口IP,证明下部分的命令在icloud.com登录功能所在的服务器上成功执行。这是一个可以执行命令的演示。如果这里的exp是echo "testtest" | passwd --stdin root,则有概率修改机器的root密码;如果是reboot,则有概率触发机器重启;如果是一个带有远控的木马,则有概率获得一台受控机器。
图二:icloud登录功能服务器使用的DNS递归出口IP
我们将图一的IP进行查看,发现是美国苹果公司的外网IP,该IP很可能是提供icloud.com登录功能的服务器所配置的DNS的外网IP;我们在dnslog.cn获取到唯一域名后,在自己的设备上执行,可以看到我设备本身的DNS的外网递归出口为27.40.22.150的IP地址。
图三图四:herman家里的DNS递归出口IP
二、实现原理
图五:dnslog.cn解析过程
当我们在dnslog.cn页面获取到子域名进行请求后,该子域名第一次请求必然经过dnslog.cn的权威服务器来获取RR配置。此时第四步,Localdns和dnslog.cn的权威进行了请求交互,那么dnslog.cn的权威服务器就能知道,在什么时间,什么IP请求了什么域名,然后做日志回显即可完成该操作。(该网站提供的子域名TTL也是190秒,所以在190秒之内的请求就记录不了了,要等到下一个TTL周期进行请求。)
dnslog.cn提供的随机子域名的请求打印功能,可以很快验证远程命令是否正常执行,以便让黑白帽子判断是否进行下一步操作。那么基于此原理,还能做什么?
三、其他场景探讨
如果我们现在是某个域名权威服务器的管理员,那么我们可以知道来自该域名的所有请求,也就是上面图中的第四步。那么当我发现某个环境具备远程命令执行但没有回显的时候,我除了想很快验证外,我还想知道是在什么角色下执行whoami命令,显然是可行的,并且ceye提供的子域名TTL是1秒,也就是大部分的请求日志都会记录在权威服务器上。
图六:其他平台的类似功能
这样带来的可玩性就比较多,不一一列举,详情可见:https://www.php.cn/link/ab4218e42fbe3ef74f51e37baca59190
图七:ceye.io payloads实例
那么,还有吗?我们知道,通过域名解析示意图的第四步的必然发生,我们可以在权威DNS上,看到递归DNS和权威的交互,从而获取到递归出口IP和请求的域名。如果通过http请求获取到用户的实际外网IP,我们就形成了用户外网IP和用户递归出口IP的对应关系。华佗上的IP相关功能即是如此,https://www.php.cn/link/415db8c87467076156344592ebda735d
图八:华佗页面
图九:获取外网IP以及Localdns原理示例
该方案无论是通过产品预先埋点还是用户触发,只需要访问一个http请求的时间,服务器端就可以拿到信息,有利于快速定位用户访问异常并进行针对性解决。实现成本相对低廉,仅需一个权威服务器和http服务器即可完成;且只要可以访问互联网的终端设备均可完成覆盖。该场景除了用户问题排障方便外,可以将请求封装到应用本身,通过大量的请求来分析国内用户的网络出口与DNS递归出口之间的关系,将用户DNS问题预先一步解决。
四、总结
总的来说,我们通过dnslog.cn的截图,分析了dnslog.cn的原理,基于此,介绍了可以获取更多信息的ceye的功能。在场景上,我们通过该原理提供了用户出口IP与本地DNS递归出口IP的对应关系,延伸出了排障场景和数据分析场景。看了本文,有想法的同学可以联系herman,一起学习一起探讨~
以上就是DNS在远程调用执行中的应用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号