安全开发实战(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:
            pass


if __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:
                pass
    print('\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或是工具自带的字典进行暴力枚举,根本上和我使用的这个基本上差不多,大家都在用,用烂了,很难搜集到别人搜集不到的资产,说到底,自己总结的别人没有的字典,才能发现新的大陆,这里我就不写了,大佬们写了很多工具和脚本调用资产测绘平台直接使用就可以了.

总结 

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java.lang.OutOfMemoryError: WrappedJavaFileObject --idea启动项目内存溢出解决

java.lang.OutOfMemoryError 解决方案 现象 项目开发时,启动idea,报内存溢出错误,如下: java: java.lang.OutOfMemoryError: WrappedJavaFileObject.....解决 通过 调整idea 的 配置参数 来调整 jvm 大小解决。 -Xmx8192m-Xm…

C++进修——C++基础入门

初识C 书写HelloWorld #include <iostream> using namespace std;int main() {cout << "HelloWorldd" << endl;system("pause");return 0; }注释 作用&#xff1a;在代码中加一些说明和解释&#xff0c;方便自己或其他程序员阅读代码…

二分法问题

日升时奋斗&#xff0c;日落时自省 目录 1、二分法 2、二分法问题 2.1 、在排序数组中查找元素的第一个和最后一个位置 2.2、搜索插入位置 2.3、山脉数组的峰顶索引 2.4、0-n-1中缺失的数字 1、二分法 二分法是比较简单的一种查找算法&#xff0c;但是效率很高&#xff0…

【创建型模式】原型模式

一、原型模式概述 原型&#xff08;Prototype&#xff09;模式的定义&#xff1a;用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里&#xff0c;原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&#xf…

【Qt】Qt安装包、源码、子模块(submodules)下载

1、Qt 4.0 ~ Qt5.14 Qt 4.0 ~ Qt5.14 离线安装包、源码和子模块(submodules)源码下载路径: https://download.qt.io/new_archive/qt/以Qt5.7.1为例,注意子模块都是源码,需要独立编译 2、Qt5.15 ~ Qt6.7 Qt5.15 ~ Qt6.7源码和子模块(submodules)源码下载路径: htt…

分类算法——决策树(五)

认识决策树 决策树思想的来源非常朴素&#xff0c;程序设计中的条件分支结构就是if-else结构&#xff0c;最早的决策树就是利用这类结构分割数据的一种分类学习方法。 决策树分类原理详解 为了更好理解决策树具体怎么分类的&#xff0c;通过一个问题例子&#xff1a; 问题…

【MIT6.824】lab3 Fault-tolerant Key/Value Service 实现笔记

引言 lab3A的实验要求如下&#xff1a; Your first task is to implement a solution that works when there are no dropped messages, and no failed servers. You’ll need to add RPC-sending code to the Clerk Put/Append/Get methods in client.go, and implement Pu…

HiveSql中的函数家族(二)

一、窗口函数 1、什么是窗口函数 在 SQL 中&#xff0c;窗口函数&#xff08;Window Functions&#xff09;是一种特殊的函数&#xff0c;它允许在查询结果集的特定窗口&#xff08;通常是一组行&#xff09;上执行聚合、分析和计算操作&#xff0c;而无需聚合整个结果集。窗口…

使用Python工具库SnowNLP对评论数据标注(二)

这一次用pandas处理csv文件 comments.csv import pandas as pd from snownlp import SnowNLPdf pd.read_csv("C:\\Users\\zhour\\Documents\\comments.csv")#{a: [1, 2, 3], b: [4, 5, 6], c: [7, 8, 9]}是个字典 emotions[] for txt in df[sentence]:s SnowNLP(…

接收区块链的CCF会议--ICSOC 2024 截止7.24

ICSOC是CCF B类会议&#xff08;软件工程/系统软件/程序设计语言&#xff09; 2023年长文短文录用率22% Focus Area 4: Emerging Technologies Quantum Service Computing Digital Twins 3D Printing/additive Manufacturing Techniques Blockchain Robotic Process Autom…

【QT+OpenCV】车牌号检测 学习记录 遇到的问题

【QTOpenCV】车牌号检测 学习记录 首先在QT里面配置好OpenCV .pro文件中加入&#xff1a; INCLUDEPATH G:/opencv/build/include LIBS -L"G:/opencv/build/x64/vc14/lib"\-lopencv_core \-lopencv_imgproc \-lopencv_highgui \-lopencv_ml \-lopencv_video \-lo.c…

Meta Llama 3强势来袭:迄今最强开源大模型,性能媲美GPT-4

前言 Meta的最新语言模型Llama 3已经发布&#xff0c;标志着在大型语言模型&#xff08;LLM&#xff09;领域的一次重大突破&#xff0c;其性能在行业内与GPT-4相媲美。此次更新不仅提升了模型的处理能力和精确性&#xff0c;还将开源模型的性能推向了一个新的高度。 Huggingf…

Docker八股总结

1. 容器和虚拟机的区别 传统虚拟机技术是虚拟出一套硬件后&#xff0c;在其上运行一个完整操作系统&#xff0c;在该系统上再运行所需应用进程&#xff1b;而容器内的应用进程直接运行于宿主的内核&#xff0c;容器内没有自己的内核&#xff0c;而且也没有进行硬件虚拟。因此容…

2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统(二)

09 电路设计 前面介绍了系统的硬件框图如下&#xff1a; 硬件基本分为三块&#xff0c;两个摄像节点&#xff0c;一个终端节点。 1. 摄像节点硬件 摄像节点由一个DE10-Nano开发板和一个D8M摄像头实现&#xff0c;DE10-Nano开发板的HDMI接口外接HDMI显示器来显示拍摄到的视频。…

Flask + Bootstrap vs Flask + React/Vue:初学者指南

在这篇博客文章中&#xff0c;我们将比较 Flask Bootstrap 和 Flask React/Vue 这两种技术栈&#xff0c;以帮助初学者了解哪种组合更适合他们的项目需求。我们将从学习曲线、易用性、依赖管理、构建部署和路由定义等方面进行比较。 学习曲线 Flask 是一个基于 Python 的轻…

信息系统项目管理师0055:优化和持续改进(4信息系统管理—4.1管理方法—4.1.5优化和持续改进)

点击查看专栏目录 文章目录 4.1.5优化和持续改进1.定义阶段2.度量阶段3.分析阶段4.改进/设计阶段5.控制/验证阶段4.1.5优化和持续改进 优化和持续改进是信息系统管理活动中的一个环节,良好的优化和持续改进管理活动能够有效保障信息系统的性能和可用性等,延长整体系统的有效使…

偏微分方程算法之一阶双曲差分法

目录 一、研究目标 二、理论推导 2.1 引言 2.2 迎风格式 2.3 完全不稳定差分格式 2.4 蛙跳格式&#xff08;Leapfrog&#xff09; 2.5 Lax-Friedrichs格式 2.6 Lax-Wendroff格式 2.7 Beam-Warming格式 2.8 隐格式 2.9 Courant-Friedrichs-Lewy条件&#xff08;CFL条…

一文学会时序约束

主时钟约束命令/生成时钟约束命令IO输入输出延迟约束命令及效果最大最小延迟命令及作用多周期路径怎么约束什么情况设置伪路径时钟组设置的三个选项 如果不了解时序分析可以先看下下面这篇文章&#xff1a; 数字IC/FPGA——时序分析 目录 1.时钟约束&#xff08;1&#xff09;…

线性代数---行列式的性质

1. 行列式的行与列(按原顺序)互换

redis的数据结构报错

文章目录 redis的数据结构报错Redis使用LocalDateTime报错问题 redis的数据结构报错 Redis使用LocalDateTime报错问题 SpringBoot整合Redis时&#xff0c;使用LocalDate以下报错 org.springframework.data.redis.serializer.SerializationException: Could not read JSON: C…