目录
这里我是根据整个渗透测试的流程进行安全开发,后期有时间,将所有写的整合为一个GUI工具或是web平台
安全开发专栏
安全开发实战http://t.csdnimg.cn/25N7H
CDN介绍
1.信息收集阶段
1.1判断CDN是否存在
1.1.1, One
# 识别目标是否存在CDN
# 执行nslookup命令,通过返回结果的ip数目来判断
# os.system: 结果只能打印出来看
# cdn_data = os.system("nslookup www.baidu.com")
# print(cdn_data)
# cdn_cmd = os.popen("nslookup www.baidu.com")
import os
# nslookup: 这是一个标准的网络管理命令行工具,用于查询DNS记录,以确定给定域名的IP地址
cdn_cmd = os.popen("nslookup www.baidu.com")
cdn_data = cdn_cmd.read()
print(cdn_data) # 可以进行注释
输出的结果:发现存在乱码
��Ȩ��Ӧ��:
服务器: UnKnown
Address: fe80::2af7:d6ff:fe96:9e70
名称: www.a.shifen.com
Addresses: 2409:8c20:6:1135:0:ff:b027:210c
2409:8c20:6:1d55:0:ff:b09c:7d77
36.155.132.76
36.155.132.3
Aliases: www.baidu.com
1.1.2,Two(改进)
# 通过指定编码方式为gbk解决存在乱码
import subprocess
# nslookup: 这是一个标准的网络管理命令行工具,用于查询DNS记录,以确定给定域名的IP地址
cdn_cmd = subprocess.Popen(["nslookup", "www.baidu.com"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
cdn_data, error = cdn_cmd.communicate()
cdn_data = cdn_data.decode("gbk")
print(cdn_data)
服务器: UnKnown
Address: fe80::2af7:d6ff:fe96:9e70
名称: www.a.shifen.com
Addresses: 2409:8c20:6:1d55:0:ff:b09c:7d77
2409:8c20:6:1135:0:ff:b027:210c
36.155.132.3
36.155.132.76
Aliases: www.baidu.com
1.1.3,进行整合
import os
# 用于打印带颜色的文字
from colorama import init
from colorama import Fore
# nslookup: 这是一个标准的网络管理命令行工具,用于查询DNS记录,以确定给定域名的IP地址
cdn_cmd = os.popen("nslookup www.baidu.com")
cdn_data = cdn_cmd.read()
print(cdn_data) # 测试时使用,测试完后,直接注释,具体看个人操作
# 通过.的个数;来判断,如果没有cdn,那么.的个数是8-10个,.超过10个基本判断有cdn
# 当然如果出现网络问题.也会超过10个具体需要增加一些其他的判断
point_count = cdn_data.count(".")
if point_count > 10:
print(Fore.RED + "目标存在CDN")
# print("目标存在CDN")
else:
print("目标不存在CDN")
增加输入功能
import os
# 用于打印带颜色的文字
from colorama import Fore
# nslookup: 这是一个标准的网络管理命令行工具,用于查询DNS记录,以确定给定域名的IP地址
url = str(input("请输入要监测cdn的url:"))
cdn_cmd = os.popen(f"nslookup {url}")
cdn_data = cdn_cmd.read()
print(cdn_data)
# 通过.的个数;来判断,如果没有cdn,那么.的个数是8-10个,.超过10个基本判断有cdn
# 当然如果出现网络问题.也会超过10个具体需要增加一些其他的判断
point_count = cdn_data.count(".")
if point_count > 10:
print(Fore.RED + f"{url}存在CDN")
# print("目标存在CDN")
else:
print(f"{url}不存在CDN")
1.1.4 批量读取+监测+存储(进行测试)
这里会因为第一次写的那个会输出乱码数据,这里,还是使用第二种,解决乱码,并进行初试
url.txt
www.baidu.com www.bing.com
import subprocess
# 用于打印带颜色的文字
from colorama import Fore
with open("url.txt", "r") as f:
for url in f.readlines(): # 读取每一行
# nslookup: 这是一个标准的网络管理命令行工具,用于查询DNS记录,以确定给定域名的IP地址
cdn_cmd = subprocess.Popen(["nslookup", "www.baidu.com"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
cdn_data, error = cdn_cmd.communicate()
cdn_data = cdn_data.decode("gbk")
# print(url)
# print(cdn_data)
# 通过.的个数;来判断,如果没有cdn,那么.的个数是8-10个,.超过10个基本判断有cdn
# 当然如果出现网络问题.也会超过10个具体需要增加一些其他的判断
point_count = cdn_data.count(".")
if point_count > 10:
with open("cdn存在.txt", "a") as w:
cdn_url = f"{url}存在CDN"
w.write(cdn_url+"\n")
print(Fore.RED + f"{url}存在CDN")
# print(f"{url}存在CDN")
else:
with open("cdn不存在.txt", "a") as w:
n_cdn_url = f"{url}不存在CDN"
w.write(n_cdn_url+"\n")
print(f"{url}不存在CDN")
问题1:
写入数据时,不能增加颜色,不然会出现写入数据中出现
[31mwww.baidu.com 存在CDN[31mwww.bing.com存在CDN
问题2:
存储数据以及输出数据时,第一行读入的数据总是会出现,如图所示的状况,并且存入数据后也会出现如图所示的状况
解决方案:
在拼接之前,先去掉换行符,在写入数据时重新加上换行符
with open("cdn存在.txt", "a") as w:
url = str(url).rstrip()
cdn_url = f"{url}存在CDN"
w.write(cdn_url+"\n")
print(Fore.RED + f"{url}存在CDN")
1.1.4 基本编写完成
import subprocess
# 用于打印带颜色的文字
from colorama import Fore
with open("url.txt", "r") as f:
for url in f.readlines(): # 读取每一行
# nslookup: 这是一个标准的网络管理命令行工具,用于查询DNS记录,以确定给定域名的IP地址
cdn_cmd = subprocess.Popen(["nslookup", "www.baidu.com"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
cdn_data, error = cdn_cmd.communicate()
cdn_data = cdn_data.decode("gbk")
# print(url)
# print(cdn_data)
# 通过.的个数;来判断,如果没有cdn,那么.的个数是8-10个,.超过10个基本判断有cdn
# 当然如果出现网络问题.也会超过10个具体需要增加一些其他的判断
point_count = cdn_data.count(".")
if point_count > 10:
with open("cdn存在.txt", "a") as w:
url = str(url).rstrip()
cdn_url = f"{url}存在CDN"
w.write(cdn_url+"\n")
print(Fore.RED + f"{url}存在CDN")
# print(f"{url}存在CDN")
else:
with open("cdn不存在.txt", "a") as w:
url = str(url).rstrip()
n_cdn_url = f"{url}不存在CDN"
w.write(n_cdn_url+"\n")
print(f"{url}不存在CDN")
命令框中:
cdn存在.txt
这里因为是以追加(a+)的方式写入,所以会出现第一行为空行