GlobalProtect门户的PAN-OS版本检测方法

admin 2022年12月22日13:56:55评论493 views字数 3822阅读12分44秒阅读模式

前言

Palo Alto Networks PAN-OS 是美国 Palo Alto Networks 公司为其防火墙设备开发的操作系统,而 GlobalProtect 是一套网络防护软件,以提供防火墙监控及威胁预防等功能。PAN-OS 版本众多,在许多版本中, GlobalProtect portal 或 GlobalProtect gateway interfaces 都存在历史漏洞如 CVE-2020-2021(认证绕过漏洞)、CVE-2020-2034(操作系统命令注入漏洞)和CVE-2021-3064(远程代码执行漏洞),漏洞影响的版本如下:

CVE编号 影响版本
CVE-2020-2021 PAN-OS 9.1.* <9.1.3
PAN-OS 9.0.* <9.0.9
PAN-OS 8.1.* <8.1.15
PAN-OS 8.0.*
CVE-2020-2034 PAN-OS 9.1.* <9.1.3
PAN-OS 8.1.* <8.1.15
PAN-OS 9.0.* <9.0.9
PAN-OS 8.0.*
PAN-OS 7.1.*
CVE-2021-3064 PAN-OS 8.1.*<8.1.17

因此,通过检测 GlobalProtect 门户的 PAN-OS 版本以确定目标是否存在漏洞变得尤为关键。但由于 GlobalProtect 门户没有明确显示其底层软件版本,因此单从外部角度来看,很难判断PAN-OS版本。本文描述 GlobalProtect 门户的 PAN-OS 版本检测方法,并编写自动化脚本实现版本检测。

检测原理

通过curl指令向 GlobalProtect 门户发送 http 请求,发现在Response Headers中存在ETagLast-Modified字段,如下:

$ curl -skI https://example.com/global-protect/login.esp
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
ETag: "6ed55e85022f"

检查ETag的最后8个字符,我们得到了十六进制纪元时间5e85022f,以十进制格式表示为1585775151。接着将这个纪元时间转换为人类可读的格式:

$ date -d @1585775151
Thu 02 Apr 2020 05:05:51 CST

得到的日期便是 PAN-OS 相应版本的发布日期(或修订日期),PAN-OS 相应版本发布日期如下图所示。GlobalProtect门户的PAN-OS版本检测方法详细发布日期如version-table.txt所示。

7.0.1      Jul  3   2015
7.0.2      Aug  21  2015
7.0.3      Oct  8   2015
7.0.4      Dec  12  2015
7.0.5      Jan  30  2016
8.1.10     Aug  22  2019
8.1.11     Oct  13  2019
8.1.12     Dec  11  2019
8.1.14     Apr  2   2020
9.0.3      Jul  10  2019
9.1.1      Jan  24  2020
9.1.2      Mar  30  2020
9.1.2-h1   Apr  9   2020
9.1.3      Jun  20  2020
9.1.3-h1   Jun  26  2020
...

通过查找,我们发现该 PAN-OS 版本为8.1.14,因此容易受到认证绕过漏洞CVE-2020-2021和远程代码执行漏洞CVE-2021-3064的攻击,因此应该进行修补。通过此方法,将得到的ETag值与特定的 PAN-OS 版本进行了关联,从而可以判断目标是否存在被攻击的风险,从这个角度讲,此方法可以为得到全网中 GlobalProtect 的资产信息提供服务。

代码实现

  • 加载version-table.txt文件,为后续 PAN-OS 版本检测做准备;
def load_version_table(version_table: str) -> dict:
    with open(version_table, "r") as f:
        entries = [line.strip().split() for line in f.readlines()]
    return {
        e[0]: datetime.datetime.strptime(" ".join(e[1:]), "%b %d %Y").date()
        for e in entries
    }
  • 发送http请求得到ETag,再调用get_matches函数进行匹配;
def check_date(version_table: dict, date: datetime.date) -> list:
    matches = []
    for n in [0, 1, -1, 2, -2]:
        nearby_date = date + datetime.timedelta(n)
        versions = [
            version for version, date in version_table.items() if date == nearby_date
        ]
        if not len(versions):
            continue
        # 当n == 0 时为精准匹配, n !== 0 时为模糊匹配 
        precision = "exact" if n == 0 else "approximate"
        append = True
        for match in matches:
            if match["precision"] == precision:
                append = False
        if append:
            matches.append(
                {
                    "date": nearby_date,
                    "versions": versions,
                    "precision": precision
                }
            )
    return matches
    
def get_matches(date_headers: dict, resp_headers: dict, version_table: dict) -> list:
    matches = []
    for header in date_headers.keys():
        if header in resp_headers:
            date = globals()[date_headers[header]](resp_headers[header])
            matches.extend(check_date(version_table, date))
    return matches
  • 使用Pocsuite3架构编写脚本,运行结果如下:GlobalProtect门户的PAN-OS版本检测方法

全网测绘结果

  • quake搜索语法

app: "PaloAlto-GlobalProtect"

  • 测绘结果显示,全网中使用 GlobalProtect 的独立 IP 有 116898 个,涉及服务有 1854078 条GlobalProtect门户的PAN-OS版本检测方法
  • 在全球数据统计中,使用 GlobalProtect 最多的五个国家分别是美国(693523)、中国(119222)、德国(66272)、澳大利亚(64492)和印度(55982)GlobalProtect门户的PAN-OS版本检测方法
  • 在国内数据统计中,使用 GlobalProtect 最多的省份是台湾,服务数高达43831条;其次是北京,服务数为20384条;广东省、上海市和香港分别位居第3~5位,涉及的服务数量分别是:13676、13522、13493GlobalProtect门户的PAN-OS版本检测方法

参考链接

http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-202007-393
https://mp.weixin.qq.com/s/hDTbWGWTlVbrqeIM1mb0Xg
https://blog.51cto.com/u_15274949/2922234
https://new.qq.com/rain/a/20200701A0VHDM00
https://www.qianxin.com/news/detail?news_id=2732
https://nosec.org/home/detail/4902.html
https://nosec.org/home/detail/4490.html
https://endoflife.date/panos



  • 欢迎进群


  • 添加管理员微信号:quake_360

    备注:进群    邀请您加入 QUAKE交流群

原文始发于微信公众号(360Quake空间测绘):GlobalProtect门户的PAN-OS版本检测方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月22日13:56:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   GlobalProtect门户的PAN-OS版本检测方法http://cn-sec.com/archives/1462164.html

发表评论

匿名网友 填写信息