安全編程|判斷目標是否使用CDN腳本編寫

在這裏插入圖片描述

01前言

現在很多大網站基本上都使用了CDN進行加速訪問,方便快速響應用戶的請求,提高用戶訪問體驗。這種做法對於我們日常的滲透測試來說,CDN的虛假IP確實很乾擾我們的測試。所以判斷出是否使用CDN對我們來說至關重要。

02基本原理

根據 CDN 的工作原理,如果網站使用了 CDN,那麼從全國各地訪問網站的 IP 地址是各個 CDN 節點的 IP 地址。在互聯網上有許多網站提供 PING 命令的服 務,即從該網站全國各地的節點向目標網站發送 PING 命令,返回目標網站接收 數據包的 IP 地址、IP 歸屬地和響應時間等信息。以https://www.wepcc.com/爲例,如圖所 示,對 https://www.baidu.com 進行 PING 命令測試,根據 IP 地址和歸屬地不同, 可以判斷 https://www.baidu.com 使用了 CDN。爲了防止信息泄露,將部分 IP 和 歸屬地信息隱去:
在這裏插入圖片描述

03腳本程序設計

根據基本原理對腳本程序的設計流程圖如下:
在這裏插入圖片描述

04腳本程序實現

根據程序流程圖,實現其程序。如下:

def iscdn(url):
    """
    判斷目標url是否存在CDN
    :param url: 目標url
    :return: True or False
    """
    result = []
    headers = get_ua()
    # wepcc.com用於ping測試的服務器id編號
    for i in (34,15,27,1,32,8,21,14,28,7,17,19,4,31,25):
        data = {'node':i,'host':url}
        r = requests.post('https://www.wepcc.com/check-ping.html',headers = headers,data=data)
        l = re.findall(r'\d+.\d+.\d+.\d+', r.text)
        result.append(l[0])
    if len(set(result)) > 1:
        return True
    else:
        return False

其中get_ua()實現請求頭的隨機配置,實現如下:

from fake_useragent import UserAgent

HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'User-Agent': "",
    'Referer': "",
    'X-Forwarded-For': "",
    'X-Real-IP': "",
    'Connection': 'keep-alive',
}

#產生隨機的hearder的部分隨機參數值
def get_ua():
    ua = UserAgent()
    key = random.random() * 20
    #產生隨機0—好麼20位子字符串
    referer = ''.join([random.choice(string.ascii_letters + string.digits) for _ in range(int(key))])
    referer = 'www.' + referer.lower() + '.com'
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    HEADERS["User-Agent"] = ua.random
    HEADERS["Referer"] = referer
    HEADERS["X-Forwarded-For"] = HEADERS["X-Real-IP"] = ip
    return HEADERS

05腳本結果演示

測試站點:

①百度:www.baidu.com 使用了CDN

②我的博客:www.saodi.best 未使用CDN

測試結果:

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章