安全开发实战(1)--Cdn

server/2024/9/25 23:22:36/

目录

安全开发专栏

CDN介绍

1.信息收集阶段

1.1判断CDN是否存在

1.1.1, One

1.1.2,Two(改进)

1.1.3,进行整合

增加输入功能

1.1.4 批量读取+监测+存储(进行测试)

问题1:

问题2:

解决方案:

1.1.4 基本编写完成

命令框中:

cdn存在.txt

总结


这里我是根据整个渗透测试的流程进行安全开发,后期有时间,将所有写的整合为一个GUI工具或是web平台

安全开发专栏

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

 

CDN介绍

        CDN,全称为内容分发网络(Content Delivery Network),是一种优化网络内容传输的技术手段

        CDN的工作原理主要是通过在多个地理位置部署服务器节点,将网站的内容如网页、图片、视频等缓存到这些节点上。当用户请求访问某个网站时,CDN会根据用户的地理位置,将请求重定向到距离用户最近的服务器节点,从而加快内容的加载速度,提高访问效率。

     当然在渗透中,网站存在cdn会影响我们判断网站的真实IP,会影响我们的进一步渗透 

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:210c2409:8c20:6:1d55:0:ff:b09c:7d7736.155.132.7636.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:7d772409:8c20:6:1135:0:ff:b027:210c36.155.132.336.155.132.76
Aliases:  www.baidu.com

        

1.1.3,进行整合

        这里为了输出结果更加显眼也为了后续能够为写批量监测方便,使用了第三方库,将目标存在CDN输出的颜色为红色

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:

        存储数据以及输出数据时,第一行读入的数据总是会出现,如图所示的状况,并且存入数据后也会出现如图所示的状况

        第一次尝试解决,是将在读入数据时,指定数据从第二行数据读起并将url.txt第一行设置为空行,结果返回了数组,并且返回了失败数据,但是发现了换行符,考虑到是因为自动增加换行符的原因

解决方案:

                                在拼接之前,先去掉换行符,在写入数据时重新加上换行符

            
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+)的方式写入,所以会出现第一行为空行

总结

    渗透学习过程中,不仅需要学习实战技巧,更要懂得开发实战工具,来辅助自己学习和进行进一步渗透利用,这里是围绕整个渗透测试的流程来进行开发,整体适合小白,当然我现在也在学习阶段,还是会出现很多开发过程中的问题,需要进行进一步解决.

http://www.ppmy.cn/server/5398.html

相关文章

HttpServletResponse HttpServletRequest

HttpServletResponse 和 HttpServletRequest 是 Java Servlet API 中的两个核心接口,它们分别代表了 HTTP 响应和 HTTP 请求。在基于 Java 的 Web 应用中,特别是使用 Servlet 技术时,这两个接口被广泛应用。 HttpServletRequest HttpServle…

机器学习系统的设计

1.混淆矩阵 混淆矩阵作用就是看一看在测试集样本集中: 真实值是 正例 的样本中,被分类为 正例 的样本数量有多少,这部分样本叫做真正例(TP,True Positive),预测为真,实际为真真实值…

webpack or vite? vuex or pinia?

2022.2.18, 新建一个vue3的项目,过程如下: 目录结构如下: 当还在犹豫选择webpack还是vite,vuex或者pinia的时候,尤大大已经给出了默认选择,vite && pinia。

Git基本使用

找一个文件夹 git init 代码仓库,里面的内容千万不要动 新建一个文件,如test.txt git add test.txt //git add . //all 暂存区 git commit -m "新增了一个点赞" 最常用的流程: 修改一个文件 git add git commit git log //查…

论文笔记:LayoutNUWA: Revealing the Hidden Layout Expertise of Large Language Models

iclr 2024 reviewer 评分 568 图形布局生成大模型 1 intro 现有方法主要将布局生成视为一个数值优化任务,专注于量化方面,同时忽略了布局的语义信息,如各布局元素之间的关系。论文提出了LayoutNUWA,这是第一个将布局生成视为代…

Navicat 干货 | 了解 PostgreSQL 规则

PostgreSQL 是一个强大的开源关系型数据库管理系统,为增强数据管理和操作提供了丰富的功能。这些功能中包含了规则,这是一种用于控制数据库内部查询和命令处理方式的机制。本文将探讨 PostgreSQL 规则的工作原理,以及它们与触发器的区别&…

AttributeError: can‘t set attribute ‘lines‘

目录 报错代码: 解决方法: 示例完整代码: 报错代码: ax.lines [] 解决方法: 当你尝试使用 ax.lines [] 来清除一个图表的线条,并遇到 AttributeError: cant set attribute 错误时,这表明…

javaEE初阶——多线程(五)

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享关于多线程的文章第五篇关于 多线程代码案例二 阻塞队列 如果有不足的或者错误的请您指出! 目录 2.阻塞队列2.1常见队列2.2 生产者消费者模型有利于进行解耦合程序进行削峰填谷…