前言 :
子域名在渗透测试之中的地位不低,当渗透测试在某一个大型的站点的时候,大多数情况下,主域名的站点是几乎没有什么漏洞的,这个时候我们应该去测试旗下的旁站,子域名等。
渣渣白准备三种思路和方法去实现这子域名收集。(都是渣渣白的辛苦查询资料和总结想到方法)
第一种:
利用一些在线网站查询子域名,把查询之后的结果使用爬虫爬出数据。下面是我找到可以使用的网站。
1.1 网站: https://dns.aizhan.com
1.2 网站: http://blast.uixsj.cn/
第二种:
-
利用谷歌hack语法查询收集子域名
-
使用谷歌语法site:+域名查询,把查询的结果的利用爬虫爬取出来。
-
第三种:
-
加载字典爆破子域名,利用ping命令检测是否存在
-
(ping命令是一个黑客常用的命令,功能强大,我就不多说了。)
由于渣渣白的有拖延症的习惯,三种方法我就写了第三种(以后有机会就补上)。
下面我分享一下我编写的经验:
#开发环境python2.7(为什么使用2.7呢?2.7在明年的时候就都不维护,我也问过这个问题(向大佬提问),大佬是这么说的:你告诉我sqlmap什么时候用3了,sqlmap的强大我就不解释了。)
#开发工具:pycharm
# 采用多线程开发(默认100),检测结果保存在一个ip.csvt文件之中
# 在Windows下cmd中的ping命令
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/3/30 15:20
# @Author : 清水
# @File : Ping.py
# @Software: PyCharm
# @Function :使用ping命令检测某些网段是否被使用
# 采用多线程开发(默认100),检测结果保存在一个result.txt文件之中
# 在Windows下cmd中的ping命令
# 建议在集成环境下载运行(例如pycharm)不然会弹出一堆cmd命令框
import csv
import threading
from queue import Queue
import sys
from subprocess import PIPE, Popen
import os
class Ping(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self._queue = queue
def run(self):
while not self._queue.empty():
ip = self._queue.get()
check_ip = Popen('ping ' + ip, stdin=PIPE, stdout=PIPE)
data = check_ip.stdout.read()
with open('D:\Python\Ai_Ping\ip.csv', 'a+', encoding='utf-8', newline='') as file:
csvwriter = csv.writer(file)
if "TTL" in str(data):
csvwriter.writerow([str(ip)])
def main():
"""
调用Ping_Ip函数
:return:
"""
# 输入ping的网段地址
ip = input("请输入一个网段(例如10.1.5):")
threads = []
# 线程数
threads_count = 100
# 队列
queue = Queue()
for i in range(1, 255):
# 网段传入
queue.put("" + ip + "." + str(i))
for i in range(threads_count):
# 线程的添加
threads.append(Ping(queue))
# 线程的开始与加入
for i in threads:
i.start()
for i in threads:
i.join()
print("存活ip已经保存在ip.csv文件中。")
if __name__ == '__main__':
main()