安全开发实战(4)--whois与子域名爆破

目录

安全开发专栏

前言

whois查询

子域名

子域名爆破

1.4 whois查询

方式1:

方式2:

1.5 子域名查询

方式1:子域名爆破

1.5.1 One

1.5.2 Two

方式2:其他方式

总结 


安全开发专栏

                                                             安全开发实战​​icon-default.png?t=N7T8http://t.csdnimg.cn/25N7H

前言

whois查询

        Whois 查询是一种用于获取有关互联网域名注册信息的公共查询服务。当注册一个域名时,必须提供一些个人或组织信息,例如姓名、电子邮件地址、联系电话等。这些信息通常是公开的,可以通过 Whois 查询来获取。

        在渗透测试中,Whois 查询可以我们收集目标组织的关键信息。通过查询目标组织的域名注册信息,我们基本可以获得以下信息:

  1. 组织联系信息:包括名称、地址、电话号码和电子邮件地址。这些信息可以用于建立联系、进行社会工程攻击或者其他类型的攻击。

  2. 域名到期日期:了解域名何时到期可以帮助我们预测目标可能面临的安全风险。例如,如果域名即将到期,组织可能会忽略一些安全措施,使其易受攻击。

  3. DNS 服务器信息:这些信息可以揭示目标使用的 DNS 提供商,有时甚至可以提供与该组织相关的其他域名。

  4. 域名所有者历史记录:通过查看域名所有者的历史记录,我们可以了解组织背后的变化、合作伙伴关系或其他潜在的信息。

        总的来说:我们可以将这些信息用于制定针对目标组织的更有针对性的攻击策略,或者作为侦察阶段的一部分,以帮助了解目标环境。

子域名

        子域名是指在一个域名下面的更小的域名。通常,一个域名可以有多个子域名,每个子域名都可以有自己的主机或服务。例如,在域名example.com下,可以有子域名如www.example.com、mail.example.com等,其实就是前面的信息在换。 

子域名爆破

        子域名爆破是一种渗透测试技术,旨在通过尝试各种可能的子域名来发现目标域名下存在的子域名。我们可以使用自动化工具或脚本来进行子域名爆破,工具通常会生成可能的子域名列表,并尝试通过DNS查询确定哪些子域名是有效的。

        在渗透测试中,子域名爆破可以帮助我们发现目标可能忽略或未公开的子域名。这些子域名可能包含敏感信息、测试环境、未经授权的服务或其他潜在的安全风险。通过发现这些子域名,我们可以扩大对目标组织的攻击面,并进一步进行深入的渗透测试活动。

1.4 whois查询

方式1:

                       利用python第三方库python-whois查询,没有这个库,需要安装一下

pip install python-whois

      这个没什么技术含量,直接导入库进行利用就好了,可以看出返回了很多信息,当然,渗透中关注的是其中的获取到域名注册者的联系方式、注册时间、DNS服务器信息等,需要从这个获取的信息中进行提取关键信息即可,有时间将其完善一下.

from whois import whois
data = whois('www.baidu.com')
print(data)

方式2:

        通过爬虫将一些查询whois的网站(阿里,爱站)爬取下来,这里因为要写针对某个网站的爬取,还是比较麻烦的,不如使用现成的浏览器插件superSearchPlus工具效率更快,就不写了.

1.5 子域名查询

方式1:子域名爆破

       为什么要进行子域名爆破,使用第三方工具或是在线查询不是很好吗,作为一个渗透人员,要尽量避开大家都在使用的工具和字典,那么子域名爆破是最后也是当下最好的方式了,资产测绘平台也有查询不到的资产(未收录),当然也可以使用子域名爆破工具,都是可以的,唯一点就是建立自己的爆破字典,能够获取别人获取不到的资产.

1.5.1 One

      利用原理,是通过将字典中的字符读取出来,然后与主域名进行拼接,然后使用socket的方法查询ip地址,如果查询出ip地址,证明这个子域名存在,下面有百度做个示例.

# 方式1: 利用字段爆破进行查询
import socket
import time
# 子域名查询
def subdomain_collect():print('[+] 正在收集子域名信息...')  # 这个是我后面加的for sub in open('dic.txt', 'r'):sub = sub.replace('\n', '')  # 将每个子域名后的换行符替换为空url = f'{sub}.baidu.com'try:ip = socket.gethostbyname(url)print(f'[+] {url} -> {ip}')time.sleep(0.5)  # 避免因为查询过快而导致ip被封except Exception as e:passif __name__ == '__main__':subdomain_collect()

 

1.5.2 Two

      因为写批量收集的时候需要进行测试,所以根据上面的返回bing和百度的子域名的真实数据混合不存在的子域名制作一个小字典进行测试,因为本次代码,写出后没有出现任何问题,一次成功,所以也就没有最后的整合部分了.

      当然在运行的结果中也可以发现,出现多个域名对应同一个ip,因为本来百度和bing都使用了cdn技术,所以说很正常,后面也需要将代码改进,或是写一个将子域名反查ip相同的子域名进行去重.

# 方式1: 利用字典爆破进行查询
import socket
import time
# 子域名查询
def subdomain_collect(domain):with open(f'sub_{domain}.txt', 'a+') as w:print(f'[+] 正在收集{domain}子域名的信息...')w.write(f'[+] 收集{domain}子域名的信息如下:\n')for sub in open('test.txt', 'r'):sub = sub.replace('\n', '')  # 将每个子域名后的换行符替换为空url = f'{sub}.{domain}'try:ip = socket.gethostbyname(url)print(f'[+] {url} -> {ip}')w.write(f'[+] {url} -> {ip}\n')time.sleep(0.5)except Exception as e:passprint('\n')if __name__ == '__main__':for domain in open('domain.txt', 'r'):domain = domain.replace('\n', '')  # 将每个取出的域名后的换行符替换为空subdomain_collect(domain)

测试小字典

test.txt

a
ab
a2
abcd
abc
city
a1
cc
a3
josn
blog1
pmt
asd
cha
a4
version
okay
aa
ab

 domain.txt

baidu.com
bing.com

运行完代码后生成的两个子域名文件:

sub_baidu.com.txt

[+] 收集baidu.com子域名的信息如下:
[+] a.baidu.com -> 112.34.113.xxx
[+] ab.baidu.com -> 39.156.66.xxx
[+] abc.baidu.com -> 36.155.132.xxx
[+] city.baidu.com -> 112.34.111.xxx
[+] cc.baidu.com -> 112.34.111.xxx
[+] cha.baidu.com -> 163.177.17.xxx
[+] ab.baidu.com -> 39.156.66.xxx

sub_bing.com.txt

[+] 收集bing.com子域名的信息如下:
[+] a.bing.com -> 204.79.197.xxx
[+] ab.bing.com -> 13.107.21.xxx
[+] a2.bing.com -> 223.119.248.xx
[+] abcd.bing.com -> 204.79.197.xxx
[+] abc.bing.com -> 13.107.21.xxx
[+] city.bing.com -> 13.107.21.xxx
[+] a1.bing.com -> 223.119.248.xx
[+] cc.bing.com -> 13.107.21.xxx
[+] a3.bing.com -> 223.119.248.xx
[+] josn.bing.com -> 204.79.197.xxx
[+] blog1.bing.com -> 13.107.21.xxx
[+] pmt.bing.com -> 13.107.21.xxx
[+] asd.bing.com -> 13.107.21.xxx
[+] cha.bing.com -> 204.79.197.xxx
[+] a4.bing.com -> 223.119.248.xxx
[+] version.bing.com -> 13.107.21.xxx
[+] okay.bing.com -> 13.107.21.xxx
[+] aa.bing.com -> 13.107.21.xxx
[+] ab.bing.com -> 13.107.21.xxx

方式2:其他方式

通过子域名查询或是子域名枚举工具

      当然这种方式相信大家初学时都会使用通过将一些子域名查询网站,查询的子域名将其爬取下来,写到txt文本中火是csv中,使用常见工具进行枚举其实根本也是通过调用一些资产测绘平台的api或是工具自带的字典进行暴力枚举,根本上和我使用的这个基本上差不多,大家都在用,用烂了,很难搜集到别人搜集不到的资产,说到底,自己总结的别人没有的字典,才能发现新的大陆,这里我就不写了,大佬们写了很多工具和脚本调用资产测绘平台直接使用就可以了.

总结 

       本篇文章也是对上一篇的进一步利用吧,在对渗透过程中,还是需要对所属域名的所有者的信息进行一定的收集的,帮助我们制作对应的字典进行一些登录界面的爆破,当然在渗透过程中,主域名都是比较难啃的骨头,需要我们对子域名进行信息收集,然后进行进一步的利用.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCU功耗测量

功耗测量 一、相关概念二、功耗的需求三、测量仪器仪表测量连接SMU功能SMU性能指标 四、功耗测量注意点板子部分存在功耗MCU方面,可能存在干扰项仪器仪表方面 一、相关概念 静态功耗和动态功耗:动态功耗为运行功耗,功耗测量注重每MHz下的功耗…

DevOps文化对团队有何影响?

DevOps文化对团队有很多积极影响,包括提高团队效率、促进沟通与协作、提高产品质量和推动创新等方面。然而,实施DevOps文化也需要一定的挑战,如改变团队成员的观念、引入新的工具和流程等。因此,团队需要充分了解DevOps文化的价值…

【重磅开源】MapleBoot项目开发规范

基于SpringBootVue3开发的轻量级快速开发脚手架 🍁项目简介 一个通用的前、后端项目模板 一个快速开发管理系统的项目 一个可以生成SpringBootVue代码的项目 一个持续迭代的开源项目 一个程序员的心血合集 度过严寒,终有春日&#xff…

计算机网络-IS-IS基础配置实验

前面我们了解了IS-IS的一些基础理论,从建立邻接、链路状态数据库同步以及路由计算,现在开始学习下配置操作。 一、IS-IS配置 网络拓扑图: 拓扑图 IS-IS有Level级别的区分,Level-1可以是性能较低的设备只维护区域内的LSDB&#xff…

《R语言与农业数据统计分析及建模》学习——描述性统计分析

一、描述性统计概念和方法 1、概念和作用 描述性统计是对数据进行概括和描述,便于理解数据的特征、趋势和分布,帮助我们了解数据基本情况和总体特征,为后续更深入的数据分析和建模提供基础。 2、基础方法 (1)中心趋…

npm、yarn与pnpm详解

🔥 npm、yarn与pnpm详解 🔖 一、npm 🔍 简介: npm是随Node.js一起安装的官方包管理工具,它为开发者搭建了一个庞大的资源库,允许他们在这个平台上搜索、安装和管理项目所必需的各种代码库或模块。 &#…

CountDownLatch源码分析

1.创建 CountDownLatch latch new CountDownLatch(5); 2.latch.countDown(); 将count执行减一操作,当count为0时,等待中的线程会被唤醒 SIGNAL (值为-1): 表示后继节点需要被唤醒。当一个节点释放锁的时候,会唤醒它的后继节点…

openjudge_2.5基本算法之搜索_1998:寻找Nemo

题目 1998:寻找Nemo 总时间限制: 2000ms 内存限制: 65536kB 描述 Nemo 是个顽皮的小孩. 一天他一个人跑到深海里去玩. 可是他迷路了. 于是他向父亲 Marlin 发送了求救信号.通过查找地图 Marlin 发现那片海像一个有着墙和门的迷宫.所有的墙都是平行于 X 轴或 Y 轴的. 墙的厚度可…

2010-2023年“国家级大数据综合试验区”试点城市DID匹配数据

2010-2023年国家级大数据综合试验区试点城市DID匹配数据 1、时间:2010-2023年 2、来源:国家发展改革委、工业和信息化部、ZY网信办发函批复的试验区 3、指标:行政区划代码、年份、所属省份、地区、国家级大数据综合试验区、最早设立年份 …

ELK创建仪表盘

创建仪表盘步骤: 一、保存search二、生成饼图三、创建仪表盘 一、保存search 首先保存一段时间内的search,可以添加想要的字段,并保存这个search方便下次直接打开该search,并方便在可视化和仪表盘中使用该search. 二、生成饼图…

c++中的函数

一、函数概述 作用:将一段经常使用的代码封装起来,减少重复代码 一个较大的程序,一般分为若干个程序块,每个程序块实现特定功能。 二、函数的定义 函数定义主要有5个步骤: 返回值类型函数名参数列表函数体语句ret…

Laravel 6 - 第十二章 控制器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

QService 服务 指令引用的“0x00000000”内存。该内存不能为“read“

QtServiceBase类在Qt框架中是设计用来简化Windows服务或类Unix守护进程创建的。这个类提供了一组方法和属性,使得开发者能够专注于服务逻辑,而不必担心操作系统层面的细节。下面是一些QtServiceBase类中常用的属性和方法: 常用方法 start():…

【Linux】Linux权限管理详解

🌱博客主页:青竹雾色间 🌱系列专栏:Linux 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 1. Linux权限概念2. 文件访问者分类a) 文件和目录的访问者:b) 文件类型和访问权限 3. 文件权限值的表…

安装VCenter 7 对硬件资源的需求

安装VMware vCenter Server 7.x 对硬件资源的需求主要包括以下方面: 服务器硬件: 处理器:64位 x86架构,推荐采用多核CPU以支持高并发管理和运行多个虚拟机。具体数量取决于vCenter Server将管理的虚拟机规模及复杂度。内存&#x…

第四百七十七回

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容,本章回中将介绍GetMaterialApp组件.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经…

K-近邻算法的 sklearn 实现

实验目的与要求 掌握基于 K-近邻分类算法的编程方法通过编程理解 K-近邻分类算法和该算法的基本步骤 实验器材 硬件:PC 机(参与实验的学生每人一台)软件环境:Python3.7 Pycharm 实验内容 使用 sklearn 库中的 neighbors 模块实…

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程 XGP这个游戏平台小伙伴们并不陌生吧,它是微软Xbox游戏部门推出的游戏租赁制会员服务,主要用于主机和PC两个平台。这个平台的会员就可以免费享受多款大制作游戏,而且每个月还会自动更新…

Java中的运算符

运算符是用于数学函数、一些特殊的赋值语句和逻辑比较方面的特殊符号。 赋值运算符(“”) 赋值运算符是一个二元运算符(即对两个操作数进行处理),功能是将右侧的操作数赋值给左侧的操作数。 int a 100; 该表达式就…

李廉洋:4.24-4.25现货黄金,WTI原油区间震荡,走势分析。

黄金消息面分析:金银近日回调。随着伊朗方面淡化以色列最新反击,中东地区局势没有进一步发酵下,风险溢价下降金银出现较大幅度调整。由于近期高于预期的通胀数据,降息预期持续降温。昨日疲软的美国PMI以及以色列在加沙攻击的加剧支…