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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
.cn 域名,1个 12个月
简介: 本文介绍了关于渗透测试中如何检测网站是否使用CDN(内容分发网络)的方法。CDN是一种优化网络内容传输的技术,通过在多个地理位置部署服务器节点,将网站内容缓存,以加快内容加载速度。在渗透测试中,网站使用CDN可能会影响IP地址的判断和进一步渗透,通过两种方式来进行判断,最后经过不断改进与调试,达到批量监测的功能。

前言

版权声明:本文为本博主在CSDN的原创文章搬运而来,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                            

原文链接:https://blog.csdn.net/weixin_72543266/article/details/137815965


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


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) # 可以进行注释

image.gif

输出的结果:发现存在乱码

��Ȩ��Ӧ��:
服务器:  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

image.gif

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

image.gif

       

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")

image.gif

image.gif

增加输入功能

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")

image.gif

image.gif

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")

image.gif

问题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")

image.gif

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")

image.gif

命令框中:


cdn存在.txt

这里因为是以追加(a+)的方式写入,所以会出现第一行为空行


总结

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

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
域名解析 缓存 网络协议
互联网并发与安全系列教程(04) - CDN内容分发
互联网并发与安全系列教程(04) - CDN内容分发
95 0
|
7月前
|
域名解析 人工智能 安全
【CDN产品测评-笔记】探索云服务中的安全和性能增强功能
【CDN产品测评-笔记】探索云服务中的安全和性能增强功能
82 8
【CDN产品测评-笔记】探索云服务中的安全和性能增强功能
|
安全 云计算 CDN
阿里云产品体系分为6大分类——云计算基础——CDN与边缘——安全加入SCDN
阿里云产品体系分为6大分类——云计算基础——CDN与边缘——安全加入SCDN自制脑图
109 1
阿里云产品体系分为6大分类——云计算基础——CDN与边缘——安全加入SCDN
|
CDN
Vue3.js快速开发CDN引入测试模板
Vue3.js快速开发CDN引入测试模板
446 0
|
前端开发
前端工程化-cdn-server push-node server-pwa-微前端-设计开发
前端工程化-cdn-server push-node server-pwa-微前端-设计开发
93 0
前端工程化-cdn-server push-node server-pwa-微前端-设计开发
|
安全 CDN
《CDN政企边缘安全加速产品发布》电子版地址
《CDN政企边缘安全加速产品发布》PPT
126 0
《CDN政企边缘安全加速产品发布》电子版地址
|
缓存 安全 数据建模
|
云安全 数据采集 机器学习/深度学习
如何构建企业出海的"免疫力"?深入解读阿里云CDN安全能力
随着信息技术快速发展与应用,产业数字化和智能化趋势正日益加深,企业信息安全与防护被提升到前所有未有的高度。阿里云CDN经过10多年的技术发展时间,已逐步构筑一个边缘+云的安全网络立体防护体系,包含了全链路安全传输、常见攻击类型的边缘防御、企业级独享资源部署、运维以及内容安全保障机制,为企业打造安全出海的网络运营环境。
2192 0
如何构建企业出海的"免疫力"?深入解读阿里云CDN安全能力
|
云安全 安全 网络安全
阿里云CDN/DCDN加速安全助力企业出海,原生防护延伸至边缘
保护源头、保持站点在线、保障用户数据安全。
496 0
阿里云CDN/DCDN加速安全助力企业出海,原生防护延伸至边缘
|
云安全 边缘计算 缓存
更便捷、更安全、更极速的新一代CDN:阿里云CDN年度产品升级发布
相信大家对CDN都不陌生。它的原理是将源站内容分发到最接近用户的节点,使得用户可以就近取得所需的内容,从而提升用户的响应速度和成功率。然而在企业全面数字化的进程中,CDN作为互联网流量的基础设施,也被赋予了更多能力。如何帮助企业不断降低使用门槛,提高使用体验呢?1月6日,阿里云集中进行年度CDN产品升级发布,解读全站加速(DCDN)离线日志转存新方案、边缘流量管理、边缘serverless等服务背后的技术与应用,为用户展示更便捷、更安全、更极速的新一代CDN加速能力。
3594 0
更便捷、更安全、更极速的新一代CDN:阿里云CDN年度产品升级发布